h***@163.com
h***@163.com
  • 发布:2025-11-29 15:46
  • 更新:2025-11-29 15:46
  • 阅读:19

小白的我分享补充UniappX安卓本地打包流程中的两个细节

分类:uni-app x

本文只针对UniappX的安卓端本地打包(iOS端我还没看)

首先,说明一下,我不会android studio原生开发,一直都是用的云打包。最近接了个项目,必须本地打包,就专门研究了一下。
我现在已经把UniappX的本地打包走通了,对于下面两点,对于小白可能会蒙圈,我就蒙圈了。所以写下来分享一下。可能有不对的地方,请及时指正。
昨天新装的:Android Studio Otter | 2025.2.1 Patch 1

以下是UniappX的本地打包过程:
打包第一步:在android studio里创建一个Empty Activity的工程,包名使用HBuilderX里的项目包名。
打包第二步:照着官方文档一步步做,绝对好使:https://doc.dcloud.net.cn/uni-app-x/native/use/android.html

我在这里说两点容易掉坑里的地方:

1.按文档改完后,启动调试发现打开的还是项目原本的默认页面 hello android.
解决方法:打开/app/src/main/AndroidManifest.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">  

    <application  
        android:name="io.dcloud.uniapp.UniApplication"  
        android:allowBackup="true"  
        android:dataExtractionRules="@xml/data_extraction_rules"  
        android:fullBackupContent="@xml/backup_rules"  
        android:icon="@mipmap/ic_launcher"  
        android:label="@string/app_name"  
        android:roundIcon="@mipmap/ic_launcher_round"  
        android:supportsRtl="true"  
        android:theme="@style/Theme.Mytest004">  
        <activity  
            android:name="io.dcloud.uniapp.UniAppActivity"  
            android:configChanges="orientation|keyboard|keyboardHidden|smallestScreenSize|screenLayout|screenSize|mcc|mnc|fontScale|navigation|uiMode"  
            android:exported="true"  
            android:label="@string/app_name"  
            android:screenOrientation="portrait"  
            android:theme="@style/UniAppX.Activity.DefaultTheme"  
            android:windowSoftInputMode="adjustResize"  
            tools:replace="android:label,android:exported,android:theme,android:configChanges,android:windowSoftInputMode,android:screenOrientation">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  

        <meta-data  
            android:name="DCLOUD_UNI_APPID"  
            android:value="你的项目appid" />  

        <meta-data  
            android:name="DCLOUD_CHANNEL"  
            android:value="googleplay" />  
    </application>  
</manifest>

2.针对插件
1.“前端组件-通用组件”,这类组件不涉及原生代码,因此在生成本地资源包的时候,会被生成到src目录下,也就是和pages在同一个目录下:unpackage/resources/app-android/uniappx/app-android/src/
因此,在复制资源的时候,就把index.kt,pages,uni_modules一起粘贴过去就可以了。

2.“UTS插件-api插件”,这类插件因为有原生代码,所在生成本地资源包的时候,会被生成到unpackage/resources/app-android/目录下,在这里你会看到一个uni_modules文件夹,里面就是你的插件。如果里面没有你的插件,说明你的页面没有引用这个插件或者代码有错误。

UTS插件在安卓端kotlin代码顶端的正确包名应该是这种格式的:uts.sdk.modules.starViewtime
因此在Android Studio中创建模块时,包名必须与uni-app X插件的包名完全一致,包名也要叫uts.sdk.modules.starViewtime,因为如果两边包名不一样,插件就不起作用了。

接下来重点来了:目录结构必须严格按照包名的层次结构创建,java后面的文件夹需要手动创建。

  • 例如: 刚才创建的模块文件夹下的/src/main/java/uts/sdk/modules/starViewtime/

最后把插件文件复制进去,这样你的UTS原生插件就好使了。

0 关注 分享

要回复文章请先登录注册