Android Studio一括パッケージ、apk名前変更


プロジェクトが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ファイルから読み込んだバージョン番号です.上の関数getVersionName FromManifest()です.
バージョン番号がbuildに定義されている場合.gradleではdefaultConfig.バージョンネームはあなたのバージョン番号です.