Android 离线打包详细流程
前言✨本文主要介绍基于uni-app前端框架开发后实现 Android 离线打包的详细流程。一、准备环境确保 HBuilderX、离线 SDK 和 JDK 的版本一致。1.1 下载并安装HBuilderX1.2 下载并安装JDK 8JDK 必须 JDK81.8Android Studio 新版自带的 JDK11/17 会构建报错。1.3 下载 Android 离线SDK从 DCloud Android 离线SDK下载页 下载与你的 HBuilderX 大版本完全匹配的离线SDK。【HBuilderX 5.15Android 离线 SDK 5.15】1.4 下载安装Android Studio官方下载页https://developer.android.com/studio?hlzh-cn官方国内镜像下载页https://developer.android.google.cn/studio?hlzh-cn二、配置项目信息2.1 确保 manifest.json 的AppID已生成2.2 登录DCloud开发者中心官方地址https://dev.dcloud.net.cn/核心后台离线 SDK、AppID、推送、证书管理都在这里。在我的应用中找到该项目申请离线打包Key3.1.10版本后必需后续配置要用到。# 生成签名证书(在电脑上需要安装好 Java JDK)keytool-genkey-aliaswaisaa-keyalgRSA-keysize2048-validity36500-keystorewaisaa.keystore# 密钥库口令123456# 迁移到行业标准格式 PKCS12keytool-importkeystore-srckeystorewaisaa.keystore-destkeystorewaisaa.keystore-deststoretypepkcs12# 查看证书信息keytool-list-v-keystorewaisaa.keystore# 离线打包Key4eb123456ceef501234567f0bd810cb8三、生成本地打包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为你的应用包名。注意两个不同的app包名不能相同因为Android 系统识别应用的唯一标识是包名applicationId不是 DCloud 的 appid。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的名称。6.9 配置app自动更新所需权限在AndroidManifest.xml文件中新增如下内容!-- 网络权限下载APK需要 -- uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !-- 读写存储保存APK文件需要 -- uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / !-- 关键安装APK权限Android 8 必须 -- uses-permission android:nameandroid.permission.REQUEST_INSTALL_PACKAGES / !-- 可选小米等机型的额外权限 -- uses-permission android:namecom.miui.securitycenter.permission.INSTALL_APP /七、生成APK在 Android Studio 中点击菜单栏的Main Menu→Build→Generate App Bundle(s) or APKs→Generate APKs等待编译完成即可。最终会在simpleDemo/build/outputs/apk/debug目录下生成apk。

相关新闻

C++内存管理核心机制与性能优化实战指南

C++内存管理核心机制与性能优化实战指南

1. 项目概述:为什么内存管理是C的“成人礼”?干了这么多年C,我越来越觉得,内存管理这门课,是区分“会写代码”和“能写好代码”的一道分水岭。很多新手朋友,学完了语法,写个“Hello World”或者…

2026/7/18 4:56:09阅读更多 →
Kubernetes 系列【19】服务:Kube-Proxy 节点网络代理

Kubernetes 系列【19】服务:Kube-Proxy 节点网络代理

文章目录1. 概述2. 三大代理模式2.1 iptables 模式(默认)2.1.1 iptables 是什么2.1.2 工作流程2.2 IPVS 模式(高性能)2.2.1 IPVS 是什么2.2.2 工作流程2.3 nftables 模式(新一代高性能)2.3.1 nftables 是什…

2026/7/18 4:56:09阅读更多 →
设备维修越勤快,工厂可能死得越快!

设备维修越勤快,工厂可能死得越快!

很多工厂都有一个很奇怪的现象——设备部门每天忙得像打仗,早上刚坐下维修群消息来了: “3号机报警了。” “B产线设备停了。” “XX设备温度异常。” 维修师傅拿起工具箱就往现场跑,一天下来不是在维修,就是在维修的路上。 老板…

2026/7/18 4:56:09阅读更多 →
紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

紧急修复!Cursor v4.5.2环境变量缓存Bug导致AI补全失效——立即生效的4种绕过方案(含patch脚本)

更多请点击: https://intelliparadigm.com 第一章:Cursor v4.5.2环境变量缓存Bug的根源与影响分析 Cursor v4.5.2 在启动时对环境变量(如 PATH、 NODE_ENV、 CURSOR_PROJECT_ROOT)执行了一次性快照式缓存,该机制未监…

2026/7/18 5:51:13阅读更多 →
Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

Imagination亮相汽车电子大会:荣获“汽车电子金芯奖·创新企业奖”

在近日举行的汽车电子大会上,Imagination 公司产品总监Rob Fisher出席大会并发表主题演讲,分享了公司在智能汽车GPU领域的最新技术进展与应用实践。荣获“汽车电子金芯奖创新企业奖”大会同期公布了“汽车电子金芯奖”评选结果,Imagination凭…

2026/7/18 5:51:13阅读更多 →
MyBatis初阶

MyBatis初阶

概述mybatis就是使用注释就能够完成JDBC需要大量做的事情但终归会有不能SQL语句,参数赋值,结果映射Mapper public interface UserInfoMapper {Select("select * from user_info")List<UserInfo> selectAll(); }此时需要测试一下是否成功只要有mybatis依赖,就需…

2026/7/18 5:51:13阅读更多 →
iceberge分区特性

iceberge分区特性

1.4 Iceberg 特点详述 1.4.1 Iceberg 分区与隐藏分区&#xff08;Hidden Partition&#xff09; 这部分介绍了 Iceberg 的分区机制及其带来的便利。 基本功能&#xff1a;Iceberg 支持分区来加速查询。写入数据时&#xff0c;相似的数据行会被分组&#xff1b;查询时&#xff0…

2026/7/18 5:51:13阅读更多 →
Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

Unity视频播放进阶:从VideoPlayer.Play()到事件驱动与跨平台优化

1. 项目概述&#xff1a;为什么VideoPlayer.Play()只是起点&#xff1f;如果你在Unity里处理视频&#xff0c;大概率用过VideoPlayer.Play()。点一下&#xff0c;视频开始播放&#xff0c;看起来一切顺利。但当你需要实现“视频播完自动跳转场景”、“根据播放进度更新UI进度条…

2026/7/18 5:51:13阅读更多 →
AI Skills:大语言模型的能力扩展包

AI Skills:大语言模型的能力扩展包

1. 为什么说Skills是AI时代的APP&#xff1f;十年前我们下载APP是为了让手机具备新功能&#xff0c;如今给AI安装Skills也是同样的逻辑。Skills本质上是一组预设的工作流和知识模板&#xff0c;它们教会大语言模型如何完成特定任务。就像APP扩展了智能手机的能力边界一样&#…

2026/7/18 5:46:13阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比&#xff1a;全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时&#xff0c;第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/17 10:42:55阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件&#xff1a;5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL&#xff1a;跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;从模糊意图到可执行指令&#xff1a;Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档&#xff08;PRD&#xff09;生成实践中&#xff0c;原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Cursor配置生成失效&#xff1f;3大隐藏陷阱4行修复代码&#xff0c;资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效&#xff0c;是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者&#xff1a;钟声编辑&#xff1a;Mark出品&#xff1a;红色星际头图&#xff1a;智能驾驶图片据悉&#xff0c;国内某头部智驾公司端到端模型技术大牛Z投身创业&#xff0c;并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈&#xff0c;更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/17 17:26:50阅读更多 →