Android 离线打包详细流程

📋前言

✨本文主要介绍基于uni-app前端框架开发后,实现 Android 离线打包的详细流程。

一、准备环境

确保 HBuilderX、离线 SDK 和 JDK 的版本一致。

1.1 下载并安装 HBuilderX

1.2 下载并安装 JDK 8

JDK 必须 JDK8(1.8),Android Studio 新版自带的 JDK11/17 会构建报错。

1.3 下载 Android 离线SDK

从 DCloud Android 离线SDK下载页 下载与你的 HBuilderX 大版本完全匹配的离线SDK。【HBuilderX 5.15 + Android 离线 SDK 5.15】

1.4 下载安装 Android Studio

官方下载页:https://developer.android.com/studio?hl=zh-cn

官方国内镜像下载页:https://developer.android.google.cn/studio?hl=zh-cn

二、配置项目信息

2.1 确保 manifest.json 的AppID已生成

2.2 登录DCloud开发者中心

  • 官方地址: https://dev.dcloud.net.cn/,核心后台,离线 SDK、AppID、推送、证书管理都在这里。

  • 在我的应用中找到该项目,申请离线打包Key(3.1.10版本后必需,后续配置要用到)。

sh 复制代码
# 生成签名证书(在电脑上需要安装好 Java JDK)
keytool -genkey -alias waisaa -keyalg RSA -keysize 2048 -validity 36500 -keystore waisaa.keystore
# 密钥库口令:123456
# 迁移到行业标准格式 PKCS12
keytool -importkeystore -srckeystore waisaa.keystore -destkeystore waisaa.keystore -deststoretype pkcs12
# 查看证书信息
keytool -list -v -keystore waisaa.keystore
# 离线打包Key
4eb123456ceef501234567f0bd810cb8

三、生成本地打包App资源

在 HBuilderX 打开项目 → 菜单栏"发行" → "App-Android/iOS-本地打包" → "生成本地打包App资源",等待生成完毕会在unpackage/resources目录下生成该项目的资源包。

四、导入SDK

解压离线SDK,用 Android Studio 打开 HBuilder-Integrate-AS 工程。

五、替换资源文件

将 HBuilderX 生成的 __UNI__xxxx 资源文件夹 完整复制到 app/src/main/assets/apps/ 目录下,并删除旧的默认文件夹。

六、修改项目信息【关键步骤】

这个步骤的配置很关键,用到了前面准备好的相关信息,需要一一对应。

6.1 配置 AppID

在 assets/data/dcloud_control.xml 文件中,将 标签的 appid 值改成你的 AppID。

6.2 配置 AppKey

在 AndroidManifest.xml 文件中,找到 <meta-data android:name="dcloud_appkey" .../>,将 android:value 替换为你在开发者中心申请的 AppKey。

6.3 配置 应用签名

在 app/build.gradle 文件中的 signingConfigs 块内,填写你的证书信息(storeFile、storePassword、keyAlias、keyPassword)。

注意:keyPassword 和 storePassword 的值都为密钥库口令。

6.4 配置 包名 (applicationId)

同样在 app/build.gradle 文件中,修改 defaultConfig 下的 namespace 和 applicationId 为你的应用包名。

6.5 自动读取版本并赋值

这一步配置可以实现每次打包只用更换app资源包,不用手动修改版本,版本号会自动读取资源包中的版本号。也同样是在 app/build.gradle 文件中进行修改,在apply plugin: 'com.android.application'下面加入如下内容(注意路径中的AppID替换成你自己的):

复制代码
// ========== 1. 导入JSON解析 ==========
import groovy.json.JsonSlurper

// ========== 2. 定义方法:读取UniApp的manifest.json版本 ==========
def getUniAppVersion() {
    // 👉 这里路径要改成你自己的!
    // 一般是:src/main/assets/apps/你的UniAppID/www/manifest.json
    def manifestFile = file('src/main/assets/apps/__UNI__0777BD3/www/manifest.json')

    if (!manifestFile.exists()) {
        println "⚠️ manifest.json不存在,使用默认版本"
        return [code: 0, name: "1.0.0"]
    }

    try {
        def json = new JsonSlurper().parse(manifestFile)
        def code = json.version.code as Integer
        def name = json.version.name
        println "✅ 自动读取版本:versionCode=${code}, versionName=${name}"
        return [code: code, name: name]
    } catch (e) {
        println "❌ 读取manifest失败:${e.message}"
        return [code: 0, name: "1.0.0"]
    }
}

// 执行获取
def uniVer = getUniAppVersion()

6.6 配置打包apk名称

也同样是在 app/build.gradle 文件中进行修改,在buildTypes'下面加入如下内容(这里根据获取的打包类型和版本号自己定义具体格式):

复制代码
applicationVariants.all { variant ->
        variant.outputs.all {
            def buildType = variant.buildType.name
            def version = variant.versionName
            outputFileName = "wlfrecipe_v${version}.apk"
        }
    }

6.7 配置apk图标

把你自己制作好的logo放到 res/drawable/目录下,名称固定为 icon.png。

6.8 配置app名称

修改 res/values/目录下的 strings.xml,把app_name设置成自己app的名称。

七、生成APK

在 Android Studio 中,点击菜单栏的 Build → Build Bundle(s) / APK(s) → Build APK(s),等待编译完成即可。最终会在 simpleDemo/build/outputs/apk/debug目录下生成apk。

相关推荐
李子红了时3 小时前
阿狸舞台APP(安卓端手机EncFS解密+压缩包解压+视频播放)
android·音视频
事圆则缓3 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
其实防守也摸鱼3 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化
恋猫de小郭3 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
素师良码1 天前
第5篇:显示驱动必备调试工具浅析
android
维克兜率天1 天前
【维克】配对交易的季节性:哪些品种适合长拿?
android·开发语言·笔记·python·算法·kotlin·量化
墨天梦1 天前
B06_XML控件布局与ViewBinding
android·kotlin
晚风叙码1 天前
MySQL 表的操作:从建表到删表,一篇讲清楚
android·mysql·oracle
事圆则缓1 天前
Android 性能优化常见工具与使用场景:从症状到证据的排查指南
android·性能优化
avi91111 天前
Unity 非后台,非自动构建,但统计报表 BuildReport ,构建自动化系统C#
android·webserver·ios打包·admin·c#后台·unity打包系统·unity自动构建