Gradle实验性android库模块依赖项未执行

时间:2016-08-10 09:52:00

标签: android android-studio android-ndk android-gradle gradle-experimental

我正在使用gradle实验插件0.7.3。 在我的项目中,我有几个本机模块,这些模块静态链接到我的android库模块,其中共享库是从它们构建的,并在库java代码中使用。 然后将库模块用作应用程序的依赖项。 依赖关系添加如下:

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

当我用android studio运行应用程序时,它失败了,因为找不到库的方法。我在gradle控制台中检查它,它只构建应用程序本身而不构建库,因为它只执行':app-module:assembleArm7Debug'。

我想这是实验插件的一个错误,因为它与非实验版本一起工作正常。 我已经尝试了一种解决方法,并将以下内容添加到app build.gradle中:

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

但是这只会导致一个gradle错误,说明该应用程序没有属性assembleArm7Debug,即使我可以使用./gradlew调用它。 有没有其他可能的方法来使这项工作。

编辑: 库模块如下所示:

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'
}

编辑: 问题似乎是由应用程序模块无法正确解决的产品风格引起的。我目前的解决方法是删除此模块的产品风格,只需为我的所有架构添加ndk.abiFilters。它以更多的编译时间为代价解决了依赖性问题。

0 个答案:

没有答案