SHO酱的Blog

SHO酱的Blog

将 uni-app 离线打包成 Android apk 安装包

2024-04-02
将 uni-app 离线打包成 Android apk 安装包

版本说明

这很重要,一切抛开版本谈操作的记录都是耍流氓。

  • HBuilder X 4.08
  • Android Studio 2023.2.1
  • Android离线SDK 4.07.82050_20240328 下载
  • Java 1.8.0_311

名词解释

  • 基座 指的就是Android离线SDK

步骤

HBuilder中的项目配置

在 HBuilder X 中导入uni-app项目目录。找到并打开项目目录/src/mainifest.json文件,显示配置内容,其中需要配置其中 uni-app应用标识(AppID) 如果默认没有的话,点后面的重新获取会生成一个AppID。然后就是选择开发使用的vue版本,其它信息按实际情况填写即可。
uniapp_package_01.png

生成本地打包App资源

通过下图中的菜单对uni-app进行打包,打包后注意控制台输出信息,其中有项目的打包后的目录信息。
uniapp_package_02.png

[HBuilder] 15:29:04.627 项目 'xxx-project' 编译成功。
[HBuilder] 15:29:05.405 项目 'xxx-project'正在导出...
[HBuilder] 15:29:05.623 项目 'xxx-project'导出成功,路径为:D:/Programs/xxx-project/dist/resources/__UNI__XXXX/www
[HBuilder] 15:29:05.623 提示:本wgt文件由HBuilderX 4.08版本生成,运行的基座sdk也需配套相同版本,否则在手机端部分功能可能无法正常使用。详见 https://ask.dcloud.net.cn/article/35627

Android Studio项目准备

首先将上一步骤中获得的__UNI__XXXX完整的复制到基座中的\HBuilder-Integrate-AS\simpleDemo\src\main\assets\apps文件夹中。
uniapp_package_03.png

使用 Android Studio 打开基座HBuilder-Integrate-AS目录(项目)。
uniapp_package_04.png

配置基座项目

打开基座项目后,分别打开下图中的4个配置文件。
尤其是第4个文件,在3.x版本的基座程序中没有类似问题,所以参考文章中没有说明。
uniapp_package_05.png

  1. AndroidMainifest.xml 这里需要配置应用的packageappkey
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.xxx">

    <application ... ...>
        ... ...
        <meta-data
            android:name="dcloud_appkey"
            android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
    </application>

</manifest>
  1. dcloud_control.xml 这里需要配置应用uni-app的mainifest.json文件中的AppID
<hbuilder>
<apps>
    <app appid="__UNI__XXX" appver=""/>
</apps>
</hbuilder>
  1. strings.xml 这里配置打包后的APP名称
<resources>
    <string name="app_name">APP名称</string>
</resources>
  1. build.gradle 这里需要配置 applicationIdkeyAliaskeyPasswordstoreFilestorePassword
apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion '30.0.3'
    defaultConfig {
        applicationId "com.android.xxx"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    signingConfigs {
        config {
            keyAlias '__uni__xxx'
            keyPassword 'keyPassword'
            storeFile file('D:/Downloads/xxx.keystore')
            storePassword 'storePassword'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
    ... ...
}
... ...

再次强调配置信息与DCloud信息对应

注意:图片中对应的修改信息的位置

uniapp_package_21.png
uniapp_package_22.png
uniapp_package_24.png

参考

uni-app项目打包成apk(本地打包篇)_uniapp打包apk-CSDN博客