Дефинирах няколко вкуса и buildTypes за моето приложение за Android
productFlavors {
X {
applicationId = "com.x.xxxx"
}
Y {
applicationId = "com.y.yyyy"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard_rules.txt'
}
debug {
applicationIdSuffix ".debug"
}
}
Това върши работата по създаването на различни комбинации от аромати/buildType.
Сега, за да се уверя, че ContentProviders
работи и не получавам грешка Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
, промених препратките android:authorities="${applicationId}"
и AUTHORITY
в кода на BuildConfig.APPLICATION_ID
.
Това кара ContentProvider
да работи добре, т.е. не извежда грешка, когато инсталирам два различни типа на един и същ телефон. Това ми позволява да ги инсталирам.
Следващата стъпка е къде е грешката. Използвам SyncAdapter
и AccountManager
, за да контролирам няколко неща. Модифицирах ACCOUNT_TYPE
, за да използвам APPLICATION_ID
. Поради проблема с това, че gradle не може да използва ${applicationId}
в неманифестни xml ресурсни файлове, създадох различна структура на директория за всеки вариант и копирах syncadapter.xml
и authenticator.xml
със съответните низове authority
и account type
.
Също така изпробвах техниката, описана в този блог - http://blog.jensdriller.com/android-gradle-workaround-for-missing-placeholder-support-in-resource-files/
И най-гласуваните отговори на Използване на типове компилация в Gradle за стартиране на едно и също приложение, което използва ContentProvider на едно устройство, но нещата изглежда не работят.
Някой успял ли е да накара това да работи наскоро?