Uni-app 离线打包 apk

news2025/1/20 14:51:46

Uni-app 离线打包 apk

1. Android Studio 下载

  • Android Studio官网
  • image-20230513190943540

2. HBuilderX下载

  • HBuilderX下载
  • image-20230513191004656

3. App离线SDK下载

  • Android 离线SDK - 正式版

  • 下载后解压文件,将 HBuilder-Integrate-AS 重命名 build-template 并拷贝到一个专门打包用的文件夹下作为打包模板

  • 该文件夹中有一个 simpleDemo 文件夹

    • build-template\simpleDemo\src\main\assets\apps

    • 将 apps 文件夹下的内容删除

    • 运行 HbuilderX

      image-20230513191744199

    • 选择生成本地打包 APP 资源

    • 打包完成控制台会提示下面内容

      image-20230513191907918

    • 找到打包后的资源目录,将下图文件夹复制到专门打包用的文件夹下,即 build-template\simpleDemo\src\main\assets\apps 文件夹下

      image-20230513192108596

4. 申请 Appkey

  • 安装JRE环境(推荐使用JRE8环境,如已有可跳过)

    • 可从Oracle官方下载jre安装包:

      • https://www.oracle.com/java/technologies/downloads/#java8
    • 建议将JRE安装路径添加到系统环境变量

      image-20230513192813810

    • 使用keytool -genkey命令生成证书:

      • cmd 输入以下命令 切换到 D 盘

        d:  
        
        keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
        
        • testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
        • test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
        • 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
      • 回车后会提示:

        Enter keystore password:  //输入证书文件密码,输入完成回车  
        Re-enter new password:   //再次输入证书文件密码,输入完成回车  
        What is your first and last name?  
          [Unknown]:  //输入名字和姓氏,输入完成回车  
        What is the name of your organizational unit?  
          [Unknown]:  //输入组织单位名称,输入完成回车  
        What is the name of your organization?  
          [Unknown]:  //输入组织名称,输入完成回车  
        What is the name of your City or Locality?  
          [Unknown]:  //输入城市或区域名称,输入完成回车  
        What is the name of your State or Province?  
          [Unknown]:  //输入省/市/自治区名称,输入完成回车  
        What is the two-letter country code for this unit?  
          [Unknown]:  //输入国家/地区代号(两个字母),中国为CN,输入完成回车  
        Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?  
          [no]:  //确认上面输入的内容是否正确,输入y,回车  
        
        Enter key password for <testalias>  
                (RETURN if same as keystore password):  //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
        
      • 以上命令运行完成后就会生成证书,路径为“D:\test.keystore”

    • 查看证书信息

      在 D 盘下运行 cmd

      keytool -list -v -keystore test.keystore  
      Enter keystore password: //输入密码,回车
      

      会输出以下格式信息:

      image-20230513193504383

      只有 SHA1 和 SHA256,但是还需要一个 MD5

    • 此时需要下载一个 openssl 软件,并将其加入到环境变量

      image-20230513193644829

      • 安装完成后执行下面命令即可看到输出的 md5

        keytool -exportcert -keystore xxx.keystore | openssl dgst -md5
        
  • 记录上面生成的 SHA1 SHA256 MD5

    • image-20230513220140352
  • 登录 开发者中心

  • 在应用管理 - 点击应用 - 各平台信息 创建以及查看离线AppKey:

    • 创建时输入对应的 SHA1 SHA256 MD5

5. 配置 Android Studio

  • build.gradle配置

    signingConfigs {
            config {
                keyAlias '签名别名'
                keyPassword '签名密码'
                storeFile file('xxx/xxx/xxx.keystore或xxx/xxx/xxx.jks') // 路劲为相对路径或绝对路径
                storePassword '证书文件密码'
                v1SigningEnabled true //兼容v1
                v2SigningEnabled true //兼容v2
            }
    }
    
    buildTypes {
            debug {
                signingConfig signingConfigs.config
                ...
            }
            release {
                signingConfig signingConfigs.config
                ...
            }
    }
    
  • 注意:签名信息需要与后台一致,不一致也会导致appkey校验失败

    • 签名别名 即使用 keytool 工具生成证书时候要求输入的 alias 即上面的 testalias
    • 证书签名密码即使用 keytool 工具生成证书时候要求输入的证书密码
    • 证书文件密码 即使用 keytool 工具生成证书时候要求输入的证书文件密码(那个步骤按 enter 则证书密码和证书文件密码相同)
    • storeFile 即生成的 keystore 文件的位置
  • Androidmanifest.xml配置

    • 获取到android平台的AppKey后!打开Android项目 配置主APP的Androidmanifest.xml文件,找到meta-data节点,name为dcloud_appkey,value为申请的AppKey如下:

      	<application
              ...>
              <meta-data
                  android:name="dcloud_appkey"
                  android:value="替换为自己申请的Appkey" />
      
    • 找到 assets 目录下的 data 目录

      • 将 dcloud_control.xml 中的 appid 设置成申请AppKey时的 appid

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lMnCgnRx-1683991992359)(https://native-res.dcloud.net.cn/images/uniapp/nativedocs/Android/appid%E4%B8%80%E8%87%B4.png)]

      • 将 build.gradle 中的 applicationId 设置成申请AppKey时的包名

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBQ9fnxi-1683991992359)(https://native-res.dcloud.net.cn/images/uniapp/nativedocs/Android/%E5%8C%85%E5%90%8D%E4%B8%80%E8%87%B4.png)]

  • 设置应用名称

    • 编辑 res 目录下的 values 目录中的 strings.xml

      image-20230513223538252

    • 设置成应用的名字

  • 设置图标

    • res 目录中的 drawable 目录中
      • icon.png : logo图片
      • push.png : 消息推送logo
      • splash.png : 启动页
  • 设置版本号

    image-20230513232600631

6. 打包

image-20230513232631326

image-20230513232650940

image-20230513232738940

image-20230513232802788

打包完成后即可在 build-template\simpleDemo\release 中查看打包好的 apk 文件

全文结束

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

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

相关文章

一行代码绘制高分SCI限制立方图

一、概述 Restricted cubic splines (RCS)是一种基于样条函数的非参数化模型&#xff0c;它可以可靠地拟合非线性关系&#xff0c;可以自适应地调整分割结点。在统计学和机器学习领域&#xff0c;RCS通常用来对连续型自变量进行建模&#xff0c;并在解释自变量与响应变量的关系…

抑梯度异常初始化参数(防止梯度消失和梯度爆炸)

这里设置3种参数初始化的对比&#xff0c;分别是&#xff1a;全初始化为0、随机初始化、抑梯度异常初始化。 首先是正反向传播、画图、加载数据所需的函数init_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt import sklea…

双层优化入门(3)—基于智能优化算法的求解方法(附matlab代码)

前面两篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法&#xff0c;以及使用yalmip工具箱求解双层优化的方法&#xff1a; 双层优化入门(1)—基本原理与求解方法 双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码) 除了数学规划方法之外&#xff0c;…

springboot+vue大学生体质测试管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学生体质测试管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xf…

how2heap-fastbin_dup.c

不同libc版本的fastbin_dup.c源码有点小区别&#xff1a;主要是有tcache的&#xff0c;需要先填充 以下为有tcache的源码示例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <assert.h>int main() {setbuf(stdout, NULL);printf("This…

诗词·宇宙之梦

宇宙之梦 重力枷锁必将断&#xff0c;携君翱翔万里空。 迷途夜路寻踪迹&#xff0c;一声呼唤莫轻忽。 寻觅中&#xff0c;见红瞳&#xff0c;决不装假觉清白。 黑泽之中君沉沦&#xff0c;放之不下心怎静。 重力终将解开放&#xff0c;卫星翔空自由翱。 重量减半去忧愁&#xf…

RobotFramework+Eclispe环境安装篇

环境安装是学习任何一个新东西的第一步&#xff0c;这一步没走舒坦&#xff0c;那后面就没有心情走下去了。 引用名句&#xff1a;工欲善其事必先利其器&#xff01;&#xff01; Robotframework&#xff1a;一款 自动化测试框架。 Eclipse&#xff1a;一款编辑工具。可以编…

Android MVVN 使用入门

MVVM&#xff08;Model-View-ViewModel&#xff09;是一种基于数据绑定的设计模式&#xff0c;它与传统的 MVC 和 MVP 模式相比&#xff0c;更加适合处理复杂的 UI 逻辑和数据展示。在 Android 开发中&#xff0c;MVVM 通常使用 Data Binding 和 ViewModel 实现。 下面是一个简…

正则化解决过拟合

本片举三个例子进行对比&#xff0c;分别是&#xff1a;不使用正则化、使用L2正则化、使用dropout正则化。 首先是前后向传播、加载数据、画图所需要的相关函数的reg_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt impor…

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法&#xff1a; 双层优化入门(1)—基本原理与求解方法 这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数&#xff0c;可以直接求出优化问题的KKT条件&#x…

算法(一)—— 回溯(2)

文章目录 1 131 分割回文串2 93 复原 IP 地址 s.substr(n, m) // 从字符串s的索引n开始&#xff0c;向后截取m个字符 例&#xff1a; string s "aaabbbcccddd"; string s1 s.substr(2,3); 此时s1为abb 1 131 分割回文串 切割问题&#xff0c;前文均为组合问题。组…

【Promptulate】一个强大的LLM Prompt Layer框架

本文节选自笔者博客&#xff1a; https://www.blog.zeeland.cn/archives/promptulate666 项目地址&#xff1a;https://github.com/Undertone0809/promptulate &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd;…

pyinstaller打包为.exe过程中的问题与解决方法

目录 问题一&#xff1a;.exe文件过大问题二&#xff1a;pyinstaller与opencv-python版本不兼容问题三&#xff1a;打开文件时提示***.pyd文件已存在问题四&#xff1a;pyinstaller打包时提示UPX is not available.另&#xff1a;查看CUDA成功配置的方法 pyinsatller -F -w mai…

瑞吉外卖 - 开发环境搭建(2)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

网络编程启蒙

文章目录 局域网、广域网WAN口LAN口那么什么是局域网和广域网呢&#xff1f; IP地址IPV4动态规划ipNAT IPV6IPV6的普及IPV6的应用 端口号协议协议分层协议分层的好处 OSI物理层数据链路层网络层&#xff08;全局&#xff09;传输层负责应用层网络设备所在分层网络分层中的一组重…

mybatis-plus实现乐观锁和悲观锁

目录 定义 场景 乐观锁与悲观锁 模拟修改冲突数据库中增加商品表 乐观锁实现 悲观锁 定义 1&#xff09;乐观锁 首先来看乐观锁&#xff0c;顾名思义&#xff0c;乐观锁就是持比较乐观态度的锁。就是在操作数据时非常乐观&#xff0c;认为别的线程不会同时修改数据&#x…

红旅在线语料库网站 开发笔记

桂林红色旅游资源在线语料库网站 &#xff08;Guilin Red Culture Corpus&#xff09;提供双语文本检索和分享功能。供英语、翻译相关专业的爱好者&#xff0c;学生和老师学习使用。 该网站是对BiCorpus开源项目的二次开发(已获得原作者授权)。 项目仓库&#xff1a;RedCorpu…

小米miui14更新公测

一人内测&#xff0c;全员公测&#xff0c;懂得都懂[滑稽] 必应搜索醉里博客http://202271.xyz?miui 1月份有一部分机型就要公测了&#xff0c;相关用户愿意等的可以再等等。 本篇介绍最简单粗暴的替换法&#xff0c;不管你刷没刷过机都可以用这个方法偷渡MIUI14 ★★★评论…

区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-GRU卷积门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-GRU分位数回归卷积门控循环…

可靠性设计:元器件、零部件、原材料的选择与控制

通常&#xff0c;一个产品由各种基础产品(包括各种元器件、零部件等)构成。由于元器件、零部件的数量、品种众多&#xff0c;所以他们的性能、可靠性、费用等参数对整个系统性能、可靠性、寿命周期费用等的影响极大。 原材料则是各种基础产品的基本功能赖以实现的基础&#xf…