我想构建一个包含其他库的android库。我有两个这样的工作区:
/workspace1
/libA
/myLib
/workspace2
/myApp
android库myLib依赖于libA。
android应用程序myApp依赖于myLib(并使用libA中的类)。
我想为myLib生成AAR到我的本地maven存储库(没关系)。但是生成的AAR不包含来自libA的类和资源。
请参阅workspace1:
下的build.gradle// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
def groupVal = "com.mycompany.android"
def versionVal = "0.1-SNAPSHOT"
def compileSdkVersionVal = 19
def buildToolsVersionVal = "19.0.3"
def minSdkVersionVal = 10
def targetSdkVersionVal = 19
allprojects {
group = groupVal
version = versionVal
repositories {
mavenCentral()
mavenLocal()
}
}
project(':libA') {
apply plugin: 'android-library'
android {
compileSdkVersion compileSdkVersionVal
buildToolsVersion buildToolsVersionVal
defaultConfig {
minSdkVersion minSdkVersionVal
targetSdkVersion targetSdkVersionVal
versionCode 1
versionName versionVal
}
lintOptions {
abortOnError false
}
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
}
}
project(':myLib') {
apply plugin: 'android-library'
apply plugin: 'android-maven'
android {
compileSdkVersion compileSdkVersionVal
buildToolsVersion buildToolsVersionVal
defaultConfig {
minSdkVersion minSdkVersionVal
targetSdkVersion targetSdkVersionVal
versionCode 1
versionName versionVal
}
lintOptions {
abortOnError false
}
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile project(':libA') {
export = true
}
}
}
你有什么建议吗?
非常感谢,
利奥
答案 0 :(得分:0)
您应该在myLib项目中依赖libA.jar而不是libA.aar。然后,假设您正在通过myApp / pom.xml构建apk,您应该依赖于该pom文件中的libA.aar。
答案 1 :(得分:-1)
如果你希望myLib包含它的依赖关系的类和资源,你需要创建一个所谓的“胖子”'从中。这意味着所有(或选定的)依赖项将与代码本身一起打包到单个存档中。
请注意,通过这种方式,库的使用者将无法动态调整依赖关系版本,因为他们将无法使用您打包到库中的内容。