首页 > 其他分享 >uniapp项目实践总结(二十四)安卓平台 APP 打包教程

uniapp项目实践总结(二十四)安卓平台 APP 打包教程

时间:2023-09-26 20:34:41浏览次数:33  
标签:keystore uniapp keytool 证书 安卓 jks 密钥 APP 打包

导语:当你的应用程序开发完成后,在上架安卓应用商店之前,需要进行打包操作,下面简单介绍一下打包方法。

目录

  • 准备工作
  • 配置项目
  • 生成证书
  • 打包配置

准备工作

在打包之前,请保证你的 uniapp 应用程序编译到安卓手机模拟器的 App 是可以正常运行的,APP 打包分为安卓和 ios 两个平台,下面简单介绍一下安卓的打包方法,由于本地打包问题较多,操作比较复杂,这里就省略了,本次主要介绍在线打包的方法。

配置项目

主要是在manifest.json进行配置;打开文件后添加以下几个内容。

基本信息

应用名称、描述、版本名称、版本号;

图标配置

上传你的应用图标,建议1024*1024,然后自动生成所有图标并替换;

启动界面

使用原生隐私政策提示框,这个很重要,勾选后会自动生成配置文件androidPrivacy.json,示例如下:

根据你自己的实际情况填写对应的内容和地址。

{
  "version": "1.0.0",
  "prompt": "template",
  "title": "服务协议和隐私政策",
  "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
  "buttonAccept": "同意并接受",
  "buttonRefuse": "暂不同意",
  "hrefLoader": "system|default",
  "backToExit": "false",
  "second": {
    "title": "确认提示",
    "message": "  进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>,否则将退出应用。",
    "buttonAccept": "同意并继续",
    "buttonRefuse": "退出应用"
  },
  "disagreeMode": {
    "support": false,
    "loadNativePlugins": false,
    "visitorEntry": true,
    "showAlways": false
  },
  "styles": {
    "backgroundColor": "#00FF00",
    "borderRadius": "5px",
    "title": {
      "color": "#ff00ff"
    },
    "buttonAccept": {
      "color": "#ffff00"
    },
    "buttonRefuse": {
      "color": "#00ffff"
    },
    "buttonVisitor": {
      "color": "#00ffff"
    }
  }
}

模块配置

这块根据你自己的需要进行打勾选择。比如我用到的是扫码,分享就勾选就好了;如果遇到支付,登录或分享,还需要到对应平台申请应用 ID 和通用链接。

权限配置

这块就是根据你自己应用的情况来勾选对应的权限,用到什么就勾选什么好了,不用勾选多余的,以免上架审核被打回来。

常用其他设置

这块主要是支持 CPU 类型,HBuilderX 已经支持以下 CPU 架构:

  1. armeabi-v7a:第 7 代及以上的 ARM 处理器(ARM32 位),市面上大多数手机使用此 CPU 类型。
  2. arm64-v8a: 第 8 代、64 位 ARM 处理器(ARM64 位),最近两年新发的设备使用此 CPU 类型,可以兼容使用 armeabi-v7a 的 so 库。
  3. x86: 少部分平板使用 x86,AS 模拟器中选了 intel x86 时使用 x86 处理器,以及其它常用三方模拟器通常使用 x86

还要就是 UrlSchemes 协议设置,这里根据自己应用名称设置就好了。

  • 剩余配置

剩下的就根据自己实际情况配置就好,不多介绍了。

生成证书

这里主要是使用 JavaSDK 自带的keytool工具来生成自有证书。

查看帮助

C:\Users\Hello>keytool
密钥和证书管理工具

命令:

 -certreq            生成证书请求
 -changealias        更改条目的别名
 -delete             删除条目
 -exportcert         导出证书
 -genkeypair         生成密钥对
 -genseckey          生成密钥
 -gencert            根据证书请求生成证书
 -importcert         导入证书或证书链
 -importpass         导入口令
 -importkeystore     从其他密钥库导入一个或所有条目
 -keypasswd          更改条目的密钥口令
 -list               列出密钥库中的条目
 -printcert          打印证书内容
 -printcertreq       打印证书请求的内容
 -printcrl           打印 CRL 文件的内容
 -storepasswd        更改密钥库的存储口令

使用 "keytool -command_name -help" 获取 command_name 的用法

制作证书

keytool -genkey -alias hello -keyalg RSA -keysize 2048 -validity 36500 -keystore hello.keystore
  • hello 是证书别名,建议字母和数字;
  • hello.keystore 是证书文件名称;
  • 36500 是证书的有效期,单位天;

回车以后填入以下信息确认。

输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  Mark
您的组织单位名称是什么?
  [Unknown]:  Hello
您的组织名称是什么?
  [Unknown]:  Hello.inc
您所在的城市或区域名称是什么?
  [Unknown]:  JC
您所在的省/市/自治区名称是什么?
  [Unknown]:  SX
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=Mark, OU=Hello, O=Hello.inc, L=JC, ST=SX, C=CN是否正确?
  [否]:  y

输入 <hello> 的密钥口令
        (如果和密钥库口令相同, 按回车):
再次输入新口令:

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore hello.keystore -destkeystore hello.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

查看证书

可以使用以下命令查看证书信息。

keytool -list -v -keystore hello.keystore
# 输入密码,回车
输入密钥库口令:

可以看到打印出信息了。

密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: hello
创建日期: 2023-9-25
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Mark, OU=Hello, O=Hello.inc, L=JC, ST=SX, C=CN
发布者: CN=Mark, OU=Hello, O=Hello.inc, L=JC, ST=SX, C=CN
序列号: 57f8059e
有效期为 Mon Sep 25 17:55:21 CST 2023 至 Wed Sep 01 17:55:21 CST 2123
证书指纹:
         MD5:  32:5D:CA:E6:62:91:E5:1A:AE:86:07:08:B9:49:D8:08
         SHA1: 4D:F1:3E:4C:1A:7A:F2:A3:3C:35:5F:C9:8D:1F:4D:F1:11:6A:B0:A0
         SHA256: 10:EC:97:1E:70:CC:00:86:BF:3A:F3:6A:56:12:36:41:B6:C8:92:DE:4F:C6:9B:D8:77:E0:A8:E5:68:D3:24:B2
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A0 E4 E3 A3 F8 E5 FF 8A   D9 1E EF D9 F6 DE E5 A7  ................
0010: C4 DC 97 3D                                        ...=
]
]

*******************************************
*******************************************

其中证书的指纹信息:

  1. MD5:证书的 MD5 指纹信息
  2. SHA1:证书的 SHA1 指纹信息
  3. SHA256:证书的 SHA256 指纹信息

常用的命令

# 生成jks证书
keytool -genkeypair -alias demo1 -keystore demo.jks -validity 36500 -keyalg ec
keytool -genkeypair -alias demo2 -keystore demo.jks
# 查看jks证书
keytool -list -keystore demo.jks
# 查看jks证书信息
keytool -list -v -keystore demo.jks
keytool -list -keystore demo.jks -storepass 123456
# 导入cer证书
keytool -exportcert -alias demo1 -file demo1.cer -keystore demo.jks -storepass 123456
# 导出cer证书
keytool -importcert -alias demo1cert -file demo1.cer -keystore demo.jks -storepass 123456
keytool -importkeystore -srckeystore demo.jks -srcalias demo1 -srcstorepass 123456 -destkeystore demo1.p12 -deststoretype pkcs12 -deststorepass 123456
# 打印cer证书信息
keytool -printcert -file demo1.cer
# 生成公钥和私钥
openssl pkcs12 -in demo1.p12 -out demo1.pem -passin pass:123456 -passout pass:123456
openssl ec -in demo1.key

打包配置

自制好证书以后,开始填写相关的信息。

Android 包名

包名必须是字母、数字或下划线,并且以.分割为两段内容,每段内容必须以字母开头,首字母必须为小写字母,例如:dev.hello.test;

签名证书

可以选择自有证书,就是刚刚制作的证书,使用云端证书以及公共测试证书三种选择,建议云端或者自有证书。

  • 证书别名:例如hello;
  • 证书私钥密码:例如123456;
  • 证书文件:游览选择你的证书文件;

打包类型

  • 正式包:可以安装或发布到应用商店;
  • 自定义基座调试包:只能本地真机调试使用;
  • 渠道包:就是针对各个应用商店进行打包;
  • 传统打包:需要上传代码及证书;
  • 快速安心打包:不上传代码及证书,打包更快;
    image

填完以上信息后,点击打包按钮,开始打包了,打包数量多时需要排队等候。

[HBuilder] 11:17:50.233 项目 hello [__UNI__XXXXXXX]的打包状态:
[HBuilder] 11:17:50.233 时间: 2023-09-25 11:17:48    类型: Android自有证书    队列中
[HBuilder] 11:17:50.233 目前云打包排队人数较多,当前打包任务位于队列第 27位,预计 2 分钟内进入打包状态。

打包成功

打包成功以后,在{项目根目录}/unpackage/release/apk/文件夹下会生成一个__UNI__XXXXXX__20230925111748.apk的安卓安装包,这就是打包成功了。

最后

以上就是安卓平台 APP 打包教程的主要内容,有不足之处,请多多指正。

标签:keystore,uniapp,keytool,证书,安卓,jks,密钥,APP,打包
From: https://www.cnblogs.com/guanqiweb/p/17731074.html

相关文章

  • uniapp微信小程序如何点击复制文字内容?
    uniapp微信小程序点击复制文字内容如果使用微信小程序把uni.换成wx.就可以了下面用的都是是uni的实例uni.setClipboardData是把指定数据按照指定格式放入剪切板中uni.setClipboardData({data:'复制的文字',success:function(res){uni.getC......
  • 【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
    问题描述启用AppServiceLocalGit部署,在Clone代码库到本地时候,卡在Clone‘xxxxxx’......一动不动的问题? 问题解答因为GitClone没有任何日志输出,所以在其他IDE上也尝试GitAppService的代码库。在intellj的git操作,报错“unabletoaccess,SSLcertificateproblem:una......
  • 【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
    问题描述启用AppServiceLocalGit部署,在Clone代码库到本地时候,卡在Clone‘xxxxxx’......一动不动的问题? 问题解答因为GitClone没有任何日志输出,所以在其他IDE上也尝试GitAppService的代码库。在intellj的git操作,报错“unabletoaccess,SSLcertificateproble......
  • uniapp项目实践总结(二十三)网页和小程序应用打包教程
    导语:当你的应用程序开发完成后,在发布到互联网之前,需要进行打包操作,包括网页端、小程序端的打包。目录准备工作网页打包小程序打包准备工作在打包之前,请保证你的uniapp应用程序编译到网页、小程序是可以正常运行的。网页打包编写好应用之后,如需打包到web平台,可以选......
  • KdMapper扩展实现之MICSYS(MsIo64.sys)
    1.背景  KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称MsIo64.sys 时间戳5DA7C......
  • 构建高效的同城O2O外卖系统APP:技术要点和最佳实践
    时下,消费者的需求不断演变,迫使外卖服务提供商不断改进其技术和服务。本文将讨论如何构建一个高效的同城O2O(Online-to-Offline)外卖系统APP,突出了关键的技术要点和最佳实践。一、用户界面设计 1.1 直观简单直观,以确保用户可以轻松地浏览菜单、下单和支付。使用易于理解的图标和符号......
  • Android Flutter 混合开发高仿大厂App
    自上篇 Flutter10天高仿大厂App及小技巧积累总结 的续篇,这次更是干货满满。这篇文章将概述 Android组件化的架构搭建 及 Flutter 和 Android 如何混合开发 (整个App只有首页是用原生Android完成,其他页面都是引入之前的做好的Flutter页面) ,主宿主程序由Android搭建,采用......
  • sqlalchemy之append
    在SQLAlchemy中,append方法通常用于将一个对象添加到关系属性中,特别是在多对多(Many-to-Many)或一对多(One-to-Many)关系中。这个方法的用途是向关系属性添加一个新的关联对象,以建立关系。在多对多关系中,通常有一个中间表来表示两个模型之间的关系。append方法用于将一个对象添加......
  • 看广告小程序源码app解决方案
      看广告小程序其实在开发难度并不大,看技术人员如何对接好广告接口,看广告软件的模式已经开始形成一个产业链了。现在介绍的就是关于一种完整的看广告小程序源码App解决方案,包括其设计理念、功能特点、技术实现及未来发展。  一、软件的设计  看广告小程序软件设计是......
  • 软件抢单派单app开发
      抢单派单软件可以运用到任务的行业,只要设计到订单的问题都可以实现,还有就是软件的自动分配订单问题。它能很好的帮助企业和商家实现自动化的分配订单,拥有了这款派单抢单的软件就能实现减少运营成本的目的。  抢单派单软件功能主要有两个大部分:任务订单的管理,订单管理,任......