写给非开发者: 如何打包一个 Android apk 包

我们公司有个测试部门的同事, 希望在获得了Android工程源码的情况下, 打包出一个 Android apk .

很多在 github / gitee 上获取到源码的小伙伴可能也有此类需求.

我觉得可以从零开始介绍一下如何一步一步将一个 apk 打包出来, 那么就开始吧.

一、配置环境

如果你的电脑没有一些必要的工具, 那么打包根本无从谈起, 那么打包 apk 需要依赖于哪些工具呢?

  1. JDK

众所周知, Android 可以用 Java / Kotlin 编写代码, 但是 Java / Kotlin 是一门高级语言, 编写好的代码需要进一步转化为一种二进制格式的文件, 然后 Android 系统才能够正确的执行我们的逻辑.

这个转化开始的过程依赖于 JDK , JDK 有很多不同的实现, 对于打包者而言, 主要关注的是 JDK 的版本, 这个版本不是越高越好, 需要判断项目依赖于那个版本.

Android 一般指定 JDK 1.8 , 如果你不确定, 可以查看源码中的 build.gradle(build.gradle.kts) 文件, 里面会有一个配置项: compileOptions , 跟着这个配置来选择 JDK 就行了.

至于发行 JDK 的有很多, 可以选择 Oracle / Azul , 我一般选择 Azul , 因为 Oracle 老是要注册登录.

下载安装后, 需要配置一下环境变量, 需要配置两个:

  • 添加一项名为 JAVA_HOME 的环境变量, 值配置为 JDK 的安装路径
  • path 添加一个值 %JAVA_HOME%\bin

配置完成后, 尝试在终端中调用 java -- version , 可以的话这一步就完成了.

  1. Android SDK

JDK 只能处理 Java / Kotlin 代码的第一阶段, 要运行在 Android 系统中, 还需要用到 Android SDK 进一步处理代码.

下载之前, 先在自己电脑磁盘中找到一块比较充裕的分区, 然后创建一个文件夹(无空格纯英文路径!!)用来存放 Android SDK 数据, 例如: D:\tools\Android\sdk.

然后这个文件夹中再创建一个文件夹, 命名为 cmdline-tools , 完整路径示例: D:\tools\Android\sdk\cmdline-tools.

接下来开始下载 SdkManager 工具, 这个工具可以非常方便的管理 Android SDK , 请在这个 页面 中获取, 向下滚动页面找到 仅限命令行工具(Command line tools only) 标题, 下载自己操作系统的版本.

下载完成后, 将其解压, 解压后是一个名为 cmdline-tools 的目录, 请将它改为 latest , 请注意, 必须为该名字!

然后将 latest 目录整个剪切到之前创建的目录中, 剪切完后路径示例: D:\tools\Android\sdk\cmdline-tools\latest.

完成后需要配置环境变量:

  • 添加一项名为 ANDROID_HOME 的环境变量, 值配置为第一个目录的完整路径: D:\tools\Android\sdk (请根据你实际情况配置)
  • 添加一项名为 ANDROID_CMDLINE_TOOLS 的环境变量, 值配置为: %ANDROID_HOME%\cmdline-tools\latest
  • path 列表添加一个值 %ANDROID_CMDLINE_TOOLS%\bin

完成后, 可以尝试在终端中调用 sdkmanager.bat , 如果遇到一些许可请求, 输入 Y + Enter(回车键) 同意即可.

下载完成后, 即可通过 SdkManager 加载需要用到的 Android SDK , 此页面 是 SdkManager 的使用说明, 可以参考.

要完成打包, 我们依赖于以下工具:

  • platforms
  • build-tools
  • platform-tools
  • ndk(可选)

具体要下载哪些版本则一样要参考你的项目源码配置, 同样查看源码中的 build.gradle(build.gradle.kts) 文件, 里面会有一个配置项: compileSdk .

如果该配置为 34, 那么 platforms 即: platforms;android-34, 而 build-tools 需要参考这个 页面 , 找到 34 打头的最新版本, 例如我现在看到的是 34.0.0 , 即: build-tools;34.0.0 , platform-tools 是固定的: platform-tools .

我们在终端中执行以下命令来加载需要的 Android SDK : sdkmanager.bat platform-tools platforms;android-34 build-tools;34.0.0

等待他加载完毕即可.

至此, 环境配置已经完成.

二、打包

现在主流的 Android 项目都是使用 Gradle 作为打包工具, 较老的版本会用到 Maven , 我们这里只介绍 Gradle .

一个项目中, 并不是所有的代码都是内部开发者自己写的, 还依赖于很多第三方提供的 SDK , 例如: 网络, 图片, 视频...

Gradle 可以帮助开发者管理这些依赖, 总而言之, 就是一个工具搞定.

较大的开源软件如果文档写得好, 则会提供一些命令说明, 只要上一步中的环境配置好了, 那么按照说明一步一步走即可打包出来, 如果没有说明, 则需要查看源码了.

我们的目的就是: 找到一个项目中我们需要的 应用 module , 然后将这个 module 打包出来.

module 是 Gradle 的一个概念, 说白了就是一个文件夹, 包含了一些代码, 配置文件之类的. 里面有个关键的配置文件是: build.gradle(build.gradle.kts) .

注意: 项目根目录中也包含了一个 build.gradle(build.gradle.kts) 文件, 这个我们可以忽略它.

module 分类两类, 应用(application) 和 库(library) .

应用 module 的特点是在他的 build.gradle(build.gradle.kts) 中, 导入了一个名为 com.android.application 的插件(plugin) , 你只要找到 plugins 配置, 确认是导入了 有名字包含 application 字样的插件, 那么它就是 应用 module . 与之相反的是 库 module 一般是导入了 com.android.library 插件.

如果我们确定了 应用 module 的名字, 就可以打包了, 假设这个 module 的名字为 app , 我们在终端中定位到项目目录, 然后执行 gradlew.bat clean app:assembleDebug 命令, Gradle 就会开始自动下载依赖, 并且开始执行打包.

如果一切顺利, 打包后的 apk 文件会存放在 ..\app\build\outputs\apk\debug 中.

总结

以上是一个常规的打包流程, 希望可以帮助到各位.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容