Опитвам се да направя 2 вкуса на приложението си.
Gradle:
defaultConfig {
applicationId "be.myname.firstapp"
minSdkVersion 15
targetSdkVersion 23 }
productFlavors {
raterate {
applicationId = "be.myname.firstapp"
}
scarsforlife {
applicationId = "be.myname.secondapp"
}
}
Имам AndroidManifest в главната папка, fistapp папка & secondapp папка.
Името на опаковката в първата папка: be.myname.fistapp, втората папка: be.myname.secondapp.
В главната папка, която за първи път имах: be.myname.firstapp, но в конфликт с be.myname.secondapp. Сега се опитах:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="${packageId}">
</manifest>
И имам това:
Attribute manifest@package at AndroidManifest.xml:3:5-27 requires a placeholder substitution but no value for <packageId> is provided.
AndroidManifest.xml Error:
Overlay manifest:package attribute declared at AndroidManifest.xml:3:5-45 value=(be.myname.secondapp)
has a different value=(be.myname.secondapp) declared in main manifest at AndroidManifest.xml:3:5-27
Suggestion: remove the overlay declaration at AndroidManifest.xml and place it in the build.gradle:
flavorName {
applicationId = "be.myname.secondapp"
}
В този момент съм объркан. Какъв е правилният начин да направите това?
Отговори:
1 за отговор № 1Не е необходимо да променяте пакета AndroidManifest.xml
за всеки вкус.
Цитат от tools.android.com:
Следователно, ние сме отделили връзката двете имена на пакета:
- Окончателният пакет, който се използва в изградения от вас протокол .apk и е пакетът, на който е известно, че приложението ви е на вашето устройство и в Google Play Store, е "id на приложението".
- Пакетът, който се използва във вашия изходен код, за да се отнася до вашия клас R и да разреши всякакви относителни регистрации на дейност / услуга, продължава да се нарича "пакет".
Можете да зададете идентификационния номер на приложението в файла с конектори, както следва:
ап / build.gradle:
apply plugin: "com.android.application" android { compileSdkVersion 19 buildToolsVersion "19.1" defaultConfig { applicationId "com.example.my.app" minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" } ...
Както и преди, трябва да посочите пакета, използван за вашия код в Манифест на файла, точно както е показано в извадката AndroidManifest.xml по-горе.
Тук идва критичната част: Когато сте направили горното, двете пакетиса независими. Вие сте напълно свободни да репаратор си код - промяна на вътрешния пакет, използван за вашите дейности и услуги, актуализиране на Вашия манифест пакет и refactoring вашия внос изявления. Това няма да окаже влияние върху окончателния номер на Вашия приложение, което сега ще бъде винаги приложениеId посочени в файла Gradle.