用 Android Studio 打包 uni-app 的安卓apk;手把手教程、巨详细避坑

news2024/10/6 15:37:30

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
        在这里插入图片描述
      • 将 build.gradle 中的 applicationId 设置成申请AppKey时的包名
        在这里插入图片描述
  • 设置应用名称

    • 编辑 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/539499.html

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

相关文章

DETR类环境快速搭建

DINO下载地址&#xff1a; git clone https://github.com/IDEA-Research/DINO.gitconda create -n detr python3.8 -y修改写入权限 sudo chmod aw /home/ubuntu/.conda/激活环境 source activate detr安装pytorch conda install pytorch1.12.1 torchvision0.13.1 torchaudio…

OpenHarmony Docker移植实践

Docker简介 从操作系统诞生之日起&#xff0c;虚拟化技术就不断的演进与发展&#xff0c;结合目前云原生的发展态势&#xff0c;容器无疑是其中的重要一环。 Docker是一个开源的软件项目&#xff0c;可以在Linux操作系统上提供一层额外的抽象&#xff0c;让用户程序部署在一个相…

React面试题汇总 ---1

1.React的严格模式如何使用&#xff0c;有什么用处&#xff1f; React中StrictMode严格模式_react.strictmode_前端精髓的博客-CSDN博客当我们使用 npx create-react-app my-app 创建一个项目的时候。项目中有一段如下所示的代码&#xff1a;ReactDOM.render( <React.Stric…

SCADA数据采集与监控系统在制药生产过程中的应用

01 应用背景 制药行业关乎大众生命健康&#xff0c;在生产过程中各方面都要求遵循质量规范。制药行业虽然是一种流程化行业&#xff0c;但是和石油、化工等流程行业不同&#xff0c;行业特点决定了它的特殊性。根据质量规范要求&#xff0c;制药行业的SCADA需要满足国内GMP、欧…

David Silver Lecture 8: Integrating Learning and Planning

1 Introduction 1.1 Model based Reinforcement Learning 1.2 model based and model free RL 2 Model-Based Reinforcement Learning 2.1 outline 2.2 Learning a model 2.2.1 what is a model model主要是指&#xff0c;state transitions和相应的reward。 2.2.2 Model…

Fabric 超级账本学习【12】Hyperledger Fabric 2.4+Gin框架+Gateway 读取/写入账本数据 (Go版本)

文章目录 Fabric2.4Gin框架Gateway 读取/写入账本数据Gin框架优点Fabric-GatewayGateway搭建客户端我们需要准备哪些文件Gateway Client 为什么整个过程没有指定过背书节点?&#xff08;请求背书原理&#xff09;安装Gin前提条件成功部署Fabric2.4&#xff08;或其他版本的&am…

Qt 自定义窗口的标题栏,重写鼠标事件实现,隐藏窗口,最大化/最小化窗口,关闭窗口

Qt 自定义窗口的标题栏&#xff0c;重写鼠标事件实现&#xff0c;隐藏窗口&#xff0c;最大化/最小化窗口&#xff0c;关闭窗口 1、main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widg…

ArcGis教程-画一幅城市的shp地图

怎样使用ArcGis10.6得到这么一幅shp地图呢&#xff1f; 首先打开ArcGis10.6&#xff0c;点击带黄底的小加号&#xff0c;添加底图。 可以选择中国地图彩色版&#xff0c;然后双击&#xff0c;转动鼠标滑轮找到属于自己的城市。 点击-目录&#xff0c;在新建的文件夹里右击-新建…

TS:如何判断联合类型变量的具体类型?

一 表示一个值可以是几种类型之一&#xff1a;联合类型 在TS中我们常会遇到这样一个问题。 一个变量&#xff0c;即可能是这种类型&#xff0c;也可能是那种类型&#xff0c;然后根据传入的类型的不同进行不同的操作。 比如下面这种情况&#xff1a; if (pet.name fish) {p…

三种灰狼优化算法(Grey Wolf Optimization)及仿真实验——附代码Matalb

目录 摘要&#xff1a; 灰狼算法原理&#xff1a; 灰狼算法流程&#xff1a; 改进的灰狼算法&#xff1a; 多目标的灰狼算法&#xff1a; 三种灰狼算法运行效果&#xff1a; &#xff08;1&#xff09;GWO &#xff08;2&#xff09;I-GWO &#xff08;3&#xff09;M…

Windows Server 2016 中文版、英文版下载 (updated May 2023)

Windows Server 2016 中文版、英文版下载 (updated May 2023) Windows Server 2016 Version 1607&#xff0c;2023 年 5 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2016/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

4.7 树的实现(上)

树 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个节点的有限集合T&#xff0c;它满足两个条件 &#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b; 其余的节点可以分为m&#xff08;m≥0&#xff09;个互不相交的有…

电子企业WMS仓储管理系统解决方案

随着科技的飞速发展&#xff0c;电子制造行业对仓储管理系统的需求也越来越高。电子企业需要一种能够规划、执行和优化仓库货物流通的IT解决方案&#xff0c;以实现自动化操作和提高效率。本文将探讨电子企业WMS仓储管理系统解决方案&#xff0c;从需求分析、系统设计、实施与运…

在Windows系统中安装Wireshark(图文)

1.打开Wireshark官网后&#xff0c;点Get Acquainted->Download后进入到下载界面&#xff0c;在Stable Release中选择下载Windows 64位的安装包&#xff0c;单击Windows Installer(64-bit) 下载。 2.双击下载的安装包&#xff0c;如下图&#xff0c;点击Next。 3.点Noted&am…

ELK的安装部署与使用

ELK的安装与使用 安装部署 部署环境&#xff1a;Elasticsearch-7.17.3 Logstash-7.17.3 Kibana-7.17.3 一、安装部署Elasticsearch 解压目录&#xff0c;进入conf目录下编辑elasticsearch.yml文件&#xff0c;输入以下内容并保存 network.host: 127.0.0.1 http.port: 9200…

基于相似加权自组装框架的低质量少样本MRI脑卒中病变分割

文章目录 Stroke Lesion Segmentation from Low-Quality and Few-Shot MRIs via Similarity-Weighted Self-ensembling Framework摘要本文方法Soft Distribution-aware Updating (SDU) 实验结果 Stroke Lesion Segmentation from Low-Quality and Few-Shot MRIs via Similarity…

蓝桥杯模块学习5——按键

第一章 硬件部分 1.1 电路的组成部分 1.1.1 按键电路 原理图&#xff1a; 功能&#xff1a; &#xff08;1&#xff09; J5&#xff1a;当1和2相接&#xff0c;电路就变成一个4*4的矩阵键盘电路&#xff1b;当2和3相接时&#xff0c;电路变成了一个S4-S7的独立按键&#xf…

平板触控笔要原装的吗?苹果平替笔性价比高的推荐

与苹果的电容笔不同&#xff0c;市场上的电容笔只会给人一种倾斜的压感&#xff0c;并不会像苹果的电容笔那样&#xff0c;可以给人一种重力的压感。不过&#xff0c;如果你不一定要画画&#xff0c;那你就不用花很多钱去买一支苹果的原装电容笔了&#xff0c;只需一支平替电容…

ss命令使用详解

ss是Socket Statistics的缩写。顾名思义&#xff0c;ss命令可以用来获取socket统计信息&#xff0c;它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息&#xff0c;而且比netstat更快速更高效。 当服务器的socket连接数量变得非常大…

从小白到专家:如何在营销中利用 AI 的力量

欢迎来到营销的未来&#xff0c;时至今日人工智能和人类专业知识以前所未有的方式结合在一起。 认识ChatGPT&#xff0c;这是改变游戏规则的革命性工具。 借助ChatGPT&#xff0c;你最终将能够利用AI的力量做出明智的、数据驱动的决策来满足你的受众需求。 但ChatGPT不仅仅是…