Android Studio 批量打包,apk重命名

转载 2015年07月07日 09:20:08

项目切换到Android Studio有一段时间了,来聊聊多渠道打包的做法。


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 studio 打包apk如何重命名apk名称

在打包签名之前,在相应的module的build.gradle中添加如下代码 applicationVariants.all { variant -> variant.out...

Android Studio 多渠道打包自命名

可参照: (1)http://blog.chinaunix.net/uid-20771867-id-5106723.html (2)http://www.th7.cn/Program/Androi...

Android Studio如何减少apk的编译时间

参考自 祥哥说事 :http://mp.weixin.qq.com/s/CERa-5jVXoxBj9vgnL_Kiw在build.gradle(Module:app)的android{}中添加如下代码...

[Android studio]_[批处理一键编译生成APK]

批处理一键编译生成APK该批处理仅限android studio项目可以使用,因为这是基于项目中的gradlew.bat来完成的,而且是生成release版本。编译生成release版本 打开如图a...

[已解决] Android Studio 混淆配置后 应该输出的mapping 文件 seed 文件 unused 文件以及dump 文件都找不到

项目中我们使用Android Studio 混淆配置后 发现应该输出的mapping 文件 seed 文件 unused 文件以及dump 文件都找不到 Android Studio 混淆配置后的ma...
  • Rodulf
  • Rodulf
  • 2016年08月27日 18:18
  • 3364

android studio生成签名导打包的方法

转载地址:http://www.jianshu.com/p/2ac17b93bffd 方法一: 在android中。可以非常快速的生成签名文件.jsk文件。步骤如下: ...

Android studio build.gradle配置,debug下使用正式签名,重命名apk

Android studio build.gradle配置,debug模式下使用正式版签名,重命名apk

gradle修改生成apk的名字,并修改输出路径

http://blog.csdn.net/killfunst/article/details/44996933 gradle修改生成apk的名字,并修改输出路径 ...

修改Android Studio Build生成apk的默认名称

用Android Studio 打包App时生成的名称默认是 app-release.apk这样的名字 我这里使用Gradle 配置文件修改默认命名格式以更直观管理 我现在格式是这样的 我现在...

定制你自己的android手机桌面Launcher===一个完成Launcher开发的介绍 (第二篇)

launcher也就是我们的Home,可以简单地把它理解为一个简化的linux GUI。作为一个GUI它首先必须完成它最本分的功能, 就是它必须能提供对所有应用程序(CATEGORY_LAUNCHE...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Studio 批量打包,apk重命名
举报原因:
原因补充:

(最多只允许输入30个字)