Skip to content

Commit

Permalink
Move second batch of GPS package-specific templates to AndroidX defa…
Browse files Browse the repository at this point in the history
…ult template. (#950)

Move the packages in GPS that use the following package-specific templates to this repository and switch them to using the default template:

- brotli
- chromium-cronet
- codehaus-mojo
- datatransport
- flatbuffers
- grpc
- opencensus
- perfmark
- protobuf-lite
- squareup-okhttp
- squareup-okhttp3
- squareup-picasso
- squareup-retrofit
- squareup-retrofit2
- squareup-okio
- squareup-javapoet
- tensorflow-lite
- user-messaging-platform
- zxing

One wrinkle is that AndroidX does not allow a stable package to depend on a prerelease package:

```xml
<!-- Warnings we want to error on: -->
<!-- NU5104: A stable release of a package should not have a prerelease dependency. -->
<WarningsAsErrors>$(WarningsAsErrors);NU5104</WarningsAsErrors>
```

Although we should always abide by this rule, we are bound by Google's packaging decisions and sometimes we have no choice.  The `Xamarin.TensorFlow.Lite.Support.Api` and `Xamarin.TensorFlow.Lite.Task.Vision.PlayServices.Library` packages we are moving from GPS have a prerelease dependency. (GPS repository does not enforce this rule.)

In order to keep this rule globally, but allow packages to opt out of it, add the `allowPrereleaseDependencies` artifact-level field to `config.json`:

```json
{
    "groupId": "org.tensorflow",
    "artifactId": "tensorflow-lite-task-vision-play-services",
    "version": "0.4.4",
    "nugetVersion": "0.4.4.6",
    "nugetId": "Xamarin.TensorFlow.Lite.Task.Vision.PlayServices.Library",
    "allowPrereleaseDependencies": true,
    "comments": "Depends on Xamarin.Google.Android.ODML.Image which only has a prerelease version.",
    ...
}
```

Companion PR that removes these packages from GPS: xamarin/GooglePlayServicesComponents#906
  • Loading branch information
jpobst committed Sep 5, 2024
1 parent 5b769b2 commit 5585521
Show file tree
Hide file tree
Showing 78 changed files with 6,302 additions and 116 deletions.
58 changes: 57 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,13 @@
<AndroidNamespaceReplacement Include='com.google.common.flogger' Replacement='Xamarin.Google.Flogger' />
<AndroidNamespaceReplacement Include='com.google.inject' Replacement='Xamarin.Google.Inject' />
<AndroidNamespaceReplacement Include='com.google.errorprone' Replacement='Xamarin.Google.ErrorProne' />
<AndroidNamespaceReplacement Include='com.google.protobuf' Replacement='Xamarin.Protobuf.Lite' />
<AndroidNamespaceReplacement Include='com.google.android.datatransport' Replacement='Xamarin.Google.Android.DataTransport' />
<AndroidNamespaceReplacement Include='com.google.android.finsky' Replacement='Xamarin.Google.Android.Finsky' />
<AndroidNamespaceReplacement Include='com.google.flatbuffers' Replacement='Xamarin.Google.FlatBuffers' />

<!-- Yes, this is spelled incorrectly :( -->
<AndroidNamespaceReplacement Include='com.google.android.ump' Replacement='Xamarin.Google.UserMesssagingPlatform' />

<!-- Company namespace changes -->
<AndroidNamespaceReplacement Include='androidx.' Replacement='AndroidX' />
Expand All @@ -72,14 +79,36 @@
<AndroidNamespaceReplacement Include='org.reactivestreams.' Replacement='ReactiveStreams' />
<AndroidNamespaceReplacement Include='org.intellij' Replacement='IntelliJ' />
<AndroidNamespaceReplacement Include='org.jetbrains' Replacement='JetBrains' />
<AndroidNamespaceReplacement Include='org.chromium' Replacement='AndroidX.WebKit' />
<AndroidNamespaceReplacement Include='org.chromium.net.' Replacement='Xamarin.Chromium.CroNet' />
<AndroidNamespaceReplacement Include='org.chromium.support_lib_boundary' Replacement='AndroidX.WebKit.ChromiumLibBoundary' />
<AndroidNamespaceReplacement Include='org.chromium' Replacement='Xamarin.Chromium' />
<AndroidNamespaceReplacement Include='com.xamarin' Replacement='Xamarin' />
<AndroidNamespaceReplacement Include='io.reactivex.' Replacement='ReactiveX' />
<AndroidNamespaceReplacement Include='kotlinx' Replacement='KotlinX' />
<AndroidNamespaceReplacement Include='support_lib_boundary' Replacement='ChromiumLibBoundary' />
<AndroidNamespaceReplacement Include='org.aopalliance.' Replacement='Xamarin.AopAlliance' />
<AndroidNamespaceReplacement Include='org.objectweb.' Replacement='Xamarin.ObjectWeb' />
<AndroidNamespaceReplacement Include='javax.inject' Replacement='JavaX.Inject' />
<AndroidNamespaceReplacement Include='okhttp3.' Replacement='Square.OkHttp3' />
<AndroidNamespaceReplacement Include='okio.' Replacement='Square.OkIO' />
<AndroidNamespaceReplacement Include='com.squareup.picasso.' Replacement='Square.Picasso' />
<AndroidNamespaceReplacement Include='retrofit.' Replacement='Square.Retrofit' />
<AndroidNamespaceReplacement Include='retrofit2.' Replacement='Square.Retrofit2' />
<AndroidNamespaceReplacement Include='com.squareup.javapoet.' Replacement='Square.JavaPoet' />
<AndroidNamespaceReplacement Include='com.squareup.okhttp.' Replacement='Square.OkHttp' />
<AndroidNamespaceReplacement Include='io.grpc.okhttp.' Replacement='Xamarin.Grpc.OkHttp' />
<AndroidNamespaceReplacement Include='io.grpc.protobuf.lite.' Replacement='Xamarin.Grpc.Protobuf.Lite' />
<AndroidNamespaceReplacement Include='io.grpc.util.' Replacement='Xamarin.Grpc.Core.Util' />
<AndroidNamespaceReplacement Include='io.grpc.' Replacement='Xamarin.Grpc' />
<AndroidNamespaceReplacement Include='protobuf.lite.' Replacement='Xamarin.Grpc.Protobuf.Lite' />
<AndroidNamespaceReplacement Include='io.opencensus.' Replacement='Xamarin.Io.OpenCensus' />
<AndroidNamespaceReplacement Include='io.perfmark.' Replacement='Xamarin.Io.Perfmark' />
<AndroidNamespaceReplacement Include='org.brotli.' Replacement='Xamarin.Brotli' />
<AndroidNamespaceReplacement Include='org.codehaus.' Replacement='Xamarin.CodeHaus' />
<AndroidNamespaceReplacement Include='org.tensorflow.lite.task.gms.vision.' Replacement='Xamarin.TensorFlow.Lite.Gms.Vision' />
<AndroidNamespaceReplacement Include='org.tensorflow.' Replacement='Xamarin.TensorFlow' />
<AndroidNamespaceReplacement Include='com.android.' Replacement='Xamarin.Android' />
<AndroidNamespaceReplacement Include='io.antmedia.' Replacement='Xamarin.IO.AntMedia' />

<!-- Remove some redundant words -->
<AndroidNamespaceReplacement Include='androidx.dynamicanimation.animation' Replacement='AndroidX.DynamicAnimation' />
Expand All @@ -96,6 +125,7 @@
<!-- Un-capitalization of 2-letter abbreviations -->
<AndroidNamespaceReplacement Include='tv' Replacement='Tv' />
<AndroidNamespaceReplacement Include='db' Replacement='Db' />
<AndroidNamespaceReplacement Include='qa' Replacement='Qa' />

<!-- Preferred capitalization for combined words -->
<AndroidNamespaceReplacement Include='accessibilityservice' Replacement='AccessibilityService' />
Expand Down Expand Up @@ -232,6 +262,32 @@
<AndroidNamespaceReplacement Include='appsetid' Replacement='AppSetId' />
<AndroidNamespaceReplacement Include='customaudience' Replacement='CustomAudience' />
<AndroidNamespaceReplacement Include='mediaextensions' Replacement='MediaExtensions' />
<AndroidNamespaceReplacement Include='jobscheduling' Replacement='JobScheduling' />
<AndroidNamespaceReplacement Include='consent_sdk' Replacement='ConsentSDK' />
<AndroidNamespaceReplacement Include='ump' Replacement='UserMessagingPlatform' />
<AndroidNamespaceReplacement Include='flatbuffers' Replacement='FlatBuffers' />
<AndroidNamespaceReplacement Include='tls' Replacement='TLS' />
<AndroidNamespaceReplacement Include='appengine' Replacement='AppEngine' />
<AndroidNamespaceReplacement Include='inprocess' Replacement='InProcess' />
<AndroidNamespaceReplacement Include='apihelpers' Replacement='ApiHelpers' />
<AndroidNamespaceReplacement Include='urlconnection' Replacement='UrlConnection' />
<AndroidNamespaceReplacement Include='animal_sniffer' Replacement='AnimalSnifferAnnotations' />
<AndroidNamespaceReplacement Include='gpu' Replacement='GPU' />
<AndroidNamespaceReplacement Include='tensorbuffer' Replacement='TensorBuffer' />
<AndroidNamespaceReplacement Include='bertclu' Replacement='BertClu' />
<AndroidNamespaceReplacement Include='nlclassifier' Replacement='NLClassifier' />
<AndroidNamespaceReplacement Include='zxing' Replacement='ZXing' />
<AndroidNamespaceReplacement Include='reedsolomon' Replacement='ReedSolomon' />
<AndroidNamespaceReplacement Include='datamatrix' Replacement='DataMatrix' />
<AndroidNamespaceReplacement Include='maxicode' Replacement='MaxiCode' />
<AndroidNamespaceReplacement Include='qrcode' Replacement='QRCode' />
<AndroidNamespaceReplacement Include='oned' Replacement='OneD' />
<AndroidNamespaceReplacement Include='rss' Replacement='RSS' />
<AndroidNamespaceReplacement Include='pdf417' Replacement='PDF417' />
<AndroidNamespaceReplacement Include='rtmp_client' Replacement='Rtmp.Client' />
<AndroidNamespaceReplacement Include='rxkotlin' Replacement='RxKotlin' />
<AndroidNamespaceReplacement Include='native_test' Replacement='Native_Test' />
<AndroidNamespaceReplacement Include='httpflags' Replacement='HttpFlags' />
</ItemGroup>

</Project>
1 change: 0 additions & 1 deletion build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,6 @@ private IEnumerable<(string Path, bool IsPublic)> GetXmlMetadata(string xpath, S
}

Task("libs")
.IsDependentOn("metadata-verify")
.IsDependentOn("libs-native")
.Does(() =>
{
Expand Down
Loading

0 comments on commit 5585521

Please sign in to comment.