APP打包的几种方法

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

第一代打包

  • 方法
    直接点击运行按钮,系统在app\build\outputs\apk下生成了apk文件,然后直接拿这个apk文件就对外发版了。
    原因是buildTypes里面的release和debug都用得同一个release版本的key。
  • 优点
    简单、粗暴、快速、高效
  • 缺点
  1. 编译出来的都是debug版本的,代码里面如果需要根据debug和release版本进行区分则做不到
  2. debug和release的keystore未做区分
  3. 打包出来的app未能从表面上区分正式版还是测试版

第二代打包

  • 方法
    将打包过程用文档记录流程正规化管理起来,区分debug版本和release版本的打包方式,引入区分正式服和正式服apk标签,引入proguard混淆功能、引入第三方资源优化打包工具AndResGuard。
  • 优点
  1. Debug:Build-Build APK, Release:Build-Generate Signed APK
  2. 根据不同的res区分正式服、测试服
  3. 完善混淆脚本
  4. 对接第三方打包优化工具
  • 缺点
  1. application和library之间未做到自动关联,需要手工操作
  2. 没有使用flavor方式进行多渠道打包

第三代打包

  • 方法
    继续优化打包脚本,将application和library之间的配置文件自动关联起来,并且使用flavor完善多渠道打包
  • 优点
  1. 将application和library自动关联,无需在application和library之间进行手工配置
  2. 引入flavor,规范化多渠道打包流程
  • 缺点
  1. 第三方打包优化工具存在一定的bug需要特别留意,比如:
    https://github.com/shwenzhang/AndResGuard/issues/162
### 打包 Docker 镜像的方法 #### 使用命令行工具构建镜像 通过命令行可以方便地创建基于现有应用程序的 Docker 镜像。对于任何类型的项目,无论是Java还是其他编程语言开发的应用程序,都可以采用如下方式来构建: ```bash docker build -t firstdocker . ``` 这条命令中的`firstdocker`代表所要创建的新镜像的名字,而句尾的`.`表示Dockerfile位于当前工作目录之下[^1]。 针对特定版本控制需求的情况,还可以指定标签作为版本号的一部分,例如: ```bash docker build -t test:v1.0 . ``` 这里`test`是自定义的镜像名称,`:v1.0`则是给定的具体版本编号;同样地,结尾处的`.`表明Docker将会在当前位置查找所需的配置文件[Dockerfile][^2]。 #### 将 Java 应用程序容器化 当涉及到Java应用时,除了上述基本流程外还需要注意一些细节。为了确保能够顺利复制编译后的`.jar`文件到最终映像里,在编写Dockerfile的时候应该将其放置于工程根目录——即与POM.xml处于同一级别位置上。这样做可以让COPY语句更简洁有效,避免不必要的相对路径设置: ```Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 这段脚本假设目标可执行Jar已经存在于项目的target子文件夹中,并且会自动选取该目录下的唯一一个满足模式匹配条件(`*.jar`)的文件进行拷贝操作[^3]。 #### 利用IDE插件简化部署过程 某些集成开发环境提供了专门用于辅助完成这一任务的功能扩展或者内置支持。比如IntelliJ IDEA就集成了两种不同的方案帮助开发者快速实现从源码到可用容器的整体迁移:一种是由Spotify维护的官方Maven插件;另一种则来自Fabric8团队贡献的企业级解决方案。这两种途径都能极大程度减少手动干预次数,提高工作效率的同时也降低了人为错误发生的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值