AndroidStudio部署多渠道打包环境(一)

对于游戏来说,需要上架国内很多家应用商店,还有一些小的渠道SDK,大大小小加起来也有几十家了,那么我们部署了多渠道打包环境之后就很方便了。

一 、配置游戏基本参数:在app下面的build.gradle文件里编辑,

android{ 

defaultConfig { 下面定义各种参数

1.、applicationId:包名,

minSdkVersion:最小支持安卓版本

targetSdkVersion:最大安卓支持版本,这个multiDexEnabled true 可以忽略,

versionCode:版本号 

versionName:版本

2. ndk这个 abiFilters 'armeabi-v7a','arm64-v8a' 设置游戏支持的架构,目前主流用的就是这俩

3.manifestPlaceholders:配置AndroidManifest下需要替换的关键字符,例如:

4.配置游戏需要的参数,例如自己定义的gameId还有应用商店的APPID这些参数,这个参数可以扩展,String: 类型,gameId: 字段的key,  8:代表字段的value

二、渠道参数单独配置:还是在android{ 下编辑

1、渠道标识:这个渠道配置中死神来了_official中的official字段要和上面定义的official渠道标识相同,同理死神来了_vivo的vivo字段也要和上面的vivo渠道标识相同

2、定义渠道SDK自己的包名和其他一些要求的参数,这里只写了gameId和APPID,这个可以自己看情况增加,需要注意的是这里增加了的字段,需要在上面1-4讲的地方增加相应字段的默认值。

3、配置不同icon: 

三、对渠道资源库做针对性依赖,这样打出来的APK只包含指定渠道的资源

1、这个vivolibrary依赖库可以用来写SDK接入的逻辑,新建vivolibrary方式是:右键根目录文件夹 new->module->Android Library。再右键空白地方new-> floder,新建文件夹vivo_aar,vivo_aa文件夹用来存放vivo的资源文件,例如aar文件。

2、vivolibrary依赖vivo_aar资源库,

3、vivo_aar资源库目录:因为渠道SDK可能不止一个aar文件,那么可以把多个aar文件都放在vivo_aar目录下,这里需要注要的是每个aar都需要单独引用

4、每个aar的单独引用,复制一个build.gradle文件,.git文件直接忽略。内容如下:

configurations.maybeCreate("default")
artifacts.add("default", file('base-1.7.4.aar'))

5、在项目根目录下的setting.gradle文件里,增加这加些aar的配置声明:

四、读取app下build.gradle文件夹配置的不同渠道参数:

1、在最底层建一个依赖库,声明一个工具类,所有渠道library都依赖他,然后在app的onCreate下的赋值给他:

五、打包不同渠道APK文件

1、找到右侧gradles树:app->other下

2、如下图,点击这俩任务就可以打包了

  • assemble死神来了_officialOfficialRelease official渠道包
  • assemble死神来了_vivoOfficialRelease  vivo渠道包

3.这样的话打出来包就只包含指定渠道SDK资源的了,如果是渠道比较多,大家可以按照前面的方式增加相应渠道,然后配好参数就可以了。

六、优化打包脚本

1. 如果要出的包实在太多了,一次出几十个包,那么在gralde树里找任务很麻烦,那么我们可以在根目录下的build.gradle文件里配置打包任务,这个圈出来的任务就是我们刚才在gradle树里找到的需要执行的任务。把他复制出来配置在我们建的task下面,比如这个qudao3Release就是我刚才建的任务

2. 在gradle树里找到我们编辑的qudao3Release任务,项目根目录下的Tasks->other->qudao3Release

3. 双击执行任务,就可以打包了。

4、源码文件:https://gitee.com/heavenly-brothers/youxisdk.git

———————— The end ————————

码字不易,如果您觉得这篇博客写的比较好的话,可以赞赏一杯咖啡吧~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/899309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java实现类似C++的union

目录 1.引言 2.实际案例 3.java实现 1.引言 在C中有一种用户自定义数据类型叫联合体union,它允许你在相同的内存位置存储不同的数据类型。与结构体(struct)不同,结构体中的所有成员都占用各自的内存空间,而 union 的…

递归算法之快速幂(Exponentiation by Squaring)详细解读

快速幂(Exponentiation by Squaring)是一种用于快速计算大整数的幂次的算法。传统的幂运算需要进行 nnn 次乘法,而快速幂通过将幂次指数二分,减少了所需的乘法次数,使得计算复杂度从 O(n) 降低到 O(log⁡n)。它广泛应用…

【图论】(五)最短路径算法(D / BF / SPFA / F / A*)

最短路径算法(D / BF / SPFA / F / A*) 1. 最短路径之dijkstra(D算法)思路模拟过程程序实现拓展 2. dijkstra算法堆优化思路程序实现 3. Bellman_ford 算法(BF算法)松弛模拟过程拓展 4. Bellman_ford 队列优…

数据结构-B树和B+树

一、B树 一个节点包含多个key-value值 假设一棵B树由M个参数构建,我们将其称为M阶B树 每个节点最多有M-1个key-value值,并且key值升序排列,每个节点最多能有M个叉 1.1 分类 二节点 三节点 四节点 五节点 key: 给每一个文件进行标号&…

关于iPhone 16 Pro评测视频评论区特征的多维度分析

1.项目背景 随着智能手机的迅速发展,消费者在选择新设备时越来越依赖于网络评价和用户反馈,B站作为中国领先的视频分享平台,聚集了大量科技评测内容,其中UP主的评论区成为用户讨论和交流的重要场所,特别是在iPhone 16…

论文阅读:Guided Linear Upsampling

今天介绍一篇有趣的文章,Guided Linear Upsampling,基于引导的线性上采样,这是发表在 ACM transaction on Graphic 的一篇工作。 Abstract 引导上采样是加速高分辨率图像处理的一种有效方法。在本文中,文章作者提出了一种简单而…

Jetpack架构组件_LiveData组件

1.LiveData初识 LiveData:ViewModel管理要展示的数据(VM层类似于原MVP中的P层),处理业务逻辑,比如调用服务器的登陆接口业务。通过LiveData观察者模式,只要数据的值发生了改变,就会自动通知VIEW层&#xf…

excel判断某一列(A列)中的数据是否在另一列(B列)中

如B列如果有7个元素,在A列右边的空白列中,输入如下公式: COUNTIF($B$1:$B$7,A1), 其中,$B$1:$B$7代表A列中的所有数据即绝对范围,A1代表B列中的一个单元格.

Opensearch集群部署【docker、服务器、Helm多种部署方式】

操作系统兼容性 我们建议在 Red Hat Enterprise Linux (RHEL) 或使用systemd的基于 Debian 的 Linux 发行版上安装 OpenSearch ,例如 CentOS、Amazon Linux 2 和 Ubuntu Long-Term Support (LTS)。OpenSearch 应该适用于大多数 Linux 发行版,但我们只测…

ctfshow-文件上传-151-161

CTFshow文件上传 PHP文件上传:1、代码思路 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行,且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…

react 基础学习笔记

1.react 语法 ①数据渲染 函数组件将HTML结构直接写在函数的返回值中 JSX只能有一个根元素 JSX插值写法 插值可以使用的位置 1.标签内容; 2.标签属性 JSX 条件渲染:三目运算符; JSX根据数据进行列表渲染:map()方法&#x…

elementUI进度条el-progress不显示白色

效果图 通过设置百分比为100,动态修改进度条的宽度完成 <template><div class"myProgressBox"><div class"index">{{ index }}</div><div class"typeTitle">{{ typeTitle }}</div><div class"twoP…

Java求最大值 C语言局部变量 全局变量

1. public static void main(String[] args) {int[] arr {25, 24, 12, 98, 36, 45};int max arr[0];//不能写0for (int i 1; i < arr.length; i) {if (arr[i] > max) {max arr[i];}}System.out.println(max);} }//循环为零&#xff0c;降低效率&#xff08;就是自己…

autMan框架对接Kook机器人

一、创建kook机器人 KOOK 二、获取机器人token 三、填写autMan参数并重启 四、将机器人加入服务器 五、效果图 回复

技术成神之路:设计模式(二十二)命令模式

介绍 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;允许将请求&#xff08;命令&#xff09;封装为对象&#xff0c;从而使您可以使用不同的请求、队列或记录请求日志&#xff0c;以及支持可撤销操作。 1. 定义 命令模式将一个请求封装为一个…

Qt中使用线程之QRunnable

1、自定义1个子类继承自QRunnable 2、重写run方法&#xff0c;编写子线程的业务逻辑 3、使用QThreadPool的全局方法来开启这个线程 4、线程的回收不需要关注&#xff0c;由QThreadPool处理 5、缺点&#xff1a;无法使用信号槽机制 6、适合一些不需要和主线程通信的耗时的任…

JVM 加载 class 文件的原理机制

JVM 加载 class 文件的原理机制 JVM&#xff08;Java虚拟机&#xff09;是一个可以执行Java字节码的虚拟机。它负责执行Java应用程序和应用程序的扩展&#xff0c;如Java库和框架。 文章目录 JVM 加载 class 文件的原理机制1. JVM1.1 类加载器1.2 魔数1.3 元空间 2. 类加载2.1 …

一篇文章快速认识 YOLO11 | 目标检测 | 模型训练 | 自定义数据集

本文分享YOLO11的目标检测&#xff0c;主要内容是自定义数据集、数据标注、标签格式转换、模型训练、模型推理等。 目录 1、数据标注 2、Labelme的json转为YOLO的txt 3、配置YOLO11代码工程 4、数据集yaml配置文件 5、YOLO11模型结构配置文件 6、编写训练代码 7、开始训…

基于neo4j旅游领域智能问答与图片展示系统

如果你正在苦恼选什么项目做毕业设计&#xff0c;或者对旅游、人工智能、数据可视化感兴趣&#xff0c;那么千万别错过这款基于Neo4j的互联网智能问答与旅游图片展示系统&#xff01;&#x1f60e;它不仅实用&#xff0c;还拥有丰富的数据资源&#xff0c;技术亮点也是满满的。…

【数据结构】快速排序(三种实现方式)

目录 一、基本思想 二、动图演示&#xff08;hoare版&#xff09; 三、思路分析&#xff08;图文&#xff09; 四、代码实现&#xff08;hoare版&#xff09; 五、易错提醒 六、相遇场景分析 6.1 ❥ 相遇位置一定比key要小的原因 6.2 ❥ 右边为key&#xff0c;左边先走 …