文档管理中心

配置支持多Flavor

如果您的应⽤需要根据不同的编译类型,或者不同的Flavor来⽀持不同的应用编译打包操作,您需要对您应用的AppGallery Connect配置文件agconnect-services.json进行特殊的处理。agconnect-services.json⽂件提供了应用在AppGalleryConnect项⽬中各种服务需要的配置信息,所以当你需要通过多Flavor来⽀持不同的编译环境或不同的渠道时,可以参考本文档进行配置。

下载agconnect-services.json

配置支持多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的方式。

使用同一个agconnect-services.json文件

如果您的应用集成了1.5.0.300及以上版本的agcp插件(参见配置SDK地址),您可以只下载一次agconnect-services.json文件,并添加到您应用根目录即可。

  1. 首先您需要在AGC的同一个项目中为每个渠道都添加一个Android应用,并且应用包名需要与build.gradle文件中productFlavor配置的包名一致,具体请参见在项目下添加应用

  2. 在“项目设置”页面下载华为渠道应用的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中包含了当前项目下所有应用的应用信息。

  3. 确认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去匹配如果都不匹配,则会编译报错。

使用不同的agconnect-services.json文件

如果您的应用集成了的是1.5.0.300以下版本的agcp插件(参见配置SDK地址),您需要下载所有渠道包的agconnect-services.json文件,并添加到对应渠道的Flavor目录下。

  1. 首先您需要在AGC的同一个项目中为每个渠道都添加一个Android应用,并且应用包名需要与build.gradle文件中productFlavor配置的包名一致,具体请参见在项目下添加应用

  2. 在“项目设置”页面,下载所有应用的agconnect-services.json文件,参见下载agconnect-services.json

  3. 将不同渠道的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

}

 

搜索
请输入您想要搜索的关键词