Android Content Provider和Gradle productFlavours

时间:2014-12-08 13:14:23

标签: 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

我的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>

0 个答案:

没有答案