Gradle 常用配置
[TOC]
签名
当程序中使用了第三方的功能,比如分享、地图时,要求程序必须是已签名的
在Gradle中配置签名后,可以使我们的Debug也带上签名,而不需要使用Build/Generate Signer Apk去编译带签名的APK
- build.gradle
1 | // 在 Android {} 节点下增加 |
- 获得签名文件信息
1 | // 终端命令 |
输出结果
Tips
还可通过在AndroidStudio自带终端中运行./gradlew signingReport
命令获取
- 获得APK签名信息
1 | // 终端命令 |
输出结果
Tips:
${keyAlias}为CN=Android Debug 说明APK未签名
多渠道打包
以友盟为例
- build.gradle
1 | defaultConfig { |
- manifest
1 | <!-- 替换为您应用的推广渠道名称,channel id自定义。--> |
编译命令
./gradlew assemble
: 编译所有渠道的Debug和Release./gradlew assembleWandoujia
: 编译豌豆荚的Debug和Release./gradlew assembleWandoujiaDebug
: 编译豌豆荚的Debug./gradlew build
:Tips
貌似Android Studio
上有多渠道打包的插件,但最终还是需要使用命令行
###自定义APK名称build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21// 根节点下增加
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
// Android {} 节点下增加
buildTypes {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
// && outputFile.name.indexOf('debug') == -1
if (outputFile != null && outputFile.name.endsWith('.apk')
&& outputFile.name.indexOf('debug') == -1) {
// 输出apk名称为app-googleplay-release-v1.0-build1-2015-12-16
def fileName = outputFile.name.replace(".apk", "-v${defaultConfig.versionName}-build${defaultConfig.versionCode}-" +
"${releaseTime()}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}##导入包
###导入aar、jar、modle1
2
3
4
5
6
7
8
9
10dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) // 导入libs文件夹中所有的jar包
compile 'group:name:version'
compile 'group:name:1.1.+'
compile(group:name:version) {
exclude module: 'support-v4' // 发生冲突时,排除v4
}
compile(name:'xxx', ext:'aar') // aar包是用来替换jar的文件类型
compile project(:modle)
}Tips
+
表示最新的版本号,曾经遇到过在Windows下导入包是输入的时准确的版本号1.0.0
没有问题,到了Mac
上的就提示找不到包,后来改成1.0.+
就好了
###导入 *.so
- Android Studio 默认路径:
Project
视图模式下./app/src/main/jniLibs
这是我目前使用的方法,直接把so包放入文件夹即可,不需要其他操作 - 自定义路径
在Eclipse中的习惯是讲so包放入libs文件夹中,这在Android Studio中也可以通过配置Gradle实现
build.gradle1
2
3
4
5
6
7// 在 Android{} 节点下增加
sourceSets {
main {
// jniLibs.srcDirs=['./libs']
jniLibs.srcDirs=['./libs/jniLibs']
}
}
其他配置
- 下载源码及文档
1 | idea { |
完整build.gradle
1 | apply plugin: 'com.android.application' |