此问题应该解决我需要更新子库内容提供程序的另一个问题: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,但是这些依赖项本身不能是显式的。子项目的输出应该是可预测且一致的。

10-08 14:57