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

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

相关推荐
shuaiqinke2 小时前
【分享】OrbitV工具箱| 手表手环全能适配 |表盘应用一键装
android·智能手机
2501_915921432 小时前
使用Swift和Xcode创建简单iOS应用完整教程
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
yangshuo12812 小时前
Kiro IDE高级模型claude opus等模型没有 太多限制invalid等问题解决方案
ide
simplepeng14 小时前
我们都知道但总是忽略的5个Jetpack Compose细节
android·android jetpack
刮风那天14 小时前
Android 如何提高进程优先级避免被查杀?
android
修行者对66616 小时前
安卓阿里云镜像
android
刮风那天16 小时前
Android AMS创建进程不用Binder而用Socket?
android·java·binder
知行合一。。。18 小时前
Python--05--面向对象(继承,多态)
android·开发语言·python