fladle icon indicating copy to clipboard operation
fladle copied to clipboard

Migrate to the Android Gradle Plugin's new variant APIs

Open jschear opened this issue 4 years ago • 4 comments

AGP 4+ contains new APIs for accessing build variants (and the APKs produced for each of them), and the existing APIs have been deprecated.

The main differences appear to be:

  • com.android.build.gradle.api.TestVariant has been replaced by com.android.build.api.variant.AndroidTest.
  • Instead of using com.android.build.gradle.AppExtension and com.android.build.gradle.TestedExtension to access build variants, one needs to use com.android.build.api.variant.ApplicationAndroidComponentsExtension to access com.android.build.api.variant.ApplicationVariant, which has a androidTest: AndroidTest? property for the corresponding instrumentation test variant. (And com.android.build.api.variant.LibraryAndroidComponentsExtension to access com.android.build.api.variant.LibraryVariant.)
  • ApplicationVariant, LibraryVariant, and AndroidTest expose their outputs as com.android.build.api.variant.VariantOutputs, but there's no longer a way to get the path to each APK output via that API. Instead, one has to use the com.android.build.api.artifact.Artifacts API to access a DirectoryProperty for the folder the APKs are placed in, and use BuiltArtifactsLoader to access the outputs within a task action.
    • There's an example here: https://github.com/android/gradle-recipes/blob/agp-7.0/Kotlin/getApksTest/app/build.gradle.kts

I've taken a stab at the update here, but the BuiltArtifactsLoader change is a bit tricky: https://github.com/runningcode/fladle/compare/master...jschear:js/agp_7

jschear avatar Sep 03 '21 16:09 jschear

Thanks for filing. This is a good idea. 👍 I'll try to take a look at your solution soon.

runningcode avatar Sep 06 '21 09:09 runningcode

👋🏾 @runningcode Curious if there is an ETA on this migration? If you are super swamped @jschear and I might look into making this one happen. Let us know whenever you get a chance 😃

jstewart5000 avatar Oct 08 '21 18:10 jstewart5000

Hey, sorry there's no ETA on this. Sorry I haven't got a chance to look at it. October is a busy month for me but perhaps later I will be able to take a look at it. Feel free to contribute or pick up the PR.

runningcode avatar Oct 10 '21 14:10 runningcode

Sounds good -- thanks for the update. We've been looking at making some other changes (in short: our app uses ABI splits, which fladle/fulladle doesn't handle right now), and were having trouble deciding between implementing them using the old AGP APIs, or upgrading to the new APIs first.

jschear avatar Oct 14 '21 17:10 jschear