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

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

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户3 小时前
IDEA:Command line is too long
java·ide·intellij-idea
BoomHe4 小时前
Android Framework 文件应用移植到 AndroidStudio
android
传奇开心果编程5 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
>Andre<5 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
事圆则缓6 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
mmsx6 小时前
Android 地图十万要素不卡顿:空间网格 + 渐进式加载的移动端实践
android·大数据·opengl
Godikov8 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面8 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向
终端安全笔记10 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
字节暗面10 小时前
一次游戏安全SO静态分析记录:腾讯ACE与FairGuard加固强度对比
android·逆向工程·游戏加固