2

这个问题应该解决我需要更新子库内容提供程序的另一个问题:使用 Gradle 库中的构建类型来运行在一台设备上使用 ContentProvider 的相同应用程序

我在根应用程序中有一个产品风味,它成功地更改了包名称,因此我可以部署不同版本的应用程序。当我尝试在子库中添加相同的产品风味时,构建失败,因为根应用程序无法加载从子库引用的 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 包不存在 import com.company.android.fyc.controllers.FYCHomePagerActivity;

谢谢你的帮助!

4

1 回答 1

1

我很确定您不能对风味(又名链式风味)进行依赖,因为 Gradle 无法表达这样的事情。您的根项目可以基于风味具有不同的依赖项,但这些依赖项本身不能是显式风味。子项目的输出应该是可预测的和一致的。

于 2014-07-11T20:33:38.257 回答