APP打包的几种方法
我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情
第一代打包
- 方法
直接点击运行按钮,系统在app\build\outputs\apk下生成了apk文件,然后直接拿这个apk文件就对外发版了。
原因是buildTypes里面的release和debug都用得同一个release版本的key。 - 优点
简单、粗暴、快速、高效 - 缺点
- 编译出来的都是debug版本的,代码里面如果需要根据debug和release版本进行区分则做不到
- debug和release的keystore未做区分
- 打包出来的app未能从表面上区分正式版还是测试版
第二代打包
- 方法
将打包过程用文档记录流程正规化管理起来,区分debug版本和release版本的打包方式,引入区分正式服和正式服apk标签,引入proguard混淆功能、引入第三方资源优化打包工具AndResGuard。 - 优点
- Debug:Build-Build APK, Release:Build-Generate Signed APK
- 根据不同的res区分正式服、测试服
- 完善混淆脚本
- 对接第三方打包优化工具
- 缺点
- application和library之间未做到自动关联,需要手工操作
- 没有使用flavor方式进行多渠道打包
第三代打包
- 方法
继续优化打包脚本,将application和library之间的配置文件自动关联起来,并且使用flavor完善多渠道打包 - 优点
- 将application和library自动关联,无需在application和library之间进行手工配置
- 引入flavor,规范化多渠道打包流程
- 缺点
- 第三方打包优化工具存在一定的bug需要特别留意,比如:
https://github.com/shwenzhang/AndResGuard/issues/162
APP打包的几种方法相关推荐
- Linux平台应用打包的几种方法(qt/dll --> exec|appimage)
首先,linux平台常用的打包方式,就是通过ldd查看依赖库,然后将依赖库的依赖复制过来,然后写一个脚本,让用户在运行的时候,运行这个脚本,然后这个脚本设置好环境变量(主要是将依赖库添加到环境变量中) ...
- App打包的两种方式
在HBuilder上对APP提供了两种打包方式,云打包和本地打包,下面主要对这两种打包方式做个介绍 两者的区别:云打包相对简单,但是每天最多只能打包五次,而且在高峰期打包时间可能会很长,本地打包相对比 ...
- Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例
感谢分享 http://www.7po.com/thread-564068-1-1.html 第一种方法: 采用Android自带的直接控制焦点上下左右的方法.这种方法的前提是必须知道每个view的i ...
- App渠道打包的两种方法
我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买. 书籍详情请见:https://blog.csdn.net/ddnosh/article/ ...
- Android实时打印kernel和App log(两种方法)
1.第一种 #!/system/bin/sh while [ 1 ] do sleep 1 dmesg >> kernel.log && logcat -v time &a ...
- day04 爬取豌豆荚app数据的两种方法
今日内容:方法一 bs4爬取豌豆荚 爬取豌豆荚: 1.访问游戏主页 https://www.wandoujia.com/category/6001 2.点击查看更多,观察network内的请求 - 请 ...
- 利用IDEA将项目打包(两种方法)
IDEA将java和scala混合打包 1.首先需要创建maven项目 2.在maven项目管理中要加上相关依赖,我这里把所有的东西都贴上来 <?xml version="1.0&qu ...
- android app 镜像的几种方法
目录 1.概述 2.镜像相关问题的分析 3.镜像功能的相关实现 3.1 Rotate3dAnimation的镜像方法
- android 服务 重启,Android APP重启的几种方法
项目开发过程中需要实现重启App的功能,常用的可行方案有: 1. 使用 FLAG_ACTIVITY_CLEAR_TOP : new Handler().postDelayed(new Runnable ...
最新文章
- 15-数据结构探险系列-图篇
- python编程入门经典 评分-关于 Python 的经典入门书籍有哪些?
- Linux显示5 9行的数据,Linux复习
- AndroidManifest.xml中Activity ConfigChanges属性的用法
- 数据结构(5) -- 图
- 16年微软/腾讯云/华为云MVP是怎样炼成的
- 程序员一定要提升技术之外的能力
- docker安装的PHPFPM容器Redis扩展
- vuex commit 模块_一分钟上手Vuex
- freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
- 数据库基本SQL语句大全
- java hmget 最大值,【Redis】基本数据类型及命令操作(超详细)
- 项目owner看这里,MaxCompute全表扫描新功能,给你“失误”的机会
- Chrome历史版本下载地址
- linux snoop抓包命令,snoop抓包简介
- OKR-Periods of Words
- 2013 HTML5 峰会,HTML5 守望者的盛宴
- 238页(15万字)BH XXX县10MW渔光互补可研报告_V1.1
- 图书管理系统 (C语言数据结构)
- 电磁场学习一__导论
热门文章
- WIN10修改时间到2050年以后,出现屏幕闪烁资料搜索
- 鸿蒙osbeta版本审核要多久,已有版主回复我,鸿蒙2.0beta版审核周期,大家耐心等待吧...
- 小妲己智能机器人要连接wifi吗_科沃斯扫地机器人怎么连接wifi
- sqlyog如何查看mysql的版本_【转】烂泥:查看MySql版本号命令
- js去除html空格字符,js去掉html标签和去掉字符串文本的所有的空格
- C++封装一个音乐播放按钮
- 基于Windows API的VC++串口通信详解
- 佳能发布19um像素的全高清视频传感器
- 几款常用的SSH工具
- 用Redis作为消息队列的使用方法——附C#源码