Android Studio 批量打包,apk重命名
2015-07-07 09:20
429 查看
项目切换到Android Studio有一段时间了,来聊聊多渠道打包的做法。
1.在productFlavors添加你需要的所有渠道
OK,在命令行运行gradle build,大功告成。你可以去喝杯茶了。
2.如何给apk重命名
恩,发布产品的时候我们需要如下的命名规则
release版本的命名规则如下:
产品名称-版本号-渠道号-sign-42.apk
在build.gradle中添加如下代码
哦,怎么取得版本号?怎么取得渠道号?怎么判断是不是release版本?上面的代码里面都有。
我的项目是从eclipse中迁移过来的,所以我是从manifest文件中读取的版本号,就是上面的那个函数 getVersionNameFromManifest()
如果你的版本号定义在build.gradle中,那defaultConfig.versionName就是你的版本号。
1.在productFlavors添加你需要的所有渠道
android { productFlavors { //在这里添加你所有需要打包的渠道 dev {} google {} myapp {} xiaomi {} app360 {} wandoujia {} } //添加如下代码 productFlavors.all { flavors-> flavors.manifestPlaceholders=[CHANNEL_VALUE:name] } } 同时修改androidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="cn.op.zdf" android:versionCode="25" android:versionName="3.1.2"> <application android:name=".myApplication"> <-- 在manifest中添加如下代码---> <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/> </application> </manifest>
OK,在命令行运行gradle build,大功告成。你可以去喝杯茶了。
2.如何给apk重命名
恩,发布产品的时候我们需要如下的命名规则
release版本的命名规则如下:
产品名称-版本号-渠道号-sign-42.apk
在build.gradle中添加如下代码
//获取时间戳 def getDate() { def date = new Date() def formattedDate = date.format('yyyyMMddHHmm') return formattedDate } //从androidManifest.xml中获取版本号 def getVersionNameFromManifest(){ def manifestParser = new com.android.builder.core.DefaultManifestParser() return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile) } android{ //修改生成的apk名字 applicationVariants.all{ variant-> variant.outputs.each { output-> def oldFile = output.outputFile def newName = ''; if(variant.buildType.name.equals('release')){ // println(variant.productFlavors[0].name) def releaseApkName = 'yjf-android-v' + getVersionNameFromManifest() + '-' + variant.productFlavors[0].name + '-sign-42.apk' output.outputFile = new File(oldFile.parent, releaseApkName) } if(variant.buildType.name.equals('beta')){ newName = oldFile.name.replace(".apk", "-v" + getVersionNameFromManifest() + "-build" + getDate() + ".apk") output.outputFile = new File(oldFile.parent, newName) } if(variant.buildType.name.equals('debug')){ } } } }
哦,怎么取得版本号?怎么取得渠道号?怎么判断是不是release版本?上面的代码里面都有。
我的项目是从eclipse中迁移过来的,所以我是从manifest文件中读取的版本号,就是上面的那个函数 getVersionNameFromManifest()
如果你的版本号定义在build.gradle中,那defaultConfig.versionName就是你的版本号。
相关文章推荐
- android游戏开发基础(绘图类)
- fb2png framebuffer (android)截屏
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- Android 阅读Manifest在文件Application 在与其他节点meta-data定义自己的数据
- Android基础-简单的动画实现 *补间动画 *透明度渐变 *旋转动画 *位移动画 *如果需要几个效果整合到一起,需要将所有效果全部放到set里
- Android 定义自己的学习(5)它们的定义Progressbar
- Android xUtils框架
- Android入门(15)——使用ProgressBar实现进度条
- Android下定时任务
- Android自定义对话框(Dialog)位置,大小
- Android万能适配器base-adapter-helper的源码分析
- Android四大组件之Content Privode
- Android图片异步加载框架Universal Image Loader的源码分析
- android:visibility="gone"
- Android Annotations 注解例子
- Android控件系列之RadioButton&RadioGroup
- android editText
- android开发中几种隐藏标题栏的方法
- TQIMX6Q教程——Android平台SD卡自动烧写方法
- Android连续点击两次返回键退出程序的三种实现方法