uni-app android使用新版离线sdk无法关闭启动图(已解决,和gradle升级有关系)
uni-app android使用新版离线sdk无法关闭启动图(已解决,和gradle升级有关系)
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.28
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:redmi k20
页面类型:nvue
vue版本:vue2
打包方式:离线
bug描述:
因为google上架需要支持android14,所以就把离线工程的sdk设置为34了,然后gradle也从4.1.1更新到8.2.2了(和官方云打包版本一致),然后sdk也是使用的最新离线sdk(Android-SDK@4.28.82186_20240923)
解决完gradle升级问题后,运行到手机上就一直显示启动图,无论配置启动图关闭方式是自动还是手动
所以尝试更换离线sdk版本,3.99 4.23 4.24 这三个版本都有试过 但是都卡在启动图
示例代码:
2024-09-26 23:34:44.887 3616-3616 splash io.tca.begin D WebAppActivity.onCreateSplash().appid=null this.appid=Main_App this=io.dcloud.PandoraEntryActivity[@ffdfb0b](/user/ffdfb0b)
2024-09-26 23:34:44.888 3616-3616 splash io.tca.begin D WebAppActivity.onCreateSplash().mSplashView is Null =true
2024-09-26 23:34:44.888 3616-3616 WebAppActivity io.tca.begin D onCreateSplash;intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=io.tca.begin/io.dcloud.PandoraEntryActivity bnds=[81,1094][249,1262] (has extras) }
2024-09-26 23:34:44.888 3616-3616 WebAppActivity io.tca.begin D onCreateSplash hasSplash=true
2024-09-26 23:34:44.888 3616-3616 WebAppActivity io.tca.begin D onCreateSplash __splash_mode__=auto
2024-09-26 23:34:45.141 3616-3616 SplashView io.tca.begin D dispatchDraw.....
2024-09-26 23:34:45.152 3616-3616 DCloud_LOG io.tca.begin D syncStartApp __UNI__00575C1 ShowSplash
2024-09-26 23:34:45.232 3616-3616 Main_Path io.tca.begin D _need_auto_close_splash = false;_delay=0;appid=__UNI__00575C1;f_event=loaded
求大佬帮忙看看,没注意google play8月底要求兼容android14,导致昨天发布的版本在android14上闪退,现在要发布一个更新包上去修复这个闪退问题,结果更新包兼容完android14直接就卡在启动图了
针对您提到的uni-app在Android平台上使用新版离线SDK时遇到的启动图无法关闭的问题,并且您已经指出这与Gradle升级有关,这里我将提供一个简要的说明以及相关的代码案例,以帮助其他开发者在遇到类似问题时能够快速定位并解决。
问题背景
在uni-app开发中,使用新版离线SDK可能会因为Gradle插件版本的升级,导致启动图(Splash Screen)无法正常关闭。这通常是由于Gradle配置或项目依赖更新后,启动流程中的某些行为发生了变化。
解决方案
-
确保Gradle版本兼容: 首先,确保您的
build.gradle
文件中配置的Gradle版本与uni-app离线SDK要求的版本兼容。以下是一个示例配置:// 项目根目录下的build.gradle buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.0.2' // 请根据需要调整版本 } } allprojects { repositories { google() jcenter() } }
-
调整启动图逻辑: 如果Gradle升级导致启动图逻辑变化,您可能需要调整启动图显示的代码。在uni-app中,启动图通常是通过Android原生代码控制的。您可以在
App.vue
的onLaunch
方法中尝试延迟隐藏启动图,或者检查是否有新的API或配置来控制启动图。由于您已经解决了问题,这里假设您是通过调整Gradle配置解决的,因此不深入修改启动图逻辑的代码。但如果是代码层面的调整,可能涉及到修改
MainActivity.java
或MainActivity.kt
中的相关代码,如:// MainActivity.java [@Override](/user/Override) protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 延迟隐藏启动图 new Handler().postDelayed(() -> { if (splashScreen != null) { splashScreen.dismiss(); } }, 3000); // 延迟3秒隐藏,根据实际需要调整 // 其他初始化代码... }
注意:上述代码仅为示例,实际项目中可能不存在
splashScreen
变量,具体实现需根据项目代码调整。 -
清理和重建项目: 在修改完Gradle配置或代码后,务必清理并重建项目,以确保所有更改生效。
./gradlew clean build
通过上述步骤,您应该能够解决因Gradle升级导致的uni-app Android离线SDK启动图无法关闭的问题。希望这些信息对您有所帮助!