uni-app targetSdk设置29及以上,出现白屏
uni-app targetSdk设置29及以上,出现白屏
操作步骤:
- 正常初始化(DCUniMPSDK.getInstance().initialize)成功后,打开UniMP(DCUniMPSDK.getInstance().openUniMP)
预期结果:
- 正常加载UniApp
实际结果:
- 仅加载了tabBar,其余部分白屏
bug描述:
- targetSdk设置26-28没问题,能正常打开页面;设置29及以上,仅加载了tabBar,其余部分为白屏。
- 项目环境参数:
- agp: 8.1.0
- kotlin: 1.8.20
- JDK: 17
- 附件为日志以及视频。
更多关于uni-app targetSdk设置29及以上,出现白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html
同样的问题,请问如何解决的?
更多关于uni-app targetSdk设置29及以上,出现白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题解决了吗
在 uni-app
项目中,将 targetSdkVersion
设置为 29 或更高版本时,出现白屏问题,通常是由于 Android 10(API 29)及以上版本引入的一些新的安全性和行为变更导致的。以下是一些可能的原因和解决方法:
1. 文件存储权限变更
Android 10 引入了 Scoped Storage,限制了应用对文件系统的访问。如果你的应用需要访问外部存储,可能需要适配新的存储模型。
解决方法:
- 在
AndroidManifest.xml
中添加以下权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- 如果你需要使用 Scoped Storage,请参考 Android 官方文档 进行适配。
2. WebView 的兼容性问题
uni-app
在某些情况下会使用 WebView 来渲染页面,而 Android 10 及以上版本对 WebView 的行为有一些变更,可能导致白屏。
解决方法:
- 确保你的
WebView
配置正确,或者尝试更新WebView
的版本。 - 在
AndroidManifest.xml
中添加以下配置:
这允许应用使用明文流量(HTTP),某些情况下可能会解决 WebView 的加载问题。<application android:usesCleartextTraffic="true" ...>
3. Activity 启动模式问题
Android 10 及以上版本对 Activity 的启动模式有一些变更,可能导致某些情况下无法正常启动 Activity。
解决方法:
- 检查你的
AndroidManifest.xml
中的 Activity 配置,确保启动模式正确。 - 如果你使用了
singleInstance
或singleTask
等启动模式,尝试更改为standard
或singleTop
。
4. 资源加载问题
某些资源(如图片、字体等)在 Android 10 及以上版本中可能无法正常加载,导致白屏。
解决方法:
- 确保所有资源路径正确,并且资源文件存在于指定的位置。
- 如果你使用了网络资源,请确保应用有正确的网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
5. 调试与日志
如果以上方法都无法解决问题,建议通过调试和日志来进一步排查问题。
解决方法:
- 使用 Android Studio 的
Logcat
查看应用启动时的日志,寻找可能的错误信息。 - 在
uni-app
项目中,可以在main.js
或App.vue
中添加一些调试日志,检查应用是否正常启动。
6. 降级 targetSdkVersion
如果暂时无法解决兼容性问题,可以考虑将 targetSdkVersion
降级到 28 或更低版本。
解决方法:
- 在
manifest.json
或build.gradle
中将targetSdkVersion
设置为 28:"android": { "targetSdkVersion": 28 }