‌UniApp 安卓打包完整步骤(小白向)


一、环境准备
  1. 安装 HBuilderX

    • 下载最新版 HBuilderX 并安装(官方 IDE,支持一键打包)‌16
    • 确保已安装 Node.js(用于依赖管理)‌26
  2. 配置 Android 开发环境

    • 安装 ‌Java JDK 17+‌(建议选择稳定版)‌78
    • 安装 ‌Android Studio‌(用于本地打包)‌26
      • 安装时勾选 Android SDK、Gradle 等组件‌37

二、申请应用标识与证书
  1. 创建 DCloud 应用

    • 登录 DCloud 开发者中心,创建新应用,获取 ‌AppID‌‌15
  2. 生成证书

    • 在 DCloud 后台生成 ‌Android 云端证书‌(自动生成包名、证书密码、别名等)‌56
    • 下载证书文件(.keystore)保存至项目目录‌58

三、生成本地打包资源
  1. 在 HBuilderX 中操作

    • 右键项目 → ‌发行‌ → ‌原生 App 本地打包‌ → ‌生成本地打包资源‌‌13
    • 生成后的资源文件位于 unpackage/resources 目录‌35
  2. 下载离线 SDK

    • 从 DCloud 官网下载 ‌Android 离线 SDK‌(需与 HBuilderX 版本一致)‌36
    • 解压 SDK 至本地目录(如 HBuilder-Integrate-AS)‌38

四、配置 Android 项目
  1. 替换资源文件

    • 将生成的本地打包资源(__UNI__XXXXX 文件夹)复制到 SDK 的 assets/apps 目录‌38
  2. 修改关键配置

    • dcloud_control.xml‌:替换 AppID 为 DCloud 后台申请的 ID‌35
    • AndroidManifest.xml‌:修改应用名称、权限配置‌36
    • build.gradle‌:
      • 填写 applicationId(包名,需与证书一致)‌36
      • 设置 versionCode 和 versionName(与 HBuilderX 项目版本一致)‌35

五、生成 APK 安装包
  1. Android Studio 打包操作

    • 打开离线 SDK 项目 → ‌Build‌ → ‌Generate Signed Bundle/APK‌‌57
    • 选择之前下载的 .keystore 证书文件,输入密码和别名‌57
    • 选择 ‌APK‌ → ‌Release‌ 模式生成安装包‌57
  2. 处理常见问题

    • Gradle 同步失败‌:检查 Android SDK 路径是否正确,或手动下载 Gradle 版本‌37
    • 白屏问题‌:确保 HBuilderX 版本 ≤ 3.99,高版本需配置隐私弹窗‌46

六、测试与发布
  1. 真机调试

    • 手机开启 USB 调试模式 → 运行到 Android 基座 → 查看实时日志‌48
  2. 应用上架

    • 在应用市场注册开发者账号(如华为、小米)
    • 上传 APK 并填写应用描述、截图等信息‌24

注意事项

  • 证书安全‌:勿泄露 .keystore 文件及密码‌56
  • 版本一致‌:HBuilderX、离线 SDK、Gradle 版本需匹配‌36
  • 隐私合规‌:配置原生隐私弹窗,避免应用商店审核失败‌46

通过以上步骤,可完成从零到 APK 的完整打包流程‌13。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Springboot知识】Springboot配置加载机制深入解读

文章目录 配置加载概述**Spring Boot 配置加载机制详解****一、配置加载顺序(优先级由低到高)****二、关键配置机制说明****1. Profile 机制****2. 外部化配置****3. 配置属性绑定到 Bean****4. 动态覆盖配置** **三、配置加载流程图****2. 配置导入&…

AI图像生成

要通过代码实现AI图像生成,可以使用深度学习框架如TensorFlow、PyTorch或GANs等技术。下面是一个简单的示例代码,演示如何使用GANs生成手写数字图像: import torch import torchvision import torchvision.transforms as transforms import …

基于springboot的个人博客系统

一、系统架构 前端:html | bootstrap | jquery | css | ajax 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、代码及数据 三、功能介绍 01. 注册 02. 登录 03. 管理后台-首页 04. 管理后台-文章-所有文…

BOTA六维力矩传感器如何打通机器人AI力控操作的三层架构?感知-决策-执行全链路揭秘

想象一下,你对着一个机器人说:“请帮我泡杯茶。”然后,它就真的开始行动了:找茶壶、烧水、取茶叶、泡茶……这一切看似简单,但背后却隐藏着复杂的AI技术。今天,我们就来揭秘BOTA六维力矩传感器在机器人操控…

ffmpeg播放音视频流程

文章目录 🎬 FFmpeg 解码播放流程概览(以音视频文件为例)1️⃣ 创建结构体2️⃣ 打开音视频文件3️⃣ 查找解码器并打开解码器4️⃣ 循环读取数据包(Packet)5️⃣ 解码成帧(Frame)6️⃣ 播放 / …

在 Wireshark 中如何筛选数据包

1. 显示过滤器(Display Filters) 显示过滤器用于 在已捕获的数据包中筛选,语法类似于编程语言中的条件表达式。 (1)基本过滤 表达式说明ip.addr 192.168.1.1显示所有涉及 192.168.1.1 的 IP 包ip.src 192.168.1.1…

ES6 新增特性 箭头函数

简述: ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…

Python数据可视化-第7章-绘制3D图表和统计地图

环境 开发工具 VSCode库的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本书为《Python数据可视化》一书的配套内容,本章为第7章 绘制3D图表和统计地图 本章首先介绍了使用mplot3d工具包绘制3D图表,然后介绍了使用animation模块制作动画&#…

【从零开始学习JVM | 第二篇】HotSpot虚拟机对象探秘

对象的创建 1.类加载检查 虚拟机遇到一条new的指令,首先去检查这个指令的参数能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行类的加载过程。 2.分配内存 在类…

Oracle 表空间高水位收缩全攻略

1. 概述 本文档是针对某个特定用户表空间收缩的文档,实际操作要结合生产库具体情况。主要包括以下几个流程: 收集当前数据库相关信息降低数据库表高水位线Resize 收缩数据文件 具体细节详见以下章节。 2. 时间规划 操作类型预估时间实际时间数据库信…

Pytest多环境切换实战:测试框架配置的最佳实践!

你是否也遇到过这种情况:本地测试通过,一到测试环境就翻车?环境变量错乱、接口地址混乱、数据源配置丢失……这些「环境切换」问题简直像定时炸弹,随时引爆你的测试流程! 测试人员每天都跟不同的环境打交道&#xff0…

蓝桥杯赛前题

开始每个人能量为3 答题了&#xff0c;答题者1 扣分最后算 #include<bits/stdc.h> using namespace std;const int N1e510; int a[N]; int main(){int n,k,q;cin>>n>>k>>q;for(int i1;i<n;i){a[i]k; }for(int i1;i<q;i){int x;cin>>x;a[…

VSCode优雅的使用debug

原始用法&#xff1a;(这里不使用) 配置launch.json&#xff0c;里面传入参数然后debug&#xff0c;这里我们通常需要传入的参数比较多&#xff0c;而且经常修改参数&#xff0c;直接去修改launch.json会比较麻烦&#xff0c;所以使用sh脚本比较方便。 {// Use IntelliSense to…

oracle常见问题处理集锦

oracle常见问题处理集锦 oracle常见问题处理集锦ORA-03001:未实施的功能ORA:28000 the count is locked oracle常见问题处理集锦 ORA-03001:未实施的功能 问题 ORA-03001:未实施的功能 在datagrip中修改表名称&#xff0c;使用的语法是&#xff1a; rename old_name to new_n…

项目日志配置模板示例

1.新增application.properties配置 logging.configclasspath:logback-spring.xml spring.profiles.activedev 将项目部署到服务器时需要将dev修改为test后再进行打包部署 2.新增logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <…

2025年第十八届“认证杯”数学中国数学建模网络挑战赛【BC题】完整版+代码+结果

# 问题一&#xff1a;随机森林回归from sklearn.ensemble import RandomForestRegressormodel_rf RandomForestRegressor()model_rf.fit(X_train, y_train)# 问题二&#xff1a;LSTM时间序列预测from tensorflow.keras.models import Sequentialmodel_lstm Sequential()model…

C语言实现TcpDump

一、 在 C 语言中实现 TCP 抓包功能&#xff0c;通常可以使用 libpcap 库。libpcap 是一个广泛使用的网络抓包库&#xff0c;它提供了捕获网络数据包的接口。 libpcap 是一个广泛使用的 C 语言库&#xff0c;用于捕获和过滤网络数据包。它提供了一个通用接口&#xff0c;用于访…

Spark-Core编程

sortByKey算子&#xff1a;对(K, V)型RDD按key排序&#xff0c;K需实现Ordered接口&#xff0c;可指定升序或降序及分区数。 join算子&#xff1a;连接两个(K, V)和(K, W)型RDD&#xff0c;返回(K, (V, W))型RDD 。 leftOuterJoin算子&#xff1a;类似SQL左外连接&#xff0c;返…

阅读MySQL实战45讲第9天

目录 一、你的 SQL 语句为什么变“慢” 二、什么情况会引发数据库的 flush 过程&#xff1f; 三、分析上面四种场景对性能的影响 四、InnoDB 刷脏页的控制策略 五、原作者小结&#xff1a; 引言&#xff1a; 一条 SQL 语句&#xff0c;正常执行的时候特别快&#xff0c;但是有时…

cin,cin.get(),getchar(),getline(),cin.get line()异同点

文章目录 1.cin2.cin.get()3.getchar()4.cin.getline()5.getline() 1.cin &#xff08;1&#xff09;cin>>等价于cin.operator>>()&#xff0c;即调用成员函数operator>>()进行读取数据。 &#xff08;2&#xff09;当cin>>从缓冲区中读取数据时&…