智能客服
你问我答,随时在线为你解决问题
如果您的应⽤需要根据不同的编译类型,或者不同的Flavor来⽀持不同的应用编译打包操作,您需要对您应用的AppGallery Connect配置文件agconnect-services.json进行特殊的处理。agconnect-services.json⽂件提供了应用在AppGalleryConnect项⽬中各种服务需要的配置信息,所以当你需要通过多Flavor来⽀持不同的编译环境或不同的渠道时,可以参考本文档进行配置。
配置支持多Flavor需要使用AppGallery Connect配置文件,如果已下载该文件可跳过本操作。
1. 登录 AppGallery Connect 网站,选择“我的项目”。
2. 在项目列表中找到您的项目,在项目下的应用列表中选择您的应用。
3. 在“项目设置”页面下载配置文件“agconnect-services.json”。

如果应用需要支持不同的编译环境,如release环境、debug环境、rest环境、mirror环境等,可以在应用级别的build.gradle文件中设置buildTypes来实现。例如:
buildTypes{
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug
{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
} 这种场景需要将agconnect-services.json文件分别放在每一个环境的文件夹中,例如:
app/
src/release/agconnect-services.json
src/debug/agconnect-services.json 以上示例的工程拥有release和debug两个环境,您需要在release和debug的一级子目录下都放入agconnect-services.json文件。由于这种不同环境的配置不会改变包名,所以您放入的是同一个应用的agconnect-services.json文件。
如果您的工程需要支持不同渠道的打包,这种打包需要根据不同的渠道变更不同的包名,一般是在应用级build.gradle文件中的productFlavor下进行配置,例如:
flavorDimensions "flavor"
productFlavors{
huawei {
applicationId "com.huawei"
dimension "flavor"
}
appMarket2{
applicationId "com.appMarket2"
dimension "flavor"
}
} 上面的示例代码展示了两种渠道不同的打包配置,可以看到使用这种配置后最终打包出来包名是不同的。因此如果您不同渠道的包都集成了华为的服务,那不同渠道打包时需要支持读取出对应渠道的包名,我们当前支持2种配置多Flavor的方式。
如果您的应用集成了1.5.0.300及以上版本的agcp插件(参见配置SDK地址),您可以只下载一次agconnect-services.json文件,并添加到您应用根目录即可。
首先您需要在AGC的同一个项目中为每个渠道都添加一个Android应用,并且应用包名需要与build.gradle文件中productFlavor配置的包名一致,具体请参见在项目下添加应用。
在“项目设置”页面下载华为渠道应用的agconnect-services.json文件,文件中将包含类似如下信息。
{
"client":
{
"app_id": "10000",
"package_name": "xxx.huawei",
...
},
"configuration_version": "2.0",
"appInfos": [
{
"app_id": "10000",
"package_name": "com.huawei"
},
{
"app_id": "10001",
"package_name": "com.appMarket2"
}
]
} 其中client中包含了当前应用的应用信息,appInfos中包含了当前项目下所有应用的应用信息。
确认agconnect-services.json文件中appInfos中的所有包名与build.gradle文件中productFlavor配置的包名一致后,将agconnect-services.json文件添加到应用级根目录下。例如:

配置完成后,在您编译打包时,agcp插件会自动根据当前的Flavor对应的applicationId与appInfos匹配,打包生成正确的渠道包。匹配的原则为,通过productFlavor的applicationId去匹配appInfos中的package_name,appInfos中的所有package_name都不匹配,则用client中的package_name去匹配如果都不匹配,则会编译报错。
如果您的应用集成了的是1.5.0.300以下版本的agcp插件(参见配置SDK地址),您需要下载所有渠道包的agconnect-services.json文件,并添加到对应渠道的Flavor目录下。
首先您需要在AGC的同一个项目中为每个渠道都添加一个Android应用,并且应用包名需要与build.gradle文件中productFlavor配置的包名一致,具体请参见在项目下添加应用。
在“项目设置”页面,下载所有应用的agconnect-services.json文件,参见下载agconnect-services.json。
将不同渠道的agconnect-services.json添加到对应渠道的Flavor目录下即可。例如:

在将agconnect-services.json文件放入不同子目录后,还需要修改配置文件以适配多Flavor的配置。
1. 配置gradle.properties文件。
在文件末尾添加如下配置:
org.gradle.jvmargs=-Dfile.encoding=UTF-8
2. 配置应用级build.gradle
在app的build.gradle文件末尾,增加如下配置:
agcp{
manifest false
}