【原创】如何使用build.gradle优雅的开发Android
来源:互联网 发布:linux管道符号的作用 编辑:程序博客网 时间:2024/06/16 04:50
前言
Gradle 是 Android 现在主流的编译工具,他和 Android Studio 的关系非常紧密,可以说对于一些简单的程序我们几乎不需要任何代码上的配置只使用 Android Studio 就可以完成编译和运行。 下面我给大家介绍一些实用的gradle代码:
1.打包签名apk
大家在使用gradle时,最基本的就是签名打包,下面的代码配置好之后,就可以根据渠道和release或者debug包了:
(1)替换AndroidManifest中的占位符
替换AndroidManifest 的app_lable ,也就是应用名
android{ defaultConfig{ manifestPlaceholders = [app_label:"@string/app_name"] }}
如果只想替换debug版本:
android{ buildTypes { debug { manifestPlaceholders = [app_label:"@string/app_name_debug"] } release { } }}
更多的需求是替换渠道编号:
android{ productFlavors { // 把dev产品型号的apk的AndroidManifest中的channel替换dev "dev"{ manifestPlaceholders = [channel:"dev"] } }}
(2)配置签名信息
在builde.gradle 的android{..} 里面将签名设置
signingConfigs { release { storeFile file("../yourapp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } } buildTypes { debug { minifyEnabled false zipAlignEnabled false shrinkResources false } release { minifyEnabled true//混淆编译 zipAlignEnabled true //移除无用的资源文件 shrinkResources true signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
( 3 ) 多渠道打包,下面引用友盟的例子:
首先在AndroidManifest 里面配置PlaceHolder,与build.gradle文件中替换自己想要改变的值
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />然后在build.gradle里面设置productFlavors,修改PlaceHolder
productFlavors { playStore { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } miui { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"] } wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } }这里也是可以批量修改的
productFlavors { playStore {} miui {} wandoujia {}} //批量处理productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
(4)修改打包的文件名字,根据不同的需求自行配置
def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}
android.applicationVariants.all { variant -> variant.outputs.all { if(variant.buildType.name=="release"){ outputFileName = "${sdk}_${defaultConfig.versionName}_${releaseTime()}.apk" }else { outputFileName = "${sdk}_${defaultConfig.versionName}_${releaseTime()}_debug.apk" } }}
2.动态应用皮肤
有时我们运营需求就是把app 换皮肤,换icon,更换域名等等原因,应用名重新在应用市场里面发布,如果手动去搞未免显的很Low 也比较费时费力,其实Gradle 里面已经给我们提供了方法
,我们可以根据需求建立多套assets ,res,和AndroidMainfest
(1)提取工程中,strings,colors,dimens,在开发阶段有时为了求快,经常忘记了这么做,这就是开发习惯的问题了,其实这是给自己在后面的阶段埋了坑
(2) 将assets, res ,AndroidManifest 所有东西抽取到一个特定的文件夹
本人就是在src下面建立了一个同级的src_config文件夹,该文件夹下面的子文件的名字就是对应每一套的打包需求,我的示例打包需求是“dataEye”和“noDataEye”,如下图所列
(3)配置build.gradle文件
首先在工程project的build.gradle 里面配置 ,
ext{ sdk='dataEye' // 对应文件夹里面的打包需求// sdk='noDataEye'}
然后在app module里面的build.gradle 里面,引用assets ,res ,AndroidManifets就可以了
def appId="com.anfeng.demo.${sdk}" // 对应的applicationIddef manifestXml="src_config/${sdk}/AndroidManifest.xml" def assetsPath="src_config/${sdk}/assets"def resDir="src_config/${sdk}/res"
android.sourceSets{// 设置引用路径 main{ manifest.srcFile manifestXml res.srcDirs=[resDir] assets.srcDirs assetsPath }}
完成几步之后,有几套打包需求我们就建几套相应资源就可以了,这就算是初步完成了换肤的需求
阅读全文
0 0
- 【原创】如何使用build.gradle优雅的开发Android
- 【原创】如何使用build.gradle优雅的开发Android
- Android开发如何写出优雅的代码
- android开发之使用gradle终端下build项目
- 使用Kotlin优雅的开发Android应用
- 使用Kotlin优雅的开发Android应用
- AS-->如何更高效的使用 Gradle, 快速build apk
- 如何更高效的使用 Gradle, 快速build apk
- 如何使用Android Studio开发Gradle插件
- 如何使用Android Studio开发Gradle插件
- 如何使用Android Studio开发Gradle插件
- 如何使用Android Studio开发Gradle插件
- Android Studio开发Build.gradle小技巧
- Android Studio app/build.gradle使用
- 如何优雅的使用“看板”?
- 如何优雅的使用 Mac
- 如何优雅的使用EventBus
- 如何优雅的使用 ubuntu
- Spring MVC 框架搭建及详解
- 通过设置偏移 添加RecyclerView分隔线
- LintCode全AC题解(共331题)
- 安卓开发环境搭建
- linux-常用命令整理
- 【原创】如何使用build.gradle优雅的开发Android
- error: taking address of temporary
- Android Studio 内存泄漏分析指南
- Spring MVC 框架搭建及详解
- ConvNet Architectures
- 地推的几个效果提升
- H5上传视频,截取视频第一帧作为视频封面,遇到的坑
- Linux 查看CPU信息
- 32.反射