Bug 1411686 - Pre: Fix JNI wrapper dependencies. r=maliu
When built as part of a consuming application, a library's bundle*
target is called but not its assemble* target. (When built by itself
for distribution, a library's assemble* target is called.) This
corrects the wrapper dependencies.
MozReview-Commit-ID: 9ooHMNPK2U4
--- a/mobile/android/gradle/with_gecko_binaries.gradle
+++ b/mobile/android/gradle/with_gecko_binaries.gradle
@@ -122,24 +122,23 @@ ext.configureVariantWithGeckoBinaries =
def sourceSet = productFlavor ? "${productFlavor}${buildType.capitalize()}" : buildType
android.sourceSets."${sourceSet}".assets.srcDir syncOmnijarFromDistDir.destinationDir
android.sourceSets."${sourceSet}".assets.srcDir syncAssetsFromDistDir.destinationDir
android.sourceSets."${sourceSet}".jniLibs.srcDir syncLibsFromDistDir.destinationDir
}
ext.configureVariantWithJNIWrappers = { variant, module ->
+ def jarTask
+ if (module == 'Generated') {
+ jarTask = tasks["package${variant.name.capitalize()}JarArtifact"]
+ } else {
+ jarTask = tasks["jar${variant.name.capitalize()}Classes"]
+ }
- def jarTask = tasks.findByName("jar${variant.name.capitalize()}Classes")
- if (jarTask == null) {
- jarTask = tasks.findByName("package${variant.name.capitalize()}JarArtifact")
- }
- if (jarTask == null) {
- throw new GradleException("Jar task not found: \"jar${variant.name.capitalize()}Classes\"\t\"package${variant.name.capitalize()}JarArtifact\"" )
- }
if (jarTask.outputs.files.size() != 1) {
throw new GradleException("Jar task output multiple files other than one single jar")
}
// At configuration time, the classpath of dependencies with internal_impl
// JAR files may not be correct. This manifests in
//
// 'Exception in thread "main" java.lang.NoClassDefFoundError: android/support/v4/app/ActivityCompatApi23$RequestPermissionsRequestCodeValidator'
@@ -169,10 +168,14 @@ ext.configureVariantWithJNIWrappers = {
args jarTask.outputs.files.iterator().next()
workingDir "${topobjdir}/mobile/android/base"
dependsOn jarTask
dependsOn prepareDependenciesTask
}
- variant.assemble.dependsOn wrapperTask
+ if (module == 'Generated') {
+ tasks["bundle${variant.name.capitalize()}"].dependsOn wrapperTask
+ } else {
+ tasks["assemble${variant.name.capitalize()}"].dependsOn wrapperTask
+ }
}