我在用日期/時間(yyMMddHHmm)爲每個版本動態命名APK。我已完成此操作,並且gradle可以正確構建並命名APK,但Android Studio無法使用正確的名稱嘗試推送到設備。Android Studio/gradle動態apk名不同步
有一個關於這個主題的問題,有一些很好的信息,確認問題,並且在每次構建之前需要手動同步。 Android Studio uploads sterile APK to device when Gradle has custom logic changing APK names
對於這裏的全貌是我的build.gradle
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
// grab the date/time to use for versionCode and file naming
def date = new Date();
def clientBuildDate = date.format('yyMMddHHmm')
// for all client files, set the APK name
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, "myapp-" + versionName.replace(".","_") + "-" + clientBuildDate + ".apk")
}
}
....
defaultConfig{...}
buildTypes{...}
compileOptions{...}
signingConfigs{...}
}
像上面會產生輸出:
myapp-1_0_0-1507021343.apk
myapp-1_0_0-1507021501.apk
myapp-1_0_0-1507021722.apk
而Android工作室將始終嘗試第一版本加載到因爲它不同步,並且在每次構建後都不知道名稱更改。
是否有任何關於如何強制每個構建/運行Android Studio的同步的建議?在構建展示制止器之前手動進行同步,並且需要我回到默認的APK命名方案。
使用:AS 1.2.1.1 &「com.android.tools.build:gradle:1.2.3」
你有沒有試着用'archivesBaseName'物業玩?我認爲AS應該識別APK文件名中的變化,如果它在'defaultConfig'塊中定義的,而不是手動重命名文件的腳本。有關示例,請參閱http://stackoverflow.com/a/28992851/937715。 –
@SeanBarbeau謝謝你的建議。使用'archivesBaseName'的方法不適用於動態命名,在這個例子中,名稱是使用靜態字符串構建的,所以通過改變這些字符串的性質,您強制執行一個gradle sync,使AS/gradle對齊,在我的情況下, m不想手動編輯concat'd的值,但在構建時計算它們,這是我遇到問題的地方,因爲這種方法不啓動同步。 –
你嘗試過使用'gradle flavors'嗎?我不知道他們如何處理隨每個新構建而變化的動態名稱,但這裏有一個[問題](http://stackoverflow.com/questions/23226722/use-different-resources-graphics-and-strings-針對不同的應用程序風格)我在過去問過關於安裝的主題。 – craned