1. 配置签名

android {//...signingConfigs {debug {keyAlias 'hyrelease'keyPassword 'password'storeFile file('HyTech.jks')storePassword "password"}release {keyAlias 'hyrelease'keyPassword 'password'storeFile file('HyTech.jks')storePassword "password"}}buildTypes {debug {signingConfig signingConfigs.debugbuildConfigField "boolean", "LOG_DEBUG", "true"minifyEnabled falsezipAlignEnabled trueshrinkResources falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}release {signingConfig signingConfigs.releasebuildConfigField "boolean", "LOG_DEBUG", "false"minifyEnabled truezipAlignEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}//...
}
复制代码

2. 使用JDK1.8

android {//...compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}//...
}
复制代码

3. 配置实用aar库

普通的在App模块中的aar,如果在子模块中的aar需要写成下面的写法

android {//...repositories {flatDir {dirs 'libs'dirs project(':QrCode').file('libs')}}//...
}
复制代码

4. productFlavor配置

android {//...//声明维度:产品flavorDimensions "ProductFeature"productFlavors {RobotA {//机器人Adimension "ProductFeature"resValue "string", "app_name", "机器人A"applicationId 'com.xxx.a'versionCode = 9versionName = '1.3.1'manifestPlaceholders = [updateApkPathFlag: applicationId,app_icon_x   : "@mipmap/ic_launcher"]buildConfigField "String", "channel", "\"RobotA\""}RobotB {//机器人Bdimension "ProductFeature"resValue "string", "app_name", "机器人B"applicationId 'com.xxx.b'versionCode = 4versionName = '1.0.3'manifestPlaceholders = [updateApkPathFlag: applicationId,app_icon_x   : "@mipmap/ic_launcher_common"]buildConfigField "String", "channel", "\"RobotB\""}}//...
}
复制代码
  • flavorDimensions 中声明产品的维度,只有一个:ProductFeature
  • RobotA,RobotB 是 ProductFeature 维度的取值
  • RobotA 下,就是一个产品,这里定义成是一个不同的APK
    • dimension:所属的维度
    • resValue,新建一个变量,这里代替的是app的名称,然后就可以直接通过 R.string.app_name 访问到,或者是:@string/app_name 访问到。
    • applicationId,声明特有的包名
    • versionCode,声明特有的版本代号
    • versionName,声明特有的版本名称
    • manifestPlaceholders,设置manifest中的字段,例如这里,app_icon_x : "@mipmap/ic_launcher" 设置的是不同的图标,那么对应的 manifest 中就需要这样写:android:icon="${app_icon_x}",这样才能对应起来。同理,updateApkPathFlag: applicationId 也是一样。
    • buildConfigField,新建变量,会直接编译到 BuildConfig 中,通过 BuildConfig.channel 访问到

5. 配置语言包

android {//...defaultConfig {//...resConfigs "zh", "en"}//...
}
复制代码

6. 配置So库

android {//...defaultConfig {//...ndk {abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'}}//...
}
复制代码

7. 修改编译的APK名称

    buildTypes {debug {signingConfig signingConfigs.debugbuildConfigField "boolean", "LOG_DEBUG", "true"minifyEnabled falsezipAlignEnabled falseshrinkResources falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'buildConfigField "String", "channel", "\"test\""}release {signingConfig signingConfigs.releasebuildConfigField "boolean", "LOG_DEBUG", "false"minifyEnabled truezipAlignEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'applicationVariants.all { variant ->variant.outputs.all {def buildTypeName = ''if (buildType.name.contains("debug"))buildTypeName = 'debug-'outputFileName = "${variant.productFlavors[0].name}-${buildTypeName}${xVersionName}-${xVersionCode}.apk"}}}}
复制代码

这里,还在 debug 模式中,把字符串 channel 改为了 test。

8. Java代码,Manifest,build.gradle中统一一个变量

Java:

/*IDs*/
String Wx_Pay_App_Id = BuildConfig.WX_Pay_AppId;
复制代码

Manifest:

<!-- 微信支付 -->
<activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="${WX_Pay_AppId}" /></intent-filter>
</activity>
复制代码

build.gradle:

def WX_Pay_AppId = "xxx"
android {//...defaultConfig {//...manifestPlaceholders = [//微信支付APPIDWX_Pay_AppId : WX_Pay_AppId,]}//...buildTypes {debug {//...buildConfigField "String", "WX_Pay_AppId", WX_Pay_AppId//...}release {//...buildConfigField "String", "WX_Pay_AppId", WX_Pay_AppId//...}}//...
}
复制代码

转载于:https://juejin.im/post/5c9c75e05188251beb1f79c5

【CodeSnippet】Gradle相关推荐

  1. 【Code-Snippet】TextView

    1. TextView文字过长,显示省略号 [参考] 必须要同时设置XML和JAVA,而且,java中设置文字必须是在最后. android:ellipsize="start|end|mid ...

  2. android jar 电子书下载,【Android】Gradle project sync jar包长时间下载不下来的解决办法...

    当我们新建一个Android项目,或者在项目中依赖使用一个新的第三方库时,Android Studio经常会从jcenter或者maven仓库下载jar包,但是我们的网络环境不一定一直那么的顺畅,当网 ...

  3. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )

    文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...

  4. 【转载】Gradle学习 第十一章:使用Gradle命令行

    转载地址:http://ask.android-studio.org/?/article/94 This chapter introduces the basics of the Gradle com ...

  5. 【转载】Gradle学习 第一章:引言

    转载地址:http://ask.android-studio.org/?/article/7 We would like to introduce Gradle to you, a build sys ...

  6. Gradle【有与无】【运行Gradle构建】【G8_2】Gradle Enterprise Gradle插件用户手册

    目录 Gradle Enterprise Gradle插件用户手册 1.设定 1.1.应用插件 1.1.1.Gradle 6.x及更高版本 1.1.2.Gradle 5.x 1.2.连接到Gradle ...

  7. 【Code-Snippet】ProgressBar

    概述 progressBar,进度条,可以设置自定义的样式,其派生出很多控件,如SeekBar,RatingBar,还有ProgressDialog. 1. 基本用法 最常用的用法,就是直接在XML布 ...

  8. 【转载】Gradle命令行黑魔法

    2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/huang0925 http://www.cnblogs.com/huang09 ...

  9. 【android】gradle的applicationId的思考,历史遗留问题,千万要在项目构建前就确定好id名,避免后续的迭代导致问题

    背景 由于历史原因 这个applicationId被改成大写的东西,一开始看真的好不习惯!!! 毕竟一开始都是小写的,这也是基本操作.历史遗留问题!! 不更改的原因 看到这么恶心的id,我想把它进行修 ...

最新文章

  1. day44前端开发1之html基础
  2. 编译linux内核报错‘make menuconfig‘ requires the ncurses libraries
  3. C语言标准数学函数库math.h之常用函数介绍
  4. 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法
  5. 第九十八期:TIOBE11月榜单:C、Swift、Go、D与Rust起起伏伏
  6. LeetCode Weekly Contest 142
  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动...
  8. 获取一个目录下的所有文件
  9. vsoce-video
  10. 学习笔记(04):2020软考软件设计师--基础知识实战培训视频-数据结构基础--树和二叉树...
  11. ps钢笔工具的一些快捷键操作(小白请进)
  12. windows11 任务栏 wifi、音量、电源还有通知无法左击弹出内容框
  13. Inductive Matrix Completion Based on Graph Neural Networks
  14. 统计思维(实例5)——变量之间的关系
  15. Jarvis-拍立淘里面的深度学习引擎
  16. 0pyqt获取textEdit控件的文本
  17. java向MySQL插入当前时间的几种方式
  18. 将HTML的文件打包成为App,编程工具Hbuilder
  19. 微信小程序登陆凭证校验出现{errcode:40029,errmsg:invalid code, hints: [ req_id: weh8ka0297hc58 ]}
  20. [转]信息安全相关理论题(三)

热门文章

  1. DNS服务器配置之前传------基础知识普及
  2. The Future of Compass ElasticSearch
  3. 提升SQL Server速度 整理索引碎片
  4. Hibernate 马上入门(二)
  5. symbian使用活动对象时返回-2147483647错误值的解决办法
  6. Java虚拟机性能监测工具Visual VM与OQL对象查询语言
  7. 两百行业专家聚首 详解IEC新标准
  8. cv::createTrackbar cv::threshold
  9. 《Spring Security3》第四章第一部分翻译下(自定义的UserDetailsServic
  10. FLEX4 在组件中自定义ToolTip样式