最近使用uniapp开发apk,碰到一个问题,就是uniapp打包静态资源文件之后,你想要打包为apk的时候,有选择两种方式,一种是使用HBuilder云打包的方式进行打包处理,还有一种是本地Android Studio中打包的方式,第一种方式,可以实现你测试打包的方式,但是需要排队等待,动不动几十分钟上下的等待时间,比较难受,所以笔者采用第二种方式本地离线打包的方式进行,这里我只对现有项目进行处理,就不从0-1搭建了HBuilder X 的uniapp进行部署处理了。
前置条件
使用HBuilder X的时候需要他的账户,你需要注册一个账户,然后创建一个app

如图所示:
看到app这个应用名称,然后点进去,你就看到相关明细数据:



记得一定要生成证书,后续有用,没有证书本地离线打包不成功
在这块,你在上述配置好并生成证书之后,到这个平台信息这,点击修改,填写上述证书中的相关密钥


填写完成之后,会有一个离线密钥,注意密钥,很关键,如下图所示,这个地方的这个密钥,在下面的正式打包的地方有地方需要用到,这个密钥没有,打包是不会成功的。


导入Uniapp项目到HBuilder X
能打包的前提条件,你需要将项目先通过HBuilder X 跑起来。

然后找到这个发行的地方,我们选择这第三个,然后点击生成本地打包app资源

如下图所示,等待打包的资源生成。

在Android Studio中进行打包
前置条件,需要用户自己下载Android Studio 安装包去进行安装并且配置好SDK,然后我们在根据
Uniapp官网进行安装。
https://developer.android.google.cn/studio?hl=zh-cn
https://nativesupport.dcloud.net.cn/AppDocs/download/android.html
这里边的SDK是HBuilder X的,第二个链接。
强调笔者的Hbuilder X 的版本是5.0.7

所以官网选择HBuilder X 的版本也应该是5.0.7
官方百度网盘历史版本:

选择对应版本自行下载好之后,根据笔者的步骤来,一步一步来:
下载完毕zip,解压SDK如下图所示

将这个项目导入到Android Studio 中,很重要

如图所示,这一块我标注的地方,是我们需要替换的地方,这个地方就是我们在HBuilder X中构建出的静态资源的文件夹,我们需要把下载的HBuilder中的SDK的这个删除,然后将HBuilder X中的粘贴进来,粘贴后如下图所示。

然后和找到这个data的这个文件,把这个appid名字改成和这个apps下你复制的打包资源文件名称一模一样的。

然后找到这个AndroidManifest.xml文件给予安卓对应的权限:
为了避免资料不全现在我给出我的
xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<application
android:allowBackup="true"
android:allowClearUserData="true"
android:extractNativeLibs="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true">
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:exported="true"
android:hardwareAccelerated="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="user"
android:theme="@style/TranslucentTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntryActivity"
android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTask"
android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
android:screenOrientation="user"
android:theme="@style/DCloudTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data
android:scheme=" "
tools:ignore="AppLinkUrlError" />
</intent-filter>
</activity>
<meta-data
android:name="dcloud_appkey"
android:value="输入密钥" />
</application>
</manifest>
这里的输入密钥,来自



这块密钥和别名来自如图:


然后在build.gradle中填写上述资料,填写完毕,注意,下面的这个代码仅供参考,笔者只是告诉你应该怎么填写,但具体的填写内容根据你打包的时候包名都在如下图所示的地方,根据你自己的来。

这块,build.gradle
gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 35
buildToolsVersion '35.0.0'
namespace '你的包名'
defaultConfig {
applicationId "你的包名"
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
multiDexEnabled true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
signingConfigs {
config {
keyAlias 'appid别名'
keyPassword '你的密钥密码'
storeFile file('test.jks')
storePassword '你的密钥密码'
v1SigningEnabled true
v2SigningEnabled true
}
}
buildTypes {
debug {
signingConfig signingConfigs.config
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
signingConfig signingConfigs.config
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
aaptOptions {
additionalParameters '--auto-add-overlay'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.core:core:1.1.0'
implementation "androidx.fragment:fragment:1.1.0"
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.facebook.fresco:fresco:2.5.0'
implementation "com.facebook.fresco:animated-gif:2.5.0"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.2.83'
implementation 'androidx.webkit:webkit:1.5.0'
}
接下来,就是最后一步,认真看博客的网友,你发现有个test.jks文件,你一定很好奇是怎么来的,这是官方提供的,官方里边有一个,但是我们需要用我们自己生成的,下载这个文件的在这里,我们需要做的,就是将这个下载的文件,应该是一串代码的文件。

b3a23c8d83a************ab.keystore
类似这种的,我们需要删除他项目提供的test.jks文件,然后把这个b3a23c8d83a************ab.keystore重命名为test.jks然后粘贴进去,然后配置上述的别名和密码,注意别搞错了
至此,我们就可以在Android Studio 中本地运行Uniapp 进程到手机上了,步骤稍多,注意认真查看。

参考官网链接 : https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html
参考博文:
https://blog.csdn.net/weixin_42957894/article/details/145670700
笔者,在官网和上述博客基础上的完善,请结合品尝。