我知道這是舊帖子,但由於沒有得到答覆,讓我指出你在後面的方向,以防其他人遇到這個帖子。
你可以在口味上做很多事情,但你要做的事情要比任何人的回答都簡單得多。
首先,您有一個構建變體來選擇您的調試和運行風味。所以使用這個,否則所有的調試都將使用默認的主版本。其次,您不必獲取包名稱,只需使用構建配置標誌或檢查風味即可。 I.E.
android {
signingConfigs {
releaseA35Demo {
storeFile file("$projectDir/../yaskeystore.jks")
storePassword System.getenv('YOUR_APP_STUDIO_STORE_PASSWORD')
keyAlias System.getenv('YOUR_APP_STUDIO_KEY_ALIAS')
keyPassword System.getenv('YOUR_APP_STUDIO_KEY_PASSWORD')
}
}
flavorDimensions 'default'
productFlavors {
a35Demo {
dimension 'default'
applicationId "com.appstudio35.yourappstudio"
buildConfigField "String", "SERVER_URL", '"http://fakeNumbers.compute-1.amazonaws.com:3006"'
buildConfigField "int", "BUSINESS_ID", "1"
versionCode 1
versionName "0.01.01-b1"
minSdkVersion 21
}
a35DemoDev {
dimension 'default'
applicationId "com.appstudio35.yourappstudio.dev"
buildConfigField "String", "SERVER_URL", '"http://fakeNumbers2.compute-1.amazonaws.com:3006"'
buildConfigField "int", "BUSINESS_ID", "2"
versionCode 1
versionName "0.01.01-b1"
minSdkVersion 21
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors.a35Demo.signingConfig signingConfigs.releaseA35Demo
productFlavors.a35DemoDev.signingConfig signingConfigs.releaseA35Demo
}
}
}
然後簡單地引用它的代碼,如:
BuildConfig.BUSINESS_ID
無論你需要它。只要確保在自動導入BuildConfig時不會意外使用庫項目的BuildConfig。
接下來的方法是,如果你想檢查你的味道,你可以簡單地做 BuildConfig.FLAVOR看看你在哪一個。但是請記住,有一些關於使用它的編譯器警告,因爲您正在檢查一個風格,並且BuildConfig會假定它總是會成爲Build Variant下拉列表中的任何內容,這是不正確的,您可以忽略它始終爲真或總是虛假的警告,我向你保證它的工作。
最後,您的包由您正在調試的構建變體驅動。我將添加一個圖像,以便您可以看到要更改的位置。
希望有所幫助。
但是我要說的最後一件事是您的MainActivity會自動處理,您不必管理MainActivity的Package就可以啓動它。它將爲您所使用的風格使用相應的風味。通常,當您將文件移動到風格時,您可以製作風格和變體,以便使用相應的MainActivity。你在做什麼有點冒險,但我想它是有效的。但是,建議讓味道工具做它的工作,併爲您啓動它。
只需從Main中刪除MainActivity,並確保它是在您的兩種口味付費和免費的,你很好去。例如,請注意我沒有應用程序文件夾或文件在我的主:
現在看到清單指向它仍。
所以,如果你讓味道做的工作,你會被罰款。如果您嘗試將其留在主體中,則必須處理衝突和警告。
來源
2018-02-15 20:22:44
Sam
這是什麼不同於[你的問題在這裏](http://stackoverflow.com/questions/40858582/android-flavor-intent-activity)? –
一種可能性是爲兩個活動添加一個私有操作的'',然後使用'android:exported =「false」'來防止第三方應用程序啓動這些活動。然後,使用該動作字符串使用「Intent」。 –
CommonsWare
@Mike M.這不起作用,因爲這些活動永遠不會被明確地調用,所以它們被proguard刪除,我不能設置賞金來推動這個問題。 – XxGoliathusxX