Gradle 常用配置
来源:互联网 发布:nginx修改默认根目录 编辑:程序博客网 时间:2024/06/16 21:07
Gradle 常用配置
- Gradle 常用配置
- 签名
- 多渠道打包
- 自定义APK名称
- 导入包
- 导入aarjarmodle
- 导入 so
- 完整buildgradle
签名
当程序中使用了第三方的功能,比如分享、地图时,要求程序必须是已签名的
在Gradle中配置签名后,可以使我们的Debug也带上签名,而不需要使用Build/Generate Signer Apk去编译带签名的APK
- build.gradle
// 在 Android {} 节点下增加signingConfigs { signConfig { storeFile file ('../key.jks') storePassword '123456' keyAlias 'xdj' keyPassword '123456' }}buildTypes { release { signingConfig signingConfigs.signConfig } debug { signingConfig signingConfigs.signConfig // 配置debug包的签名 }}
- 获得签名文件信息
// 终端命令keytool -list -v -keystore ./key.jks
输出结果
Tips
还可通过在AndroidStudio自带终端中运行./gradlew signingReport
命令获取
- 获得APK签名信息
// 终端命令jarsigner -verify -certs -verbose ./app/build/outputs/apk/app-googleplay-debug.apk
输出结果
Tips:
${keyAlias}为CN=Android Debug 说明APK未签名
多渠道打包
以友盟为例
- build.gradle
defaultConfig { manifestPlaceHolders=[UMENG_CHANNEL_VALUE:'Umeng'] // 默认渠道为Umeng}productFlavors { googleplay { manifestPlaceHolders=[UMENG_CANNEL_VALUE:'Google Play'] } wandoujia{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Wandoujia"]// minSdkVersion 19// applicationId 'com.rx.demo'// targetSdkVersion 22// versionCode 360// versionName '1.1.1'// signingConfig signingConfig.wandoujiaConfig } xiaomi{ } tencent{ }}
- manifest
<!-- 替换为您应用的推广渠道名称,channel id自定义。--><meta-data android:name="UMENG_CHANNEL" android:value="${UMEMG_CHANNEL_VALUE}"/>
- 编译命令
./gradlew assemble
: 编译所有渠道的Debug和Release./gradlew assembleWandoujia
: 编译豌豆荚的Debug和Release./gradlew assembleWandoujiaDebug
: 编译豌豆荚的Debug./gradlew build
:
Tips
貌似Android Studio
上有多渠道打包的插件,但最终还是需要使用命令行
自定义APK名称
- build.gradle
// 根节点下增加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、modle
dependencies { 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.gradle
// 在 Android{} 节点下增加sourceSets { main {// jniLibs.srcDirs=['./libs'] jniLibs.srcDirs=['./libs/jniLibs'] }}
完整build.gradle
apply plugin: 'com.android.application'def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}android { compileSdkVersion 22 buildToolsVersion "23.0.1" signingConfigs { signConfig { storeFile file ("../key.jks") storePassword "123456" keyAlias "xdj" keyPassword "123456" } } defaultConfig { applicationId "com.xdj.rxjavademo" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0.0" manifestPlaceholders=[UMENG_CHANNEL_VALUE: 'Umeng'] } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.signConfig zipAlignEnabled true// shrinkResources true // 清除无用的resource } debug { buildConfigField "boolean", "LOG_DEBUG", "false" // 设置是否打印LOG,貌似没效果 signingConfig signingConfigs.signConfig } 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) { // 不对Debug进行重命名 // 输出apk名称为app-googleplay-release-2015-12-16-v1.0-build1 def fileName = outputFile.name.replace(".apk", "-${releaseTime()}" + "-v${defaultConfig.versionName}-build${defaultConfig.versionCode}" + ".apk") output.outputFile = new File(outputFile.parent, fileName) } } } } productFlavors { googleplay { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Google Play"] } xiaomi {// manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Xiao Mi"] } _360 {// manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]// minSdkVersion 19// applicationId 'com.rx.demo'// targetSdkVersion 22// versionCode 360// versionName '1.1.1'// signingConfig signingConfig._360Config } tencent {// manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Tencent"] } baidu {// manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Baidu"] } } sourceSets { main { jniLibs.srcDirs=['./libs/jniLibs'] } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:22.2.1' compile 'com.android.support:design:22.2.1' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' // compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') { // exclude module: 'support-v4' // } compile 'com.android.support:recyclerview-v7:22.2.1'}
0 0
- 常用库gradle配置
- Gradle 常用配置
- Gradle常用配置
- Gradle常用配置
- Gradle常用配置
- Android studio Gradle 常用配置
- build.gradle的常用配置
- Gradle基本知识点与常用配置
- Gradle基本知识点与常用配置
- Android开发常用的gradle配置总结
- Android常用的Gradle配置和加速编译
- Android常用的Gradle配置和加速编译
- Gradle配置
- gradle 配置
- gradle配置
- Gradle配置
- gradle配置
- Gradle配置
- 欢迎使用CSDN-markdown编辑器
- 【杭电】[2034]人见人爱A-B
- C#如何彻底关闭应用程序及附属线程
- 仿网易新闻APP(五)——无限横向滑动菜单(自定义HorizontalScrollView+ViewPager)
- oc字符串输入
- Gradle 常用配置
- vim 常用设置
- struct结构在声明时对其中的某一项进行初始化
- 视频图像传输与显示(4)——数字电视信号标准ITU-R BT.601和ITU-R BT.656简介
- 自定义LinkedList集合
- python核心编程-继承
- LeetCode 021
- C#基础之——C#总观
- PHP GD库常用功能封装