[英]how to add test dependency with android gradle plugin experimental 0.1.0
[英]Gradle (android experimental plugin) ignores a project dependency
我在以下項目結構中使用Gradle Android Experimental插件:
Root Project
|-- app
|-- my-library
settings.gradle
include ':my-library', ':app'
的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.2.0'
}
}
allprojects {
repositories {
jcenter()
}
}
應用程序/的build.gradle
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.0"
defaultConfig.with {
applicationId = "a.bundle.id"
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile project(':my-library')
}
我的圖書館/的build.gradle
apply plugin: 'com.android.model.library'
model {
android {
compileSdkVersion = 'android-23'
buildToolsVersion = '23.0.1'
defaultConfig.with {
minSdkVersion.apiLevel = 15
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.txt')
}
}
android.ndk {
moduleName = "xxx"
CFlags += "-I" + "${project.buildDir}".toString() + "/../src/main/jni/libabecs/include"
CFlags += "-std=gnu99"
}
android.sources {
main {
jni {
source {
srcDir 'src/main/jni/libxxx/src'
}
}
}
}
android.productFlavors {
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("arm8") {
ndk.abiFilters += "arm64-v8a"
}
create("x86") {
ndk.abiFilters += "x86"
}
create("x86-64") {
ndk.abiFilters += "x86_64"
}
create("mips") {
ndk.abiFilters += "mips"
}
create("mips-64") {
ndk.abiFilters += "mips64"
}
create("all")
}
}
圖書館項目建設完美。 在Android Studio中,它不會顯示任何錯誤。 但是,當嘗試使用Gradle構建此項目時,它將僅嘗試構建app
項目,並且實際上將忽略my-library
依賴項,從而使類未找到錯誤。
怎么解決這個?
顯然,這是一個未在構建插件中實現的錯誤/功能。
我只找到了一個骯臟的解決方法來直接鏈接生成的aar。
build.gradle(someappname)
repositories {
flatDir {
dirs '../my-library/build/outputs/aar'
}
}
dependencies {
compile project(':my-library')
compile(name:'my-library-{flavour}', ext:'aar')
//the rest
}
我遇到了完全相同的問題,最后發現我的庫項目中的ndk源路徑是錯誤的,我必須添加:
dependencies {
project ":myHybridLib"
}
在主項目的android.sources.main.jni
中。
在糾正這些錯誤后,一切都編譯得很好。
將my_library/build.gradle
更改為以下內容:
apply plugin: 'com.android.model.library'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
defaultConfig.with {
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
}
}
android.ndk {
moduleName = "FlatBuffersParser"
cppFlags.addAll(['-std=c++11', '-fexceptions', '-Wall', '-Wno-literal-suffix'])
cppFlags.add("-I${file("src/main/jni/flatbufferslib")}".toString())
ldLibs.addAll(["android", "log"])
stl = "gnustl_shared"
}
}
有關結構的更多信息,請參閱github中的這個項目,它在兩個android模塊中使用實驗性的v0.4.0:
面對同樣的問題。 我通過將app子模塊重命名為其他東西來解決它。 所以項目結構將是
Root Project |-- someappname |-- my-library
settings.gradle :
include ':my-library', ':someappname'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.