uni-app android使用新版离线sdk无法关闭启动图(已解决,和gradle升级有关系)

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

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

3 回复

求大佬帮忙看看,没注意google play8月底要求兼容android14,导致昨天发布的版本在android14上闪退,现在要发布一个更新包上去修复这个闪退问题,结果更新包兼容完android14直接就卡在启动图了


顶一下,影响到用户了,客户很生气,要提桶了

针对您提到的uni-app在Android平台上使用新版离线SDK时遇到的启动图无法关闭的问题,并且您已经指出这与Gradle升级有关,这里我将提供一个简要的说明以及相关的代码案例,以帮助其他开发者在遇到类似问题时能够快速定位并解决。

问题背景

在uni-app开发中,使用新版离线SDK可能会因为Gradle插件版本的升级,导致启动图(Splash Screen)无法正常关闭。这通常是由于Gradle配置或项目依赖更新后,启动流程中的某些行为发生了变化。

解决方案

  1. 确保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()
        }
    }
    
  2. 调整启动图逻辑: 如果Gradle升级导致启动图逻辑变化,您可能需要调整启动图显示的代码。在uni-app中,启动图通常是通过Android原生代码控制的。您可以在App.vueonLaunch方法中尝试延迟隐藏启动图,或者检查是否有新的API或配置来控制启动图。

    由于您已经解决了问题,这里假设您是通过调整Gradle配置解决的,因此不深入修改启动图逻辑的代码。但如果是代码层面的调整,可能涉及到修改MainActivity.javaMainActivity.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变量,具体实现需根据项目代码调整。

  3. 清理和重建项目: 在修改完Gradle配置或代码后,务必清理并重建项目,以确保所有更改生效。

    ./gradlew clean build
    

通过上述步骤,您应该能够解决因Gradle升级导致的uni-app Android离线SDK启动图无法关闭的问题。希望这些信息对您有所帮助!

回到顶部