我遇到的问题是我的Android内容提供商未在Android库的单独构建版本中被识别。我已经按照Using build types in Gradle to run same app that uses ContentProvider on one device
中的大多数想法进行了跟踪当我尝试运行该应用程序时,父应用程序尝试从 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" />-->
有没有人最近有另外一个解决这个问题的方法?谢谢!