下面的脚本100%能用,只要你的版本和路径配置正确
环境:Eclipse Windows 7
Gradle:2.3
Android项目里面包含了多个Library
主项目配置:
settings.gradle 文件配置library库
include 'lib_01'
include 'lib_02'
project(':lib_01').projectDir = new File('D:\\pj1')
project(':lib_02').projectDir = new File('D:\\pj2')
库名称对应库的项目路径,当然如果和主项目在一起可以用相对路径
build.gradle 内容
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.2'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 18
buildToolsVersion "19.1.0"
lintOptions {
abortOnError false
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
signingConfigs {
release {
storeFile file("D:\\my.keystore")
storePassword "112233"
keyAlias "test"
keyPassword "112233"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFile 'proguard.txt'
}
}
}
dependencies {
compile files('libs/ftp4j-1.7.2.jar','libs/mymap.jar')
compile project(':lib_01')
compile project(':lib_02')
}
混淆的路径也要对.一般都是在主项目下配置proguard.txt 但文件里面不需要再添加 --libraryjars 这个东西,否则会报你引用了jar 2次 twice
compile project对应编译的是上面的2个library 库
2个依赖库也需要一个build.gradle,每个依赖library项目下 需要一个build.gradle。
内容:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.2'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 18
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
jniLibs.srcDirs = ['libs']
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
项目打包的时候 先是找到依赖库进行处理生成依赖的 aar ,APK出来的文件都在build/output目录里面. jniLibs.srcDirs 是用来处理so模块文件的。
注意: 默认的情况下 子项目中 AndroidManifest.xml 文件中不要有 Activity. 如果有请去掉(这个地方没有去研究 怎样避免多个manifest的问题)
依赖文件中应该是空空的。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.mobile.package01" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/app_icon"
>
</application>
</manifest>
在主项目中
执行 gradle tasks
执行 gradle build
Gradle虽然方便,但Gradle有版本不兼容问题,而且需要下载相关库和jar文件,只需要不断尝试,去 http://stackoverflow.com/ 上面一般都能知道找到答案。