我的应用程序应该有 2 种风格:免费和付费。两个版本分别完美运行。但是当我想一次安装 2 个时,我得到了错误:[INSTALL_FAILED_CONFLICTING_PROVIDER]。我试图将 android:authorities 和 buildConfigField 值更改为完全不同,但它不会改变任何东西 - 应用程序不会安装。此外,我还删除了主要 Android 清单中的提供程序声明 - 没有。请帮我。
我的文件夹结构:
src
|- free
| |- AndroidManifest.xml
|- main
| |- all files and res catalogues (java, res, values etc.)
| |- AndroidManifest.xml
|- premium
|- AndroidManifest.cml
我的毕业文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
final PROVIDER_FREE = "com.example.free.contentprovider"
final PROVIDER_PRO = "com.example.pro.contentprovider"
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
}
buildTypes {
release {
minifyEnabled false // new version
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
free {
applicationId "com.example.free"
versionCode 141201004
versionName "1.004"
buildConfigField "String", "PROVIDER_AUTHORITY", "\"" + PROVIDER_FREE + "\""
}
premium {
applicationId "com.example.pro"
versionCode 141210001
versionName "0.001 Pro"
buildConfigField "String", "PROVIDER_AUTHORITY", "\"" + PROVIDER_PRO + "\""
}
}
}
我的内容提供商:
public class DatabaseContentProvider extends ContentProvider {
public static final String AUTHORITY = BuildConfig.PROVIDER_AUTHORITY;
...
}
我的免费 Android 清单:
<provider
android:name="com.example.tools.DatabaseContentProvider"
android:authorities="com.example.free.contentprovider"
android:exported="false"
android:grantUriPermissions="true">
<grant-uri-permission android:pathPattern=".*" />
</provider>
我的高级 Android 清单:
<provider
android:name="com.example.tools.DatabaseContentProvider"
android:authorities="com.example.pro.contentprovider"
android:exported="false"
android:grantUriPermissions="true">
<grant-uri-permission android:pathPattern=".*" />
</provider>