Android使用gradle批量打包

最近朋友推荐gradle,发现确实是个不错的打包工具,决定用它做项目管理,当然最主要的还是用到它的批量打包功能。
零散的摸索了4,5天走了不少弯路,主要是gradle自身版本对应不同配置,新版本资料实在太少,走过来能跑通真的是要泪奔了,特记录下,大家少走弯路。
使用的版本:[quote]
gradle-1.11
jdk7.0
eclipse Juno
[/quote]

项目结构: [quote]
-game
---module1
---module2[/quote]


game下主要有三个文件
1. local.properties

sdk.dir=E:\\adt-bundle-windows-x86_64-20130917\\sdk


2. settings.gradle

include ':module1'
include ':module2'
//指定子模块module1和module2的相对路径
project(':module1').projectDir = new File(settingsDir, '../module1Path')
project(':module2').projectDir = new File(settingsDir, '../module2Path')


3. build.gradle

buildscript
{
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}

apply plugin: 'android'

dependencies {
compile project(':module1')
compile project(':module2')
}

android {
compileSdkVersion 19
buildToolsVersion "19.0.3"

//签名
signingConfigs {
myConfig {
storeFile file("xxx") //签名文件
storePassword "xxxx"
keyAlias "xxxx"
keyPassword "xxxxx" //签名密码
}
}

buildTypes{
release {
signingConfig signingConfigs.myConfig

//代码混淆--集成了Proguard,配置文件proguard.cfg网上有很多参考,我就不贴了
//注:我把某个jar包混淆了导致程序一直闪退
//开始以为是so文件加载失败,这个问题找了一天才找到 泪奔...
runProguard true
proguardFile 'proguard.cfg'
}
}

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

//批量打包--指定配置文件
//不同的渠道商对应的各自AndroidManifest
//AndroidManifest的application标签只用配置渠道号的值
//其他公共配置都放在公共的AndroidManifest.xml中
selfTest {
manifest.srcFile 'product/AndroidManifest_selfTest.xml'
}
MMstore {
manifest.srcFile 'product/AndroidManifest_MMstore.xml'
}
instrumentTest.setRoot('tests')
}

//批量打包--声明
productFlavors {
selfTest {
//这里可以配置不同的包名
}
MMstore {
}
}

lintOptions {

abortOnError false

// if true, only report errors
ignoreWarnings true
}

//加载so文件
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: '**/*.so' ) into 'build/native-libs'
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = new HashSet()
pkgTask.jniFolders.add(new File(projectDir, 'build/native-libs'))
}
}


子Module的build.gradle很简单,我就贴一个出来就好:
   
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9+'
}
}
apply plugin: 'android-library'

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}

android {
compileSdkVersion 19
buildToolsVersion "19.0.3"

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

instrumentTest.setRoot('tests')
}

lintOptions {
abortOnError false
// if true, only report errors
ignoreWarnings true
}
}



打包之前先[quote]gradle check[/quote]检查一遍,有问题就在build/link-result.html查看异常详情,里面的信息很详细。
check没有问题就直接打包,执行命令 [quote]gradle clean build[/quote] 几分钟后apk包就打好放在build/apk目录下面了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值