我最近已將Eclipse從Eclipse移植到Android Studio,並且經過一番努力後應用程序已啓動並正在運行。現在我面臨第二個障礙 - 生成應用程序的白色標籤版本。我已經閱讀了我在Android Studio中的Flavor機制中可以找到的所有內容,我相信它可以工作,但我仍然有很少的問題。使用Android Studio Flavors的Android白色標籤
但是,首先讓我解釋一下我們使用Ant的當前白色標籤機制(由於支持庫的升級,我不認爲我可以再使用它了,因爲它確實需要lib文件夾中存在Jar文件?)。這個Ant腳本讀取一個build.xml
文件,我們已經指定了新值的位置(strings.xml
和colors.xml
)以及特定於白色標籤的資源文件夾(圖像等)。它基本上覆制新文件(只有少數不同),然後運行構建,重命名APK併爲其提供新的應用程序ID。因此,我可以一舉按下一個按鈕就可以建立100個白色標籤。包含在這個版本里的是一個複製機制,它創建了一個與它相關版本的新版APK的副本,所以如果基本的風格是MYAPP.apk
,而且我們在版本44上,它會複製它並製作一個44-MYAPP.apk
,我們需要爲那些直接從我們的S3而不是GooglePlay提供支持的客戶進行回滾 - 是的,這是他們中的一些人的要求。
我想我可以模仿這個最有味道,有以下幾個問題:
我希望所有這些版本具有相同的版本名稱和版本代碼。如果我將flavor配置值留空,他們是否會從AndroidManifest.xml文件中選取版本?
是否有可能讓每個APK在生成時都有自己的應用程序名稱,例如
AppHeyYou.apk
和WhereIsThat.apk
是否有另一種風格?我看到的例子似乎在APK名稱末尾添加了一個後綴,我需要一個全新的APK名稱(並且沒有添加「Release
」)。我可以把它打造的香味,然後將它複製並使用從
AndroidManifest.xml
或默認配置的版本將其重命名(如MyApp.apk
,並複製到44-MyApp.apk
)?由於接近100,所以在每個版本配置中改變這一點對於每個版本都是不切實際的。有沒有一種方法可以通過單擊按鈕來強制生成所有白色標籤。再一次,爲每個做這件事都是不切實際的。
感謝您的幫助!
UPDATE
只要是有幫助的,我想我會呈現什麼我結束了全部劇本的gradle。這裏是做什麼的:
- 定義口味
- 在構建他們,讓他們的味道的名字,但在前面上漲的版本代碼(這樣紅味,版本號44變爲「44 -Red.apk「)。
最後我的構建。gradle這個爲應用程序是這樣的:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "com.mycompany.ourapp"
minSdkVersion 14
targetSdkVersion 23
versionCode 62
versionName "1.0.62"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
signingConfig signingConfigs.config
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
Red {
setProperty("archivesBaseName", "red")
}
Blue {
setProperty("archivesBaseName", "blue")
}
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def path = "C:/AndroidBuilds/MyCompany.Build/" + "/"
def SEP = "-"
def flavor = variant.productFlavors[0].name
def version = variant.versionCode
def newApkName = path + version + SEP + flavor
def newApkNameNoVersion = path + flavor
output.outputFile = new File(newApkName + ".apk")
}
}
dependencies {
}
}
當我得到了所有的白色標籤的工作和自動運行,我會釘,關於這一點。
#1,是的,雖然這將是簡單的只是定義它們在搖籃構建文件。 #2和#3似乎彼此直接衝突。 #4是'gradle assembleRelease',雖然將它綁定到一個「按鈕」(無論是一個GUI按鈕還是一個機械開關)取決於你。另外,請記住,您可以創建自定義的Gradle任務,並且可以從外部程序(例如Ruby腳本)執行Gradle構建過程,您可以在其中執行任何您想要的操作。 – CommonsWare
#2和#3的想法是讓每種口味都有自己的APK名稱。所以如果我的口味是「Red」和「Blue」,那麼在生成APK時我總共會得到4個文件。如果版本是33,則名稱看起來像 - Red.apk,33-Red.apk,Blue.apk和33-Blue.apk。從歷史上看(我與這種方法無關),新版本具有相同的名稱,所以如果我們想要回滾,我們將代碼版本重命名爲通用名稱。之所以這麼做,是因爲大多數用戶並沒有從Google Play中獲得口味,而是從S3上的鏈接中獲益。我無法撤銷這種方法,所以我必須複製它(我希望我可以!) –