此问题应该解决我需要更新子库内容提供程序的另一个问题:Using build types in Gradle libraries to run same app that uses ContentProvider on one device
我在根应用程序中具有一种成功更改软件包名称的产品 flavor ,因此我可以部署该应用程序的不同版本。当我尝试在子库中添加相同的产品 flavor 时,构建失败,因为根应用程序无法加载从子库引用的Java类,因为现在包名称已更改?我以为产品口味没有影响java类包的结构?
ATCApp.gradle根应用程序
...
dependencies {
...
compile project(':libraries:FYC')
...
}
...
android
{
...
productFlavors
{
prod {
packageName "com.company.android"
}
qa {
packageName "com.company.android.qa"
}
}
}
FYC.gradle子库
...
android
{
...
productFlavors
{
prod {
resValue "string", "authority", "com.company.android.fyc.models.listing.listingprovider"
}
qa {
resValue "string", "authority", "com.company.android.qa.fyc.models.listing.listingprovider"
}
}
}
在子FYC库中添加上述产品口味会导致根应用程序引发错误:
/src/main/java/com/company/android/HomeBroadcastReceiver.java:7:包com.company.android.fyc.controllers不存在
导入com.company.android.fyc.controllers.FYCHomePagerActivity;
谢谢你的帮助!
最佳答案
我很确定您不能依赖于口味(也就是链式口味),因为Gradle无法提供表达这种方式的方法。您的根项目可以具有different dependencies based on the flavor,但是这些依赖项本身不能是显式的。子项目的输出应该是可预测且一致的。