Mat*_*toe 10 android build gradle android-gradle-plugin gradle-experimental
我在以下项目结构中使用Gradle Android Experimental插件:
Root Project
|-- app
|-- my-library
Run Code Online (Sandbox Code Playgroud)
settings.gradle
include ':my-library', ':app'
Run Code Online (Sandbox Code Playgroud)
的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.2.0'
}
}
allprojects {
repositories {
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/的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')
}
Run Code Online (Sandbox Code Playgroud)
我的图书馆/的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")
}
}
Run Code Online (Sandbox Code Playgroud)
图书馆项目建设完美.在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
}
Run Code Online (Sandbox Code Playgroud)
小智 -3
面临同样的问题。我通过将应用程序子模块重命名为其他名称来解决这个问题。所以项目结构将是
根项目 |-- 某个应用程序名称 |-- 我的图书馆
设置.gradle:
包括 ':my-library', ':someappname'
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |