android studio多渠道打包

Posted Gradle官方文件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android studio多渠道打包相关的知识,希望对你有一定的参考价值。

先说打包

第一步
<meta-data
    android:name="UMENG_CHANNEL"
    android:value="$UMENG_CHANNEL_VALUE" />
第二部:(a,b方法任选)

a:
android   
    productFlavors 
        xiaomi 
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        
        _360 
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]
        
        baidu 
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
        
        wandoujia 
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        
      


b:
android   
    productFlavors 
        xiaomi 
        _360 
        baidu 
        wandoujia 
      

    productFlavors.all  
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
    

不同版本配置不同的APPKEY

<meta-data
         android:name="UMENG_APPKEY"
         android:value="$umeng_app_key"/>


buildTypes 
        debug 
         manifestPlaceholders = [umeng_app_key: "你替代的内容"]
        
        release 
       manifestPlaceholders = [umeng_app_key: "你替代的内容"]
        
        develop 
       manifestPlaceholders = [umeng_app_key: "你替代的内容"]
        
    
    /**
     * 获取application中指定的meta-data
     * 
     * @return 如果没有获取成功(没有对应值,或者异常),则返回值为空
     */
    public static void getAppMetaData(Context ctx, String key) 
        if (ctx == null || TextUtils.isEmpty(key)) 
            return;
        
        try 
            PackageManager packageManager = ctx.getPackageManager();
            if (packageManager != null) 
                ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(),
                        PackageManager.GET_META_DATA);
                if (applicationInfo != null) 
                    if (applicationInfo.metaData != null) 
                        dist = applicationInfo.metaData.getString(key);
                    
                
            
         catch (PackageManager.NameNotFoundException e) 
            e.printStackTrace();
        
    

以上是关于android studio多渠道打包的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio + gradle多渠道打包

ANDROID STUDIO系列教程六--GRADLE多渠道打包

Android Studio多渠道批量打包及代码混淆

[Android Studio 权威教程]多渠道打包和一键完成(全部产品)打包并签名

Android Studio中一套代码多渠道打包

[Android Studio 权威教程]打包生成jks密钥签名Apk多渠道打包