Android Content Provider和Gradle productFlavours

Ave*_*rus 7 java android gradle android-contentprovider android-productflavors

我有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
Run Code Online (Sandbox Code Playgroud)

我的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 + "\""
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我的内容提供商:

public class DatabaseContentProvider extends ContentProvider {
    public static final String AUTHORITY = BuildConfig.PROVIDER_AUTHORITY;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的免费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>
Run Code Online (Sandbox Code Playgroud)

我的高级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>
Run Code Online (Sandbox Code Playgroud)