🎬 开场白
在使用 uni-app 构建 Android 应用时,开发者常面临云打包速度慢、调试受限、包体偏大或不符合应用市场要求等问题。相比之下,使用 Android Studio 离线 SDK 打包可以完全掌控构建流程、本地调试、包体优化和发布适配,更适合中大型项目或对性能有要求的正式发布。如果团队预算充足,也可以考虑云打包增值服务,以获得更快的构建速度和额外支持。
区别 | HBuilderX 云打包 | Android Studio 离线 SDK 打包 |
---|---|---|
构建速度 | 依赖网络,可能较慢;付费增值服务可加快速度 | 本地构建,速度稳定且可优化 |
调试体验 | 受限,无法本地快速调试 | 完全可在本地调试,方便排查问题 |
APK 包体 | 难以精细控制,可能偏大 | 可精细控制,优化包体大小 |
发布适配 | 有时不符合应用市场要求 | 完全可控,符合各大应用市场要求 |
配置灵活性 | 配置简单,但自定义受限 | 完全可控,可自定义 SDK、签名等 |
适用场景 | 小型项目或快速测试;预算充足可考虑增值服务 | 中大型项目、性能优化、正式发布 |
🏗 uni-app Android 应用构建全流程指南
在本文中,我将快速梳理 uni-app 构建 Android 原生应用的完整流程,涵盖本地构建与云打包两种方式,希望能够帮助各位快速上手并避免常见问题。
本地准备工具
除了 HBuilderX 和 Android Studio,在构建 Android 原生应用时,你还需要确保 JDK 和 Node.js 环境已经正确安装。相信大部分开发同学都已经配置好了,这些基础环境配置网上已有很多成熟教程,这里不做过多展开,可按需查阅。
初始化uni-app项目
初始化一个
uniapp
项目,这个项目在发行菜单下,可以云打包和本地打包。
HBuilderX 云打包
使用云端证书(其他类型证书请自行尝试,可以参考这个链接),需要注册
DCloud
开发者账号,HbuilderX
创建项目之后,再我的应用中可以看到新创建项目。


从上面可以看到,云打包配置简单,方便快捷,可以根据官方的指示和介绍一步一步完成云打包流程,免费版本需要排队,时间较长,可以开通相关增值服务来加速和享受更好的体验。


构建完成会在项目unpackage/release/apk
目录下生成apk
,可以在android设备安装运行。
Android Studio 离线 SDK 打包
通过
发行
-> App-Andorid/IOS-本地打包
-> 生成本地打包App资源
,会在根目录 unpackage/resources
生成项目对应的资源文件__UNI__XXXX
官方App离线打包教程 按照官方文档中的开发环境 下载好开发工具与SDK
工程即可。 我使用的是离线打包方式二-导入工程->工程下载地址
解压后的项目目录结构,主要使用到的是Hbuilder-Integrate-AS
项目,将其copy出来,使用Android Studio
加载工程。

使用Android Studio
加载工程后,会安装相关依赖,因为很多依赖下载很慢,需要耐心等待或者想想其他方法。
现在直接模拟器运行应该看到的是这个如下样子,因为还有很多配置没有完成。

修改 dcloud_control.xml
文件里面的 appid
,其实离线资源文件夹名称就是 appid
,可以核对下免得出错。







上面配置步骤要尽量仔细,如果配错,很大概率会导致无法正确的运行和打包项目,有一些细节可能有遗漏和不足,欢迎指正。
🤔 问题记录
为什么 HBuilderX
云打包比 Android Studio(AS)
离线打包 apk
小?
对比项 | HBuilderX 云打包 | Android Studio 离线打包 |
---|---|---|
默认依赖 | 云端打包会自动剔除未用到的原生 SDK 插件,仅保留必要模块 | 本地离线 SDK 默认集成全量依赖(weex、uni 原生模块、调试库等),体积更大 |
资源优化 | 云端构建时会启用额外的资源压缩、裁剪、图片优化 | 本地构建需自行配置 ProGuard / R8 和资源压缩,否则资源未精简 |
NDK 架构 | 云打包默认仅生成主流架构(armeabi-v7a / arm64-v8a),减少冗余 | 本地可能打出多架构 so 库,包体自然增大 |
调试代码 | 云端 Release 包不包含调试工具、日志库 | 本地默认可能带上 debug 库(如 breakpad、调试 so),导致体积膨胀 |
配置灵活性 | 自动根据 manifest.json 配置裁剪 SDK | 本地需要自己改 gradle / proguard-rules.pro,默认不裁剪 |
最终效果 | APK 较小,更接近"按需裁剪" | APK 偏大,但可完全手动优化,理论上可比云打包更小 |
🛠️ 优化方法
Step 1. 精简依赖库
- 打开 app/build.gradle,检查 dependencies。
- 移除未用到的第三方库(如 Fresco、Glide、Fastjson 不能同时存在)。
gradle
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
// 注释掉未使用的依赖
// implementation 'com.facebook.fresco:fresco:2.5.0'
// implementation 'com.github.bumptech.glide:glide:4.9.0'
}
✅ 建议:只保留实际业务用到的库,避免多余依赖。
Step 2. 启用代码与资源压缩
- 在 build.gradle → release 配置中添加:
gradle
release {
minifyEnabled true // 压缩代码(R8/ProGuard)
shrinkResources true // 删除无用资源
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
- 在 proguard-rules.pro 添加日志清理:
gradle
-assumenosideeffects class android.util.Log {
public static int d(...);
public static int v(...);
public static int i(...);
public static int w(...);
}
Step 3. 精简 NDK 架构
- 在 defaultConfig 里添加:
gradle
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
✅ 只保留主流架构(32位 + 64位),避免打包 x86、x86_64,节省20-30MB。
Step 4. 移除调试相关内容
- 确保 release 构建禁用调试:
gradle
release {
debuggable false
}
- 移除调试 so(如 libbreakpad-core.so)和测试代码。
✅ 好处:Release 包更干净,不带调试库。
Step 5. 资源进一步优化
- 启用 aaptOptions 忽略无用文件:
gradle
aaptOptions {
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
- 图片资源优化:将 PNG 转 WebP;移除过高分辨率(如 xxxhdpi)的图标。
✨ 总结
HBuilderX
的云打包虽然方便,但在速度、灵活性和优化空间 上存在一定限制。如果你追求更快的构建体验、更小的APK
包体,或者需要严格控制 Gradle/NDK
配置,那么Android Studio
离线SDK
打包无疑是更专业的选择。
当然,如果你对配置和调试没有太高要求,或者项目阶段还在快速迭代,云打包依然能满足需求;甚至如果不差钱,HBuilderX
提供的增值云打包服务也能显著提升体验。选择合适的方式,关键还是要看团队的项目规模、性能需求和预算。
这是我首次尝试使用uni-app
构建Android
原生应用,整理了完整的流程与实践心得。由于是第一次进行相关尝试,文中难免存在不足或错误,欢迎大家批评指正、包容交流,一起不断改进与提升。