Gradle experimental android library module dependency not executed

元气小坏坏 提交于 2019-12-12 17:44:38

问题


I am using the gradle experimental plugin 0.7.3. In my project i have several native modules which are statically linked to my android library module where a shared library is built from them and used in the library java code. The library module is then used as a dependency for an app. The dependency is added like this:

dependencies {
    compile project(path: ':library-module')
}

When i run the app with android studio it fails because the methods of the library are not found. I checked it in the gradle console and it only builds the app itself without building the library as it only executes ':app-module:assembleArm7Debug'.

I guess this is a bug of the experimental plugin since it worked fine with the non-experimental version. I already tried a workaround and added the following to the app build.gradle:

project.afterEvaluate{
    assembleArm7Debug.dependsOn(':library-module:assembleArm7Debug')
}

but this only resulted in a gradle error saying the app does not have the property assembleArm7Debug even though i can call it with ./gradlew. Are there any other possible ways to make this work.

EDIT: The library module looks like this:

apply plugin: 'com.android.model.library'

model {
    android {
        compileSdkVersion 24
        buildToolsVersion "24.0.0"

        defaultConfig {
            minSdkVersion.apiLevel 19
            targetSdkVersion.apiLevel 24
            versionCode 1
            versionName "1.0.0"
        }

        ndk {
            moduleName = 'android_lib'
            toolchain = 'gcc'
            stl "gnustl_static"
            platformVersion "android-19"

            ldLibs.addAll(['android_libs'])

            cppFlags.addAll([
                    'more_flags',

                    "-I" + "includes",
            ])
        }

        buildTypes {
            release {
                minifyEnabled false
            }
            debug {
                ndk {
                    debuggable true
                }
                minifyEnabled false
            }
        }

        abis {
            create("armeabi-v7a") {
                CFlags.addAll([
                        'some_flags'
                ])
            }
            create("arm64-v8a") {
                CFlags.addAll([
                        'some_flags'
                ])
            }
            create("x86") {
            }
        }

        sources {
            main {
                java {
                    source {
                        srcDir "/src/main/java"
                    }
                }
                res {
                    source {
                        srcDir "res"
                    }
                }
                assets {
                    source {
                        srcDir "assets"
                    }
                }
                jni {
                    source {
                        srcDirs += [
                                "src_dirs"
                                ]
                    }

                    dependencies {
                        project ":native-lib" linkage "static" buildType "debug"

                        library "prebuilt_lib" linkage "static"
                    }

                    exportedHeaders {
                        srcDirs = [
                                "src_dirs"
                        ]
                    }
                }

            }
        }

        productFlavors {
            create("arm7") {
                ndk.abiFilters.add("armeabi-v7a")
            }
            create("arm8") {
                ndk.abiFilters.add("arm64-v8a")
            }
            create("x86") {
                ndk.abiFilters.add("x86")
            }
        }
    }

    repositories {
        libs(PrebuiltLibraries) {
            prebuilt_lib {
                binaries.withType(StaticLibraryBinary) {
                    staticLibraryFile = file("/lib/${targetPlatform.getName()}/liblib.a")
                }
            }
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-annotations:24.1.1'
}

Edit: The issue seems to be caused by the product flavors which could not be resolved by the app module correctly. My current workaround for this is to remove the product flavors for this module and just add ndk.abiFilters for all my architectures. It resolves the dependency issue at the cost of more compile time.

来源:https://stackoverflow.com/questions/38869924/gradle-experimental-android-library-module-dependency-not-executed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!