AndroidStudio打包处理

2024-06-24 10:18
文章标签 处理 打包 androidstudio

本文主要是介绍AndroidStudio打包处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AndroidStudio非常强大,公司最近有一个需求是要实现对一个APP进行多个版本的打包,而且可以同时安装在手机上。这个需求详细一点的描述是:公司有一个APP,有多个开发商要使用我们的APP,为了大家都想有一个自己的APP,而且图标不一样,app名字不一样,背景不一样等。我查询了一下资料发现,在AndroidStudio的gradle是可以配置的。在此特意写一篇文章记录分享。

配置签名

首先编写好签名文件,之后保存在自己的Module中,之后进行在build.gradle中添加一下的代码

   android{ //签名signingConfigs { //标准版release { //打包可以所在的路径storeFilefile("../key/your_key_file.jks") //AndroidStudio进行打包时输入的密码storePassword "store_passwrord_value" //key的别名keyAlias "app_alias_value"keyPassword "key_pwd_value"} //预览版pre {storeFile file("../key/your_key_file.jks")storePassword "store_passwrord_value"keyAlias "app_alias_value"keyPassword "key_pwd_value"}}}

创建打包类型

创建需要打包的类型,对应的公司(暂时这样理解)等,在这里我们虚拟两个公司:owant,ola,添加代码如下,主要使用buildTypes的模块,创建需要创建的模块。

    buildTypes {//owant公司owant{minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}//ola公司ola{minifyEnabled falseshrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}

动态改变APP的个别参数

有了创建类型后,我们需要对应的类型进行动态更改一些参数,譬如,APP的包名,使得APP能同时安装在同一台手机上,owant的APP名字为欧旺,ola的APP名字为欧拉,还有APP的图标显示不一样的图标。代码如下,其中对于动态字段是获取是getResources().getString(R.string.companyName)和在string文件写的一样。

productFlavors {//必须你输出是在你的buildType的类型为后缀//欧旺的最终版release_owant {//包名applicationId "com.owant.app"//字符改变main xml的文件字段值manifestPlaceholders = [app_name         : "欧旺",icon_value       : "@drawable/logo_owant"]//在java代码中使用的是getResources().getString(R.string.companyName)//目前只支持字符的动态resValue("string", "companyName", "欧旺有限公司")}//欧拉的预览版pre_ola {applicationId "com.ola.app"manifestPlaceholders = [app_name         : "欧拉",icon_value       : "@drawable/logo_ola"]resValue("string", "companyName", "欧拉有限公司")}}

打包输出文件命名

对于apk的输出的命名进行设置的代码如下:

android{android {//打包输出文件applicationVariants.all { variant ->variant.outputs.each { output ->output.outputFile = new File(output.outputFile.parent,"Owant_${variant.productFlavors[0].name}_v${variant.versionName}_" + buildTime() + ".apk")//  "Healthcare_${variant.productFlavors[0].name}_v${variant.versionName}" + ".apk")}}}}
//获取系统时间
def buildTime() {def df = new SimpleDateFormat("yyyyMMdd")df.setTimeZone(TimeZone.getDefault())return df.format(new Date())
}

打包后对APP进行不必要资源的清理

进行了以上的实现后,发现我们的需求大部分都可以实现的。但是有一个问题。就是对于APP的背景改变问题,在进行打包之前,我是有一个思路的就是采用zip技术进行动态改变APK包的资源(apk是采用zip压缩,解压后再压缩对签名文件没有破坏),但是后来发现对于字符的管理处理起来发现不行。后来查询了很多网上的资源,发现AndroidStudio自带的可以实现部分的。但是对于背景呢,我们必须有两个背景图片如logo_ola.pnglogo_owant.png在drawable文件下(app的图标也是),发现我们的APK越大越大。这是我的解决方案是:

采用AndroidStudio的gradle进行字符管理
采用zip压缩技术进行资源清理,删除无关的数据

最终的脚本代码,我还没有写。你也可以用压缩工具进行删除。希望对大家有帮助。

这篇关于AndroidStudio打包处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089865

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件