Android Studio一括パッケージ、apk名前変更
プロジェクトがAndroid Studioに切り替わってからしばらく経ちましたが、マルチチャネルパッケージの作り方についてお話しします.
1.productFlavorsに必要なすべてのチャネルを追加
OK、コマンドラインでgradle buildを実行し、大成功します.お茶を飲みに行ってもいいですよ.
2.apkの名前の変更方法
はい、製品を発表するときは、次の命名規則が必要です.
releaseバージョンのネーミングルールは次のとおりです.
製品名-バージョン番号-チャネル番号-sign-42.apk
在build.gradleに次のコードを追加します.
ああ、どうやってバージョン番号を取得しますか?どうやってチャネル番号を取得しますか?releaseバージョンかどうかをどう判断しますか?上のコードには全部入っています.
私のプロジェクトはeclipseから移行したので、manifestファイルから読み込んだバージョン番号です.上の関数getVersionName FromManifest()です.
バージョン番号がbuildに定義されている場合.gradleではdefaultConfig.バージョンネームはあなたのバージョン番号です.
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.バージョンネームはあなたのバージョン番号です.