/ / AndroidManifest името на пакета е в конфликт с аромати в Android - Android, Android-productflavors

Името на пакета AndroidManifest е в конфликт с аромати в Android - Android, Android-productflavors

Опитвам се да направя 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.