下面的脚本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/ 上面一般都能知道找到答案。