Android Gradle产品风味在子库中失败

时间:2014-07-11 18:39:48

标签: android gradle android-library android-productflavors

此问题应解决我需要更新子库内容提供程序的其他问题:Using build types in Gradle libraries to run same app that uses ContentProvider on one device

我在根应用程序中有一个成功更改软件包名称的产品风格,因此我可以部署不同版本的应用程序。当我尝试在子库中添加相同的产品flavor时,构建失败,因为根应用程序无法加载从子库引用的java类,因为现在包名已更改?我认为产品风味没有影响java类包结构?

ATCApp.gradle root application

...
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库中添加上述产品风格会导致root应用程序抛出错误:

/src/main/java/com/company/android/HomeBroadcastReceiver.java:7:包com.company.android.fyc.controllers不存在 import com.company.android.fyc.controllers.FYCHomePagerActivity;

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我很确定你不能对口味(又称链式口味)做依赖,因为Gradle无法表达这样的事情。您的根项目可以有different dependencies based on the flavor,但这些依赖项本身不能是显式的。子项目的输出应该是可预测和一致的。