我有app应该有两种口味:免费和付费。两个版本分别完美运行。但是当我想立刻安装其中的两个时,我收到了错误:[INSTALL_FAILED_CONFLICTING_PROVIDER]。我试图改变android:authorities和buildConfigField值是完全不同的,但它并没有改变任何东西 - 应用程序不会安装。我还删除了主Android Manifest中的提供者声明 - 没有。请帮帮我。
我的文件夹结构:
src
|- free
| |- AndroidManifest.xml
|- main
| |- all files and res catalogues (java, res, values etc.)
| |- AndroidManifest.xml
|- premium
|- AndroidManifest.cml
我的gradle文件:
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 Manifest:
<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 Manifest:
<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>