使用 multi-flavor 编译 GMS 和 HMS 包。但是编译GMS版本的时候报错

Using multi-flavor to compile GMS and HMS packages. But an error is reported when the GMS version is compiled

我有一个应用配置了两种编译风格,一种使用 HMS,另一种不使用。未使用HMS的flavor在编译过程中,包名与JSON文件中包名不一致。结果,出现错误。

Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:processAppgalleryconnectLatestDebugAGCPlugin'.
> ERROR: Failed to verify AGConnect-Config '/client/package_name', expected: 'com.dise.appge.hms', but was: 'com.dise.appge.gms'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================

那么不同的flavor使用不同的包名怎么解决这个问题呢?

您可以在应用程序的build.gradle中配置它。比如HMS和GMS两种口味,可以尝试添加如下代码:

if (getGradle().getStartParameter().getTaskNames().toString().contains("HMS")) {
    apply plugin: 'com.huawei.agconnect'
}

即GMS编译时不添加AGC插件,避免JSON文件中包名不一致的问题

各个插件都可以在productFlavors块中应用,不需要比较什么:

flavorDimensions "vendor"
productFlavors {
    google {
        dimension "vendor"
        apply plugin: "com.google.gms.google-services"
        apply plugin: "com.google.firebase.crashlytics"
        applicationIdSuffix ".gms"
    }
    huawei {
        dimension "vendor"
        apply plugin: "com.huawei.agconnect"
        applicationIdSuffix ".hms"
    }
}