HBuilder X本地打包的资源放到Android Studio本地打包的记录

最近使用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

官方百度网盘历史版本:

https://pan.baidu.com/s/1KtOCtMZJSgfAayHNjTpdTg?pwd=4hvi#list/path=%2Fsharelink291282757-128793585070730%2Fhistory\&parentPath=%2Fsharelink291282757-128793585070730

选择对应版本自行下载好之后,根据笔者的步骤来,一步一步来:

下载完毕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

笔者,在官网和上述博客基础上的完善,请结合品尝。

相关推荐
qeen87几秒前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
故渊at5 分钟前
第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
android·gitee·broadcast·广播·动态注册·静态注册
sinat_2554878113 分钟前
第七部分。介绍MVC(模型-视图-控制器)模式
java·ide·http·tomcat·intellij-idea
JohnnyDeng9431 分钟前
【Android】Room 数据库高级用法与性能调优:从查询瓶颈到毫秒级响应
android·性能优化·kotlin·room
zeqinjie39 分钟前
Flutter 折叠屏 iPad / 宽屏适配实践
android·前端·flutter
ab_dg_dp40 分钟前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
Arrom1 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java
_李小白2 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习
Algorithm_Engineer_4 小时前
如何利用Pycharm进行分布式的Debug训练
ide·分布式·pycharm
Jumbo星5 小时前
新版vscode侧边资源管理器的文件搜索
ide·vscode·编辑器