Uniapp Android 本地离线打包(详细流程)

一、简介

  • App 离线 SDK 暂时不支持 Kotlin,未来不清楚。

  • uniapp 提供了 云打包本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。

    image.png

  • 细节:需要 Android Studio 打包的时候,记得先通过工具栏的 Build -> 先 Clean Project -> 再 Rebuild Project -> 最后在打包或运行,生成基座或者测试离线包都适用这套流程。

二、准备工作

  • 按照官方文档中的 开发环境 下载好开发工具与 SDK 工程即可:Android 离线打包选了方式二:导入工程 方式,官方文档地址。

    注意:HBuilder X 3.5.0 及以上版本新增库 breakpad-build-release.aar

    注意:HBuilder X 3.8.7 及以上版本新增库 install-apk-release.aar,上架谷歌应用市场不能包含此库,更多参考文档

    我下载这个版本包好像没有 install-apk-release.aar,那就不用管,大多数的配置官方提供的工程中就已经配置好了,这边只把需要修改的罗列一下,当然最好通过本文结合官方文档来对照走步骤更好。

    在这里插入图片描述

    在这里插入图片描述

  • 下载的 Android 工程目录结构介绍,找到 HBuilder-Integrate-AS 离线打包工程,可以拷贝出来使用 Android Studio 打开该工程。

    image.png

    image.png

  • 打开工程后,先按 Android 老项目新人如何快速入手跑起来 这篇文章快速的配置一下基础环境。

  • 如果跑出下面这样的结果,非报错都先不要管,警告随他先。

    在这里插入图片描述

  • 如果需要重新编译项目可以在这里进行,或者使用 Build 工具栏里面刷新按钮也是一个效果。

    在这里插入图片描述

三、创建 Uniapp 测试项目

  • 使用 HBuilderXCli 创建一个测试项目 demo,然后运行到测试机或者模拟器。附:Uniapp 运行到 Android 真机或模拟器。

    1、确认当前模拟器或者真机支持的 cpu 类型,然后进行勾选,这里就是配置要打包的 apk 需要支持哪些cpu 类型的手机,全要支持可以全支持。附:adb 查看安卓手机、模拟器、apk包所支持的 CPU 类型(armeabi、armeabi-v7a、arm64-v8a …)

    反正就是勾的越多,打的包越大,你可以测试时用哪个勾哪个,等发包了在根据需要支持的手机市场进行勾选。

    在这里插入图片描述

    2、测试项目正常运行后,则进行本地打包,获得编译后的源码。

    image.png

    3、看控制台,等待编译完成,去给出的目录找到编译后的源码。

    image.png

    4、替换离线打包工程中的源码

    image.png

    image.png

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

    在这里插入图片描述

    在这里插入图片描述

四、离线工程的调整

  • 代码导入后,需要进行一些离线打包工程上的细节调整。

  • 包名替换,例如 com.dzm.test

    image.png

  • [可选]compileSdkVersion 修改,compileSdkVersion 30Android 项目中的一个配置项,定义了 编译时使用的 Android API 级别(即 Android SDK 版本),表示你正在使用 API 级别 30(对应 Android 11,即 Android 11)。

    在这里插入图片描述

  • 版本号修改,跟 HBuilderX -》manifest.json 中的版本号保持一致。

    image.png

  • 签名配置,也就是证书相关信息

    1、打开 Uniapp 开发者后台,登录一下。

    image.png

    image.png

    2、点击应用名称进入,找到 Android 云端证书,创建一个,稍微等待一下,需要刷新一下网页就能看到创建好的证书信息了,然后下载证书,放到 HBuilder-Integrate-AS 离线打包工程根目录。

    image.png

    image.png

    image.png

    3、复制证书的绝对路径,并替换配置中的证书路径

    image.png

    image.png

    在这里插入图片描述

    4、配置证书别名、密码

    image.png

    在这里插入图片描述

    在这里插入图片描述

    5、配置打包的 apk 需要支持的 cpu 类型

    ndk {
        abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
    }
    

    在这里插入图片描述

  • 申请 Appkey,如果没有则需要申请一下,有则可以直接拷贝,需要前往 Uniapp 开发者后台:

    在这里插入图片描述

    在这里插入图片描述

    点击 新增 后,需要填的资料中 包名 按上面的一样,版本可以根据情况来,创建 正式测试 两个切换使用,Android 应用签名SHA1值Android 应用签名SHA256 值在上面的 证书详情 中有,拷贝贴过来即可。其他根据需要可填可不填。

    在这里插入图片描述

    在这里插入图片描述

    然后创建一个 AppKey 并拷贝:

    在这里插入图片描述

    在这里插入图片描述

    AppKey 配置到离线工程中:

    在这里插入图片描述

    这个文件顶部的包名也要改一下,保持同步:

    在这里插入图片描述

  • 配置图标,不同分辨率可以按官方文档上的,多建几个文件夹配置。

    在这里插入图片描述

    在这里插入图片描述

  • 配置应用名称,需要保持一致

    在这里插入图片描述

五、离线工程试跑

  • 创建好虚拟机,点击调试项目

    在这里插入图片描述

    如果报错 Execution failed for task ‘:simpleDemo:stripDebugDebugSymbols’. NDK at /Users/dengzemiao/Library/Android/sdk/ndk-bundle did not have a source.properties file 点这里。

  • 解决问题再次点击调试按钮,项目跑成功了,如果 uniapp 重复打包导入项目后,最新内容没生效,可以删掉模拟器上安装好的包,重新运行安装一下。

    在这里插入图片描述

六、离线自定义基座打包

  • Uniapp Android 离线生成自定义基座(详细流程)

  • Uniapp Android 离线生成自定义基座(官方文档)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新,就想着更新看看(能否冲掉问题)4、更新没成功,自动重启电脑5、风险文件(好家伙命名还挺规范,一看名字就知道出问题了)6、开机有一些注册表…

使用大语言模型的生物嵌入,后续应该会有很多类似文章出来!

生信碱移 语言模型嵌入 小编先前分享了使用ChatGPT基因嵌入做平替的顶刊文章GenePT,只需要在原本的领域工作上插入这类的GPT嵌入,就能够实现降维打击。 ▲ 对于GenePT或者嵌入感兴趣的铁子,可以点击查看上面这篇推文。 今天冲浪的时候又看…

如何在没有 iCloud 的情况下将联系人从 iPhone 传输到 iPhone

概括 近期iOS 13.5的更新以及苹果公司发布的iPhone SE在众多iOS用户中引起了不小的轰动。此外,不少变化,如暴露通知 API、Face ID 增强功能以​​及其他在 COVID-19 期间与公共卫生相关的新功能,吸引了 iPhone 用户尝试新 iPhone 并更新到最…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…

【从零开始入门unity游戏开发之——C#篇40】C#特性(Attributes)和自定义特性

文章目录 前言一、特性(Attributes)基本概念二、自定义特性1、自定义特性代码示例:2、应用自定义特性:3、解释3.1 **AttributeUsage 特性**3.2 特性的命名3.3 **构造函数**:3.4 **属性**: 4、使用反射获取特…

k8s基础(2)—Kubernetes-Namespace

一、Namespace概述 名字空间 在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有…

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系 iOS 安全特性全面解析:构筑多层次防御体系一、iOS 的硬件安全特性1. Secure Enclave(安全隔区)2. Hardware Root of Trust(硬件信任根)3. De…

计算机网络——数据链路层-流量控制和可靠传输

一、流量控制 流量控制是指由接收方及时控制发送方发送数据的速率,使接收方来得及接受。 • 停止等待流量控制 • 滑动窗口流量控制 1、停止—等待流量控制 停止-等待流量控制的基本原理是发送方每发出一帧后,就要等待接收方的应答信号&#xff…

Zookeeper是如何保证事务的顺序一致性的?

大家好,我是锋哥。今天分享关于【Zookeeper是如何保证事务的顺序一致性的?】面试题。希望对大家有帮助; Zookeeper是如何保证事务的顺序一致性的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过多个机制来保证事务的顺序一…

实际开发中,常见pdf|word|excel等文件的预览和下载

实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…

Qt使用CMake编译项目时报错:#undefined reference to `vtable for MainView‘

博主将.h文件和.cpp文件放到了不同的文件目录下面,如下图所示: 于是构建项目的时候就报错了#undefined reference to vtable for MainView,这个是由于src/view目录下的CMake无法自动moc头文件导致的,需要手动moc include/view目录…

会员制电商创新:开源 AI 智能名片与 2+1 链动模式的协同赋能

摘要:本文聚焦于电商领域会员制的关键作用,深入探讨在传统交易模式向数字化转型过程中,如何借助开源 AI 智能名片以及 21 链动模式商城小程序,实现对会员数据的精准挖掘与高效利用,进而提升企业的营销效能与客户洞察能…

第27周:文献阅读及机器学习

目录 摘要 Abstract 一、文献阅读 发现问题 研究方法 CNN-LSTM DT SVR 创新点 案例分析 数据准备 模型性能 预测模型的实现 仿真实验及分析 二、LSTM 1、基本结构 2、具体步骤 3、举例说明 4、原理理解 总结 摘要 本周阅读文献《Short-term water qua…

【机器遗忘之UNSIR算法】2023年IEEE Trans期刊论文:Fast yet effective machine unlearning

1 介绍 年份:2023 期刊:IEEE Transactions on Neural Networks and Learning Systems 引用量:170 Tarun A K, Chundawat V S, Mandal M, et al. Fast yet effective machine unlearning[J]. IEEE Transactions on Neural Networks and Le…

Linux-----进程处理(waitpid,进程树,孤儿进程)

目录 waitpid等待 进程树 孤儿进程 waitpid等待 Linux中父进程除了可以启动子进程,还要负责回收子进程的状态。如果子进程结束后父进程没有正常回收,那么子进程就会变成一个僵尸进程——即程序执行完成,但是进程没有完全结束,其…

Docker- Unable to find image “hello-world“locally

Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…

Android配件应用默认启动与USB权限申请区别

使用效果: USB配件授权演示 选择USB配件默认打开应用 申请USB配件使用权限

vue2框架配置路由设计打印单

业务效果: 查询出列表后&#xff0c;点击申请单按钮&#xff0c;弹出申请表格&#xff0c;可进行打印 后端实现 控制器、服务层等省略&#xff0c;关联查出数据提供接口给前端即可 <!--获取详细信息(用于申请单打印)--><select id"selectXxxxDetail" par…

第29天:Web开发-PHP应用弱类型脆弱Hash加密Bool类型Array数组函数转换比较

#知识点 1、安全开发-原生PHP-弱类型脆弱 2、安全开发-原生PHP-函数&数据类型 3、安全开发-原生PHP-代码审计案例 一、PHP弱类型对比 1、 和 两个等号是弱比较&#xff0c;使用进行对比的时候&#xff0c;php解析器就会做隐式类型转换&#xff0c;如果两个值的类型不相等就…