uni-app android原生插件targetsdkversion大于28白屏
uni-app android原生插件targetsdkversion大于28白屏
信息类别 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | 10.15.7 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.23 |
手机系统 | Android |
手机系统版本 | Android 13 |
手机厂商 | 三星 |
手机机型 | SM-A13 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
操作步骤:
开发远程Android插件本地使用SDK UniPlugin-Hello-AS 打包运行,targetSdkVersion =28 可以正常加载页面并运行展示,但是需要使用SDK 默认targetSdkVersion需要大于31 设置大于31之后,进入app后,加载时间较长并且页面白屏。页面可以展示tabbar,tabbar以上均为白屏页面。
预期结果:
android原生插件targetsdkversion 大于28也可以正常打开页面并调试。
实际结果:
android原生插件targetsdkversion 大于28白屏。
bug描述:
开发远程插件本地使用SDK UniPlugin-Hello-AS 打包运行,targetSdkVersion =28 可以正常加载页面并运行展示,但是需要使用SDK 默认targetSdkVersion需要大于31 设置大于31之后,进入app后,加载时间较长并且页面白屏。页面可以展示tabbar,tabbar以上均为白屏页面。打印日志看到 E WeexJSConnection catch: spinWaitPeer timeout 2024-03-09 02:36:12.141 31246-31302 WeexCore com.demo.alive E JSFramwork init start sender is null 2024-03-09 02:36:12.141 31246-31509 WeexCore com.demo.alive E IPCException server spinWaitPeer timeout 2024-03-09 02:36:12.141 31246-31302 WeexCore com.demo.alive E IPCFutexPageQueue.cpp:66,do munmap 2024-03-09 02:36:12.142 31246-31509 WeexCore com.demo.alive E IPCFutexPageQueue.cpp:66,do munmap 2024-03-09 02:36:12.146 31246-31302 WeexCore com.demo.alive E script_side_in_multi_process.cpp:43,InitFramework sender is null 2024-03-09 02:36:12.146 31246-31302 weex com.demo.alive E [WXBridgeManager] invokeInitFramework ExecuteJavaScript fail
有这样的报错。 设置29 30 31以上都是这个现象。只有28可以正常运行。
顶一下。 麻烦回复一下
这个问题在4.36仍然存在
回复 艾思: 我尝试了您的方法升级webkit到1.5.0,还是存在白页问题,即使将webkit升级到最新的1.12.1也没有变化
在处理uni-app中Android原生插件时,如果遇到targetSdkVersion大于28导致白屏的问题,通常是由于Android系统版本的兼容性问题或者插件本身在新版本Android系统上的适配问题。以下是一些可能的解决方案,主要通过代码和配置调整来尝试解决该问题。
1. 更新uni-app和HBuilderX
首先,确保你的uni-app和HBuilderX开发环境都是最新版本。新版本可能已经修复了一些与目标SDK版本相关的已知问题。
2. 修改AndroidManifest.xml
在Android原生插件的AndroidManifest.xml
文件中,检查并更新targetSdkVersion
和compileSdkVersion
,确保它们与你的测试设备或目标设备的Android版本兼容。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.plugin">
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="30"
android:compileSdkVersion="30" />
...
</manifest>
3. 检查插件的Activity配置
确保插件中声明的所有Activity都正确配置了theme
,特别是在Android 10(API级别29)及以上版本中,对于透明或全屏Activity的处理有所不同。
<activity
android:name=".YourPluginActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
...
</activity>
4. 动态权限请求处理
从Android 6.0(API级别23)开始,应用需要在运行时请求敏感权限。如果你的插件涉及到这些权限,确保在插件代码中正确处理了权限请求。
if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_CAMERA);
}
5. 调试和日志
使用Android Studio或Logcat来调试你的应用,查看是否有任何与白屏相关的错误日志。这些日志可以帮助你确定问题的具体原因。
adb logcat | grep "YourPluginKeyword"
6. 兼容性适配
如果问题依然存在,考虑在插件代码中添加兼容性适配逻辑,特别是针对Android 10及以上版本的新特性和限制。
通过上述步骤,你应该能够定位并解决uni-app中Android原生插件因targetSdkVersion大于28导致的白屏问题。如果问题依旧无法解决,建议查阅uni-app社区和官方文档,或者向插件开发者寻求帮助。