跳转到内容
首页
Docs/构建 Android 应用

构建 Android 应用

PocketCode 可以在你的手机上把用 Kotlin 编写的 Android 项目编译成 APK 或 AAB。不需要 Gradle,也不需要服务器。这个按钮是免费的,需要应用 1.1.0 或更高版本、Android 9 或更新系统和 64 位处理器。

它能做什么

打开一个 Android 项目,点击编辑器工具栏里的 Android 图标 构建 APK。这个按钮只出现在 Android 项目中,也就是带有 app/build.gradle.kts 和 com.android.application 插件的项目。命令面板里的说明是:在手机上把这个 Android 项目编译成 APK。

你可以

  • 构建 调试版 APK 在手机上试用,使用调试密钥签名。
  • 构建 发布版 APK,经过优化并用你自己的密钥签名,可在 Google Play 之外分发。
  • 构建 发布版应用包(AAB),这是 Google Play 要求的格式。
  • 使用 Google Maven 和 Maven Central 上的 Maven 库,支持 libs.versions.toml 版本目录。它们在第一次构建时下载,之后保存在手机上。
  • 编译时可以离开应用。通知栏会显示构建正在进行。
  • 在 Android Studio 中打开同一个项目:模板就是标准的 Gradle 项目。

你不能,以及原因

  • 编译 .java 文件。它们会显示为 手机上暂不支持。​尚未提供
  • 读取 Groovy 的 build.gradle。只支持 Kotlin DSL,也就是 build.gradle.kts。​尚未提供
  • 在 PocketCode 里直接安装 APK。安装由 Android 完成,从“文件”应用中打开。​有意为之
  • 把 AAB 安装到手机上。它只用于 Google Play Console。​有意为之

创建 Android 项目

打开 项目,点按 新建 进入 新建项目。里面有两个 Android 模板。两者都是标准的 Gradle 项目,所以也能在 Android Studio 中打开。

模板你会得到
Android App (Activity)一个 Kotlin 的 Android 应用,可在手机上构建出 APK。
Android App (Compose)同上,使用 Jetpack Compose。
每个模板都带有一个 release 块,其中 isMinifyEnabled = false,并已接好 proguard-rules.pro 文件。要开启压缩,请看 R8 一节。

构建调试版 APK

调试版 APK 是在手机上试用应用的快捷方式。点击 构建 APK,在 构建应用 面板里选择 调试版 APK,再点击 构建。

  1. 1检查项目 — 读取 Gradle 文件和项目结构。
  2. 2下载库 — 仅此一次,之后会保存在手机上。
  3. 3资源 — 准备应用资源。
  4. 4编译 Kotlin — 编译你的代码。
  5. 5为 Android 准备库 — 仅此一次,之后会保存下来。
  6. 6打包 — 组装 APK。
  7. 7签名 — 用调试密钥签名。

面板会随进度显示这些步骤,并带有 查看日志 和 取消。第一次构建耗时较长,面板会提示。如果你取消,不会留下半成品:缓存和 APK 只会完整写入。

第一次构建

  • Kotlin 工具(kotlinc 和 d8)不在应用里。第一次构建 APK 或运行 .kt 文件时,Google Play 会下载一次,约 119 MB。你会看到 正在准备构建工具 和 正在从 Google Play 下载:X / Y,仅首次需要。
  • 使用移动数据时,Google Play 可能会先询问:Google Play 需要你同意才能下载。 点击 继续下载。
  • 这些工具需要从 Google Play 安装的应用。
  • 如果在工具就绪前运行 .kt 文件,Kotlin 运行器会显示 Kotlin 构建工具 卡片:从 Google Play 下载一次,约 119 MB。点击 下载(约 119 MB)。完成后,你的文件会自动重新运行。

需要多长时间

  • 在 Galaxy S24 上,Compose 模板的第一次调试构建用了 1 分 25 秒,其中包括下载工具。APK 为 7.8 MB。
  • 在 Galaxy S24 上,工具已安装时,一个 Kotlin hello world 的运行时间不到 1 秒(266 毫秒)。
  • 其他手机会更快或更慢。这些是实测数据,不是承诺。

安装 APK

构建结束后,面板会显示 APK 已就绪,以及耗时、大小和所用密钥。

  1. 1点击 保存到“下载”。文件会保存到 Download/PocketCode/<项目名>-debug.apk。发布版构建的文件名以 -release.apk 或 -release.aab 结尾。
  2. 2也可以点击 分享… 发送给其他应用。在 Android 9 上,无法从这个界面保存到“下载”,请使用 分享…。
  3. 3在“文件”应用中打开该文件。第一次安装时,Android 会请求安装未知来源应用的权限。允许后即可安装。
PocketCode 不会安装 APK。安装由 Android 完成,请从“文件”应用中打开。

发布版 APK 和 AAB

在 构建应用 面板里选择类型。发布版构建需要发布密钥。没有密钥时,面板会提示:你还没有发布密钥。请创建一个,或导入你已在使用的密钥。在添加密钥之前,构建 一直是灰色的。

选项用途
调试版 APK用于在手机上试用,使用调试密钥签名。
发布版 APK经过优化并用你自己的密钥签名,可在 Google Play 之外分发。
发布版应用包(AAB)Google Play 要求的格式,无法直接安装到手机上。

构建完成后

  • 发布版 APK 会保存为 <项目名>-release.apk。
  • AAB 完成后,面板会提示:请在 Google Play Console 中上传此文件。应用包无法直接安装到手机上。
  • 在 Galaxy S24 上,Compose 模板的发布版构建在启用 R8 的情况下用了 44 秒,APK 为 1.2 MB。

发布密钥

发布密钥用来给你的应用签名。要管理密钥,点按 构建 APK,选择发布版 APK 或 AAB,然后在签名密钥框里点按 管理密钥。在那里可以创建、导入、导出或删除密钥。

创建密钥

  • 选择 创建密钥。它会生成 2048 位的 RSA 密钥,有效期 30 年,加密保存在手机的 Android Keystore 中。
  • 默认别名是 upload。密码至少 6 个字符。
  • 对于新应用,Google Play 不接受在 2033 年 10 月 23 日之前到期的密钥。如果你的密钥属于这种情况,应用会提醒你。

导入密钥

  • 选择 导入密钥,然后选一个 .p12 或 .pfx 文件。只支持 PKCS12,它是 Android Studio 和 keytool 的默认格式。
  • 旧的 .jks 文件需要先转换:keytool -importkeystore。
  • 如果密码不对,你会看到 密码错误。

管理密钥

操作作用
导出副本…保存一个标准的 .p12 文件,可用 keytool 或 Android Studio 打开。需要密码:请用 显示密码。
显示密码显示这把密钥的密码。
删除确认后删除密钥:删除此密钥?
请备份密钥及其密码。一旦丢失,你将永远无法在 Google Play 上更新你的应用。换了手机或恢复数据后,需要重新导入 .p12。

用 R8 压缩代码

R8 会压缩并混淆发布版构建的代码。只有当 app/build.gradle.kts 的 release 块里设置了 isMinifyEnabled = true,它才会生效。面板会提醒你这一点。

  1. 1打开 app/build.gradle.kts,在 release 块里设置 isMinifyEnabled = true。
  2. 2构建 发布版 APK 或 发布版应用包(AAB)。
  3. 3R8 运行后,结果里会提示:R8 已混淆代码。请保留 app/build/outputs/mapping/release/mapping.txt。
  • 请保留 mapping.txt。Play Console 用它来解读崩溃报告。
  • 读取或写入文件的 R8 规则(例如 -printmapping 或 -include)出于安全考虑会被拒绝。
  • 使用 Compose 时,R8 需要内存:在 Galaxy S24 上最多约 335 MB。内存较小的手机上可能会失败。

目前不支持的内容

目前在手机上构建还做不到的事。

  • .java 文件暂时无法编译。它们会显示为 手机上暂不支持,并附上文件和行号。​尚未提供
  • 不支持 Groovy 的 build.gradle。请使用 build.gradle.kts。​尚未提供
  • 构建无法识别的内容会显示为 手机上暂不支持。不影响结果的设置会显示为 设置已忽略。​尚未提供
  • 在内存较小的手机上,R8 可能会内存不足,使用 Compose 时更常见。​设备
  • 读取或写入文件的 R8 规则会被拒绝。​有意为之
  • PocketCode 不会安装 APK。你需要从“文件”应用中打开它。​有意为之
  • 构建工具来自 Google Play,所以应用必须从 Google Play 安装。​Google Play
  • 第一次构建需要联网,以下载工具和库。​需要网络

清除构建缓存

构建会把库和已编译的文件保存在手机上,让之后的构建更快。要释放这部分空间:

  1. 1打开 设置。
  2. 2点击 清除构建缓存:释放为构建 Android 应用而保存的库和已编译文件。
  3. 3下一次构建会重新下载这些库。

常见问题

常见问题和处理办法。

无法从 Google Play 下载构建工具:没有网络连接。请在联网后重试。

这些工具约 119 MB,第一次使用时从 Google Play 获取。请连接网络后重新构建。使用移动数据时,如果 Google Play 请求你同意,请点击 继续下载。

可用空间不足,无法安装构建工具。

先在手机上腾出一些空间,然后重新构建。如果构建缓存很大,可以在 设置 里使用 清除构建缓存 释放。

Google Play 无法向此 PocketCode 副本提供构建工具,需要从 Google Play 安装本应用。

这些工具只能通过 Google Play 获取。请从 Google Play 安装 PocketCode,而不是通过文件安装,然后重新构建。

Google Play 未能安装构建工具。

稍后再试。如果一直失败,请确认 Google Play 是最新版本,并且有足够的空间用于安装。

手机上暂不支持

构建遇到了目前还做不到的内容,并给出文件和行号。最常见的是 .java 文件和 Groovy 的 build.gradle。请把代码改成 Kotlin,并使用 build.gradle.kts。

密码错误。

你要导入的 .p12 或 .pfx 文件的密码不对。请用创建密钥时设置的密码再试一次。

我的 .jks 密钥无法导入

只能导入 PKCS12(.p12 或 .pfx)。请在电脑上用 keytool -importkeystore 转换旧文件,再导入转换后的文件。

“构建”按钮是灰色的

你选了发布版构建,但还没有发布密钥。请创建一个,或导入你已在使用的密钥。

R8 在内存较小的手机上失败

使用 Compose 时,R8 需要内存,在 Galaxy S24 上最多约 335 MB。请关闭其他应用后重试。内存很小的手机上仍可能失败。调试版 APK,或 isMinifyEnabled = false 的发布版构建,不会使用 R8。

我无法保存到“下载”

在 Android 9 上,无法从结果界面保存到“下载”。请使用 分享…。

APK 无法安装

PocketCode 不会安装它。请在“文件”应用中打开该文件,并在 Android 询问时允许安装未知来源应用。AAB 无法安装到手机上。

手机空间快满了

在 设置 里使用 清除构建缓存。下一次构建会重新下载这些库。