4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
Android配置build.gradle的productFlavors多渠道打包_Z..._CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-24
Android配置build.gradle的productFlavors多渠道打包

Android在分发不同市场的release包时候 在中国经常会遇到各个不同市场需要编译打出一个不同apk包 这些不同的包在一些统计分析SDK中又是必需的 比如友盟统计分析 它需要根据写在Androidmanifest.xml的字段 如果针对每一个渠道都要去修改Androidmanifest.xml的值并重新打包 实在繁琐 最好的办法是在build.gradle里面配置productFlavors 一次性编译生成不同渠道的包 同时完成修改Androidmanifest.xml里面像友盟等第三方要求定义和需要修改的字段。
还有一种需求 比如 如果针对不同的应用市场 需要编译生成不同的App应用名等 这也需要build.gradle里面配置productFlavors实现一次编译 生成不同应用名的apk。
比如productFlavors这么定义

 flavorDimensions zhangphil_demo productFlavors { qq { dimension zhangphil_demo manifestPlaceholders [UMENG_CHANNEL_VALUE: qq , app_name: AppForQQ ] } huawei { dimension zhangphil_demo manifestPlaceholders [UMENG_CHANNEL_VALUE: huawei , app_name: AppForHUAWEI ] } xiaomi { dimension zhangphil_demo manifestPlaceholders [UMENG_CHANNEL_VALUE: xiaomi , app_name: AppForXIAOMI ] } }

同时 Androidmanifest.xml这样定义

 ?xml version 1.0 encoding utf-8 ? manifest xmlns:android http://schemas.android.com/apk/res/android package zhangphil.demo application android:allowBackup true android:icon mipmap/ic_launcher android:label ${app_name} android:roundIcon mipmap/ic_launcher_round android:supportsRtl true android:theme style/AppTheme activity android:name .MainActivity intent-filter action android:name android.intent.action.MAIN / category android:name android.intent.category.LAUNCHER / /intent-filter /activity meta-data android:name UMENG_CHANNEL android:value ${UMENG_CHANNEL_VALUE} / /application /manifest 


meta-data里面定义了诸如像友盟一类统计SDK需要的UMENG_CHANNEL渠道名 ${UMENG_CHANNEL_VALUE}即是在编译阶段由productFlavors定义的UMENG_CHANNEL_VALUE值来替换的。
同时 android:label定义决定了App的名字 这里写成${app_name} 表示android:label的值由定义在productFlavors里面的app_name替换。
这就实现了 针对每一个渠道编译生成对应的App名 对应的渠道名。
在编译阶段 按住Ctrl键 鼠标左键点击选中全部 即可一次性编译出全部渠道的包

\"\"

 

然后一次编译生成全部的包

\"\"


用代码验证生成的包的正确性

package zhangphil.demo;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity { Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView findViewById(R.id.sample_text); ApplicationInfo appInfo; try { appInfo getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); String appName appInfo.loadLabel(getPackageManager()) String appChannel appInfo.metaData.getString( UMENG_CHANNEL textView.setText(appName \\n appChannel); } catch (Exception e) { e.printStackTrace(); } }}


运行其中一个release包的输出

\"\"

 

《Android配置build.gradle的productFlavors编译不同配置的apk包》
链接 https://blog.csdn.net/zhangphil/article/details/83275860
 

\"\" \"\" \"\" 点赞 \"\" \"\" 评论

本文链接: http://createflavours.immuno-online.com/view-689416.html

发布于 : 2021-03-24 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://