【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )
669
2022-05-30
1 文章目的
本文主要帮助想要或者正在用华为软件开发服务Devcloud进行Android开发用户,流畅的使用华为软件开发服务。
2 概述
2.1 Android
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。(摘自百度百科)
2.2 华为软件开发服务DevCloud
官网入口:华为软件开发服务(DevCloud)
华为软件开发服务(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者提供包括项目管理,代码托管,流水线,代码检查,编译构建,测试管理,移动应用测试,部署,发布,CloudIDE,研发协同等基础功能的研发工具服务。覆盖软件开发全生命周期,支持多种主流研发场景,让软件开发更高效。
3 前提条件
3.1 华为云账号
使用华为软件开发服务,首先需要注册一个华为云账号。
3.2 Git客户端
使用git托管代码,在本地需要安装git客户端,与云上代码仓库建立连接。
Git的安装与使用,请参考软件开发服务资料秘籍。
3.3 已经创建好的项目
创建项目
在华为云官网首页-产品-软件开发服务,进入华为软件开发服务首页。
点击右上角“新建”按钮新建项目
输入项目名称,选择开发流程,输入项目描述,点击“新建”按钮即完成了一个项目的创建。点击创建好的项目,进入具体的项目,华为软件开发服务为软件开发者提供了完善的项目管理服务,具体使用方法参见项目管理帮助总览。
4 研发场景概览
4.1 示例项目概述
1.项目名称:V2EX Daily App
2.项目简介:V2EX,是一个汇集各类奇妙好玩的话题和流行动向的网站。本项目通过V2EX提供的API接口,实现在手机端实时获取V2EX提供的各种信息,让你不论身在何处,都可以徜徉在V2EX的话题的海洋中。
3.项目类型:Android App应用
4.开发环境:JDK + android studio + SDK
5 代码托管
华为软件开发服务提供基于Git的代码托管仓库,仓库提供可视化的管理界面,Android开发者可将自己的Android工程代码上传到此仓库中进行代码托管。
代码同步
本文采用的是一个开源的Android demo代码,大家可以通过以下方式进行下载使用。
进入DevCloud的代码广场,在搜索框中输入V2EX点击搜索,如下图所示。
搜索出相应代码后,可以直接通过fork功能,将代码fork到自己新建的项目中,如下图所示。
:fork后代码仓库默认为共有仓库,用户可以到代码托管-设置-基本设置中进行私有仓库切换,如下图所示:
也可以通过代码广场提供的下载功能,将代码下载到本地,然后通过git客户端将代码上传到DevCloud代码仓库。
代码仓库
在代码托管首页面点击创建的代码仓库,可以进入到代码仓库里,这里支持文件在线编辑,仓库提交记录,代码贡献度统计等多种功能,满足各类开发者的需求。
代码仓库的具体使用方式,如密钥配置,代码下载、提交,分支变更、保护等请参考软件开发服务资料秘籍
6 代码检查
可在线进行代码静态检查、代码架构检查、代码安全检查、编码问题检查、质量评分、代码缺陷改进趋势分析,辅助用户管控代码质量
代码质量检查
根据文档配置代码检查任务,在选择规则集时选择想要检查出的Android致命问题规则集、Android严重问题规则集、Android一般问题规则集、Android提示问题规则集(根据自己的情况选择)。
代码检查任务执行完毕,在问题列表中查看代码检查结果,针对每个问题都会给出详细的问题描述和修改建议,修改完毕后,再次执行代码检查任务,查看任务执行结果,形成代码质量改进闭环。
7 持续交付
7.1 编译构建
Android项目需要进行编译构建将源码编译成目标软件包,我们需要通过执行云端编译构建过程将程序打包,进行软件组件的归档发布管理,如果项目有服务器端也方便下个阶段的部署环节直接调取云端构建包执行自动化部署。
编译
进入“构建”首页,点击“新建任务”,进入新建任务界面,按步骤配置构建任务。
在“基本信息”步骤,设置任务名称,配置版本参数,如下图所示。
点击下一步,进入“代码配置”步骤,
在“代码配置”步骤选择需要构建的代码仓库,点击“下一步”,进入“构建配置”步骤。
通过上图可知devcloud目前支持的gradle版本,那在这个项目里我们应该选择哪个版本呢?
:首先,我们进入代码仓库根目录下的gradle文件,如下所示
根据gradle插件跟gradle版本对应表可知,当前项目gradle插件版本较低,软开云不支持相应版本,需更新插件版本
在这里,我们选择gradle3.3,所以对应的我们需要对根目录下的gradle文件,做如下修正:
版本打包归档
在“构建执行配置”步骤添加“归档”步骤,并指定归档文件(这里指定的归档文件是打包命令打包生成的apk文件),这样构建完成可以下载构建生成的软件包。添加“上传软件包到软件发布仓库”步骤可以将构建生成的软件包上传到发布仓库,自动进行软件版本管理。点击“下一步”,进入“构建计划配置”步骤。
定时构建
在“构建计划配置”中可以设置任务的执行计划,可以使构建任务在指定时间执行。点击“保存”即完成构建任务的创建。
构建日志
点击进入构建任务,点击“开始构建”按钮,即开始执行构建,构建过程中,工作空间会显示构建日志,检查构建过程和归档发布过程是否有问题出现。
本项目在初次构建的时候,可能会报以下问题:
问题一:
解决办法:buildToolsVersion导致,将app目录下的gradle文件中buildToolsVersion版本升级,如下图所示。
问题二:
解决办法:根据日志提示,对app目录下的gradle文件做如下修正:
构建成功后可以点击“下载构建包”下载本次构建生成的软件包,如下图所示。
:注意当前编译构建生成的APK包均为非签名APK安装包。
构建历史
点击“构建历史”可以查看历史构建详情,并支持下载历史构建软件包。
:在平时的Android开发中,我们经常会遇到在不同网络环境(比如:开发环境、测试环境)之间的切换等需求,如何优雅的管理网络环境的配置?如果每一次在不同网络环境间切换,都需要更改代码,然而重新打包,那未免有点低效。下面我们提供一种常用的多环境打包的方法,供大家参考。
在app目录下的gradle文件的android配置中,添加如下配置。
修改完毕后,进入编译构建页面,点击开始构建,构建成功后,点击下载构建包,如下图所示,已经可以下载生成的多版本、多环境构建包。
:多版本、多环境构建包已经可以生成了,那如何打签名包呢?首先我们要准备好自己的.jks签名文件,将签名文件放到如下路径中:
然后,在app目录下的gradle文件的android配置中,添加如下配置
修改完毕后,进入编译构建页面,点击开始构建,构建成功后,再次下载的release构建包就是带签名的构建包了。
7.2 发布
软件仓库
软件开发服务提供4种类型的发布仓库,前两种是远程Maven私仓,用于Maven类型构建过程中第三方依赖包的的管理。第三个仓库是mirror镜像仓,镜像了一些构建过程中经常以来的中央仓到后台,提升构建速度,体现云端构建的优势。我们本次demo中应用最后一个编译构建仓库,作为生成的软件包的版本归档管理仓库。
版本管理和下载
由于在构建任务里配置了“上传到发布仓库”步骤,每次构建结束后,可以在发布仓库里就会新增一个本次构建生成的软件包,实现软件版本的自动管理。在配置部署任务时就可以在这里选择要部署的软件包文件了。这里支持将某次构建的软件包下载到本地。
编译构建成功后,去发布仓库页面,确认如下:
7.3 流水线
当所有流程打通之后,设置对应的流水线,将所有流程添加进去,实现自动化的构建发布一键执行。
将需要的任务添加进流水线中,并运行流水线。
7.4 测试
测试管理(TestMan)是面向软件开发者提供的一体化测试解决方案,覆盖测试需求、用例管理、测试任务管理、缺陷管理,多维度评估产品质量,帮助您高效管理测试活动,保障产品高质量交付。
DevCloud跟TestBird合作提供APP 兼容性测试,大家可以根据自己的需要进行机型选取测试。
至此,恭喜您打通了软件开发服务的各服务,完成了Android的demo搭建。
8 附录
8.1 软件开发服务视频教程
【新手训练营】几分钟教你掌握各个服务基本操作
项目管理 配置管理 流水线 代码检查 编译构建 测试管理 部署 发布
【云途进阶课】场景化教学,从实战中玩转软件开发云
Web应用场景——开发一套EHR系统:规划阶段 开发阶段 交付阶段
App应用场景——打造一款趣味交友App:规划阶段 开发阶段 交付阶段
8.2 软件开发服务资料秘籍
Git菜鸟进阶手册
Git图形化工具进阶攻略
8.3 华为云社区Devcloud产品答疑
产品答疑FAQ
软件开发平台 DevCloud 软件开发云
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。