然后针对module中的build.gradle统一使用这边的版本号:
当然注意将‘ ’引号换成“ ”,$才能正常使用。
三种写法,可以用最精简的方式写。
优势:项目可能有多个library工程,而且这些版本号会随着时间,新Android系统的发布而升级修改,为了省去一个个目录去修改版本号,在主目录下可以快捷而且不遗漏的更新所有版本号。而在组件化中方便切换项目的module类型等
缺陷:
在Android studio3.2.1中,如果你再创建cotlin的module,因为工具默认写法ext.kotlin_version = '1.2.71',就会导致拨错
强迫症不严重的就可以当创建module(cotlin)报错再过来修改为正常值,java工程无影响。
先看配置属性:
这个方案就可以解决那些强迫症晚期的心头刺了(无意中自己也中枪了(*^▽^*)),在gradle.roperties中所有储存的都为String类型,这也就导致需要常用的类型转化。
这样就能方便快捷的整理版本号了。是不是少了很多烦恼。
1.热修复扩展,直接在properties.gradle中设置一个TINKER_ENABLE来控制是否添加热修复插件功能
2.插件化扩展,控制依赖的lib库模块是否可以独立运行,控制是一整个apk运行或者是组件单独就可以运行。
1.秘钥的高端操作,方便编译
2.常用操作解析:
3.gradle的方法封装外放操作,简化gradle中的内容。
4.依赖三方库support:appcompat-v7红线提示
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes
在Android 3.0后增加了新功能,
api("com.alibaba:arouter-api:1.4.1") {
exclude group: 'com.android.support' //处理appcompat-v7携带版本不同导致的报错
}
exclude group将三方库中的冲突support所有库都排除
指定module:
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support', module: 'support-v13'
exclude group: 'com.android.support', module: 'support-vector-drawable'
}
补充建议:
另外还有一个建议,在我们自己创建library给别人使用时,如果需要依赖com.android.support的话,建议用provided的方式依赖(android studio3.0中更改为compileOnly),这样只会在编译时有效,不会参与打包。以免给使用者带来不便。
例:
provided 'com.android.support:appcompat-v7:26.1.0'
provided 'com.android.support:design:26.1.0'
provided 'com.android.support:support-vector-drawable:26.1.0'
5.集合命名式封装依赖库
统一在project的根目录配置ext:
记录:生成名字特定的包.apk,如xxx+版本_日期.apk --> test1.1.0_20180108.apk,test1.1.0_20180108_debug.apk
目前我使用的两种:
1.
//生成debug包和release包名字定义,release包:名称+版本+日期.apk,debug包:名称+版本+日期+debug.apk
applicationVariants.all{ variant->
variant.outputs.each { output->
def oldFile = output.outputFile
if(variant.buildType.name.equals('release')){
def releaseApkName = 'test' + defaultConfig.versionName + '-'+buildTime()+'.apk'
output.outputFile = new File(oldFile.parent, releaseApkName)
}else {
def debugApkName = 'test' + defaultConfig.versionName + '-'+buildTime()+'-debug.apk'
output.outputFile = new File(oldFile.parent, debugApkName)
}
}
}
def buildTime() {
def df = new SimpleDateFormat("yyyyMMdd")
df.setTimeZone(TimeZone.getDefault())
return df.format(new Date())
}
2.
//第二种方法 -- 生成debug包和release包名字定义,release包:名称+版本+日期.apk,debug包:名称+版本+日期+debug.apk
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if (variant.buildType.name.equals('release')) {
def fileName = outputFile.name.replace("app", "test" + "_v${variant.versionName}_${buildTime()}")
outputFileName = fileName
} else {
def fileName = outputFile.name.replace("app", "test_debug" + "_v${variant.versionName}_${buildTime()}")
outputFileName = fileName
}
}
}
}
就先写到这里了,对看官有用请点赞,谢谢支持^_^
若想了解更多操作请评论留言。