uni-app Android自定义插件打包之后卡在开始界面

发布于 1周前 作者 eggper 来自 Uni-App

uni-app Android自定义插件打包之后卡在开始界面
Android自定义插件打包之后部分界面卡在开始界面。 vivo 15s vivo y200i vivo s19

报错日志:

11-22 14:35:11.920 I/DCloud_LOG(18902): createNewFile 0:/storage/emulated/0/Android/data/com.ctfojt.jgzst/apps/  
11-22 14:35:11.920 I/DCloud_LOG(18902): createNewFile 0:/storage/emulated/0/Android/data/com.ctfojt.jgzst/sitemap/  
11-22 14:35:11.922 I/platform(18902): ClassNotFoundException io.dcloud.common.cs.DL getInstance  
11-22 14:35:11.923 W/System.err(18902): java.lang.NoSuchFieldException: UTSHooksClassArray  
11-22 14:35:11.924 W/System.err(18902):     at java.lang.Class.getField(Class.java:2337)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.uts.UTSAndroid.initUTSHooksClassArray(UTSAndroid.kt:984)  
11-22 14:35:11.924 W/System.err(18902):     at java.lang.reflect.Method.invoke(Native Method)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.common.util.AppRuntime.initUTSHooksClassArray(Unknown Source:14)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.weex.MoudlesLoader.initHooksClass(Unknown Source:49)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.feature.weex.WeexInstanceMgr.onCreateProcess(Unknown Source:4)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.common.util.AppRuntime.onCreateProcess(Unknown Source:7)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.application.DCLoudApplicationImpl.onCreate(Unknown Source:23)  
11-22 14:35:11.924 W/System.err(18902):     at io.dcloud.application.DCloudApplication.onCreate(Unknown Source:2)  
11-22 14:35:11.924 W/System.err(18902):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1316)  
11-22 14:35:11.924 W/System.err(18902):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7929)  
11-22 14:35:11.924 W/System.err(18902):     at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)  
11-22 14:35:11.924 W/System.err(18902):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2648)  
11-22 14:35:11.924 W/System.err(18902):     at android.os.Handler.dispatchMessage(Handler.java:108)  
11-22 14:35:11.924 W/System.err(18902):     at android.os.Looper.loopOnce(Looper.java:226)  
11-22 14:35:11.924 W/System.err(18902):     at android.os.Looper.loop(Looper.java:328)  
11-22 14:35:11.924 W/System.err(18902):     at android.app.ActivityThread.main(ActivityThread.java:9236)  
11-22 14:35:11.924 W/System.err(18902):     at java.lang.reflect.Method.invoke(Native Method)  
11-22 14:35:11.924 W/System.err(18902):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)  
11-22 14:35:11.924 W/System.err(18902):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  
11-22 14:35:12.010 W/System  (26420): No Compatibility callbacks set! Querying change 289878283  
11-22 14:35:12.038 W/System  (26420): No Compatibility callbacks set! Querying change 289878283  
11-22 14:35:12.060 W/System  (26420): No Compatibility callbacks set! Querying change 289878283  
11-22 14:35:12.081 E/UIWidgetMgr(17103): new -- JSNWindow=_www/__uniappview.html  
11-22 14:35:12.092 I/System.out(17103): recordForce value 6  
11-22 14:35:12.093 W/System  (26420): No Compatibility callbacks set! Querying change 289878283  
11-22 14:35:12.147 E/Assist_honor(18902): class non-existent  com.igexin.assist.control.honor.ManufacturePushManager  
11-22 14:35:12.156 E/Assist_huawei(18902): class non-existent  com.igexin.assist.control.huawei.ManufacturePushManager  
11-22 14:35:12.156 E/Assist_xiaomi(18902): class non-existent  com.igexin.assist.control.xiaomi.ManufacturePushManager  
11-22 14:35:12.156 E/Assist_oppo(18902): class non-existent  com.igexin.assist.control.oppo.ManufacturePushManager  
11-22 14:35:12.156 E/Assist_meizu(18902): class non-existent  com.igexin.assist.control.meizu.ManufacturePushManager  
11-22 14:35:12.156 E/Assist_vivo(18902): class non-existent  com.igexin.assist.control.vivo.ManufacturePushManager

请问下如何解决?


2 回复

在处理uni-app Android自定义插件打包后卡在开始界面的问题时,通常需要考虑几个关键方面,包括插件的初始化、AndroidManifest.xml配置、以及插件与主应用的兼容性问题。以下是一些可能的解决思路和代码示例,用于排查和解决问题。

1. 检查插件初始化代码

确保你的自定义插件在onCreate方法中正确初始化。如果插件有特定的初始化逻辑,确保它在应用启动时被执行。

public class MyPlugin extends DcloudPlugin {
    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        // 插件初始化代码
        initPlugin();
    }

    private void initPlugin() {
        // 初始化逻辑,如资源加载、服务启动等
    }
}

2. 检查AndroidManifest.xml配置

确保AndroidManifest.xml中正确声明了插件所需的权限和组件。如果插件依赖于特定的服务或活动,它们需要在清单文件中正确注册。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application
        ...>
        <!-- 插件所需的活动注册 -->
        <activity android:name=".MyPluginActivity">
            ...
        </activity>
        <!-- 插件所需的服务注册 -->
        <service android:name=".MyPluginService">
            ...
        </service>
    </application>

    <!-- 插件所需的权限声明 -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

3. 检查插件与主应用的兼容性

确保插件的Android SDK版本与主应用兼容。如果主应用使用的是较新的SDK版本,而插件是基于较旧的版本开发的,可能会出现兼容性问题。

4. 日志调试

使用Android Studio的Logcat工具查看应用启动时的日志,以识别可能的错误或异常。这可以帮助你确定问题是否由插件引起,以及具体是哪个部分出了问题。

// 在Android Studio的Terminal中运行以下命令来查看日志
adb logcat | grep "YourPluginKeyword"

5. 确保插件打包正确

检查自定义插件是否已正确打包到APK中,以及所有必要的资源文件是否都已包含在内。

结论

以上步骤提供了一个基本的框架,用于排查uni-app Android自定义插件打包后卡在开始界面的问题。通过仔细检查插件的初始化代码、AndroidManifest.xml配置、插件与主应用的兼容性,以及使用日志调试,通常可以定位并解决问题。如果问题依然存在,可能需要更深入地分析插件的具体实现或寻求uni-app社区的帮助。

回到顶部