uniapp离线打包笔记

环境:Android,Android Studio,Java1.8

参考地址:《Android 原生工程配置》《Android 离线打包使用插件》

一、创建证书

参考:《Android平台签名证书(.keystore)生成指南》

具体命令:

生成

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

生成完可能会提示密码库更换(貌似是这个),控制台会提示对应命令,复制执行即可

查看证书信息

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

二、申请离线打包AppKey

登录开发者中心,选中app点击应用名称,选择各平台信息,点击新增,填写信息,具体不做详细说明,见官方说明。注意:包名一定要跟app包名一致

三、Android工程项目

下载Android离线SDK:最新android平台SDK下载,解压,然后在Android Studio中导入HBuilder-Integrate-AS项目,因为这是官方的Demo,只需要配置一些参数即可。

注意:

  • File-Settings-Build,Execution,Deployment-Build Tools-Gradle 中的Gradle JDK 需选择 Java1.8 版本。

项目打开默认是Android模式,点击左上角Android下拉,选择Project。

1. 配置AppKey

找到simpleDemo中的 src\main\AndroidManifest.xml,找到name值为 dcloud_appkey 的 meta-data,然后将AppKey复制到value中。

2. 包名

找到simpleDemo中的 src\main\AndroidManifest.xml,将manifest的 package 改为自己app的包名

3. 配置信息

找到simpleDemo中的 build.gradle 找到 defaultConfig

  • applicationId 改为自己项目的包名(要跟AppKey的包名对应)
  • versionCodeversionName 改为自己app的版本
    versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致
    versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。
  • targetSdkVersion 设置为30或以上
  • minSdkVersion 最低支持21,小于21在部分5.0以下机型上将无法正常使用

4. 证书

simpleDemo\build.gradle 中的signingConfigs下,将证书信息改为自己的证书信息

  • keyAlias 证书别名
  • keyPassword 别名密码
  • storeFile 证书路径,绝对路径即可,如D:\Android\test.keystore
  • storePassword 文件密码

5. 应用名称

打开 simpleDemo\src\main\res\values\strings.xml ,app_name的值改为自己应用的名字

6. 应用图标

在simpleDemo\src\main\res下创建文件夹:

drawable、drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi

然后将不同尺寸的图片分别以icon、push、splash命名放到不同文件夹下

  • icon.png为应用的图标
  • push.png为推送消息的图标
  • splash.png为应用启动页的图标

图标大小参考:

分辨率 图标尺寸
ldpi(低密度) 36 x 36 px
mdpi(中等密度) 48 x 48 px
hdpi(高密度) 72 x 72 px
xhdpi(超高密度) 96 x 96 px
xxhdpi(超超高密度) 144 x 144 px

用于启动页对不同屏幕的适应情况可能会有所拉伸,所以可以使用.9.png,参考:《Android平台启动图使用.9.png图片》

启动页大小参考:

分辨率 启动页尺寸
ldpi(低密度) 200 x 320 px
mdpi(中等密度) 320 x 480 px
hdpi(高密度) 480 x 800 px
xhdpi(超高密度) 720 x 1280 px
xxhdpi(超超高密度) 1080 x 1920 px

7. 引入Uniapp项目

删掉 simpleDemo\src\main\assets\apps,下的文件夹,在HBuilderX中,点击发行-原生App本地打包-生成本地App打包资源,待打包完后,将 dist-resources 下的文件夹复制到 simpleDemo\src\main\assets\apps

simpleDemo\src\main\assets\data\dcloud_control.xml 中的appid值改为自己Uniapp项目的AppID(生成自定义基座,需要在根节点下添加debug="true"和syncDebug="true")

8. 运行/打包

链接手机,打开USB调试或者打开安卓模拟器,点击Android Studio上方的绿色三角即可。

点击Android Studio菜单的 Build-Generate Signed Bundle / APK...,弹出窗中选择APK,点击Next,然后选择证书,填写密码等信息即可。

三、原生插件

如果离线打包使用了原生插件,需要将插件文件夹下的android、以及libs中的arr和jar都复制到 simpleDemo\libs 中,然后在 simpleDemo\src\main\assets 中创建 dcloud_uniplugins.json 文件,将插件信息写入,如:

json 复制代码
{
  "nativePlugins": [
    {
      "plugins": [
        {
          "type": "module",
          "name": "JG-JCore",
          "class": "cn.jiguang.uniplugin_jcore.JCoreModule"
        },
        {
          "type": "module",
          "name": "JG-JPush",
          "class": "cn.jiguang.uniplugin_jpush.JPushModule"
        }
      ]
    }
  ]
}

可具体找到插件package.json中的plugins信息复制

如果插件需要特定参数,如在HBuilderX的manifest.json中的App原生插件配置,可能要填写一些参数,需要在 src\main\AndroidManifest.xml 中配置特定的meta-data,name值往往与HBuilderX中要求的一直,注意省略_ANDROID、_IOS字符,如极光配置:

HBuilderX中为JPUSH_APPKEY_ANDROID,而AndroidManifest需配置:

xml 复制代码
<meta-data
	android:name="JPUSH_APPKEY"
	android:value="你申请的appkey" />

感谢阅读!点个赞留个足迹吧!

相关推荐
冷眼看人间恩怨1 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
web150850966414 小时前
在uniapp Vue3版本中如何解决webH5网页浏览器跨域的问题
前端·uni-app
Hejjon7 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室9 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.9 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑11 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing12 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉12 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu8313 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
初学者7.14 小时前
Webpack学习笔记(3)
笔记·学习·webpack