使用Gradle库中的构建类型来运行在一个设备上使用ContentProvider的相同应用程序

时间:2014-07-09 01:56:48

标签: android gradle android-contentprovider android-gradle android-library

我遇到的问题是我的Android内容提供商未在Android库的单独构建版本中被识别。我已经按照Using build types in Gradle to run same app that uses ContentProvider on one device

中的大多数想法进行了跟踪

我也跟着:http://www.kevinrschultz.com/blog/2014/03/23/using-android-content-providers-with-multiple-package-names/

当我尝试运行该应用程序时,父应用程序尝试从 src / main / AndroidManifest.xml 中列出的FYC库中导入java类,并且不会识别该类,因为.qa包名?

我的库FYC.gradle文件如下所示:

...
android
{
    ...
    productFlavors
    {
        prod {
           packageName "com.company.android"
        }

        qa {
           packageName "com.company.android.qa"
        }
    }
}

我在主要内容中注释了内容提供商: 的的src /主/ AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.android.fyc"
    android:versionCode="1"
    android:versionName="1.0" >

<!--<provider-->
            <!--android:name=".models.listing.ListingProvider"-->
            <!--android:authorities="com.company.android.fyc.models.listing.listingprovider"-->
            <!--android:exported="false" />-->

</manifest>

的src / PROD / AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.android.fyc"
    android:versionCode="1"
    android:versionName="1">

    <application>

        <provider
            android:name=".models.listing.ListingProvider"
            android:authorities="com.company.android.fyc.models.listing.listingprovider"
            android:exported="false" />

    </application>
</manifest>

的src / QA / AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.android.fyc"
    android:versionCode="1"
    android:versionName="1">

    <application>

        <provider
        android:name=".models.listing.ListingProvider"
        android:authorities="com.company.android.qa.fyc.models.listing.listingprovider"
        android:exported="false" />

    </application>
</manifest>

我尝试了另一个选项并尝试使用变量作为包名,但是Gradle给了我一个错误,它没有识别$?

在AndroidManifest.xml中,您可以使用$ {packageName},如下所示:

    <!--<provider-->
        <!--android:name=".models.listing.ListingProvider"-->
        <!--android:authorities="${packageName}.fyc.models.listing.listingprovider"-->
        <!--android:exported="false" />-->

有没有人最近有另外一个解决这个问题的方法?谢谢!

0 个答案:

没有答案