uni-app AGP升级到8.3.0及以上时,离线打包或自定义基座调试,APP启动时崩溃(Android 15适配)

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

uni-app AGP升级到8.3.0及以上时,离线打包或自定义基座调试,APP启动时崩溃(Android 15适配)

操作步骤

AGP升级到8.x后打包,自定义基座调试启动时崩溃。APP无混淆。

预期结果

正常运行

实际结果

APP崩溃

bug描述

AGP升级到8.x后打包,自定义基座调试启动时会有如下崩溃日志。APP包中libs/arm64-v8a所有so文件都存在。相同条件下,AGP为7.3.1时,正常。

2024-07-24 14:57:21.418 11169-11169 com.cardman             com.cardman                          E  No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(java.lang.Object, java.lang.String) (tried Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge and Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge__Ljava_lang_Object_2Ljava_lang_String_2)  
2024-07-24 14:57:21.427 11169-11169 AndroidRuntime          com.cardman                          E  FATAL EXCEPTION: main  
                                                                                                    Process: com.cardman, PID: 11169  
                                                                                                    java.lang.UnsatisfiedLinkError: No implementation found for void com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(java.lang.Object, java.lang.String) (tried Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge and Java_com_taobao_weex_bridge_WXBridge_nativeResetWXBridge__Ljava_lang_Object_2Ljava_lang_String_2)  
                                                                                                        at com.taobao.weex.bridge.WXBridge.nativeResetWXBridge(Native Method)  
                                                                                                        at com.taobao.weex.bridge.WXBridge.resetWXBridge(WXBridge.java:495)  
                                                                                                        at com.taobao.weex.bridge.WXBridgeManager.restart(WXBridgeManager.java:545)  
                                                                                                        at com.taobao.weex.WXSDKEngine.restartWeex(WXSDKEngine.java:608)  
                                                                                                        at io.dcloud.feature.weex.WeexInstanceMgr$1.run(WeexInstanceMgr.java:287)  
                                                                                                        at android.os.Handler.handleCallback(Handler.java:966)  
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:110)  
                                                                                                        at android.os.Looper.loopOnce(Looper.java:205)  
                                                                                                        at android.os.Looper.loop(Looper.java:293)  
                                                                                                        at android.app.ActivityThread.loopProcess(ActivityThread.java:9928)  
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:9917)  
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)  
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)  
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1233)  
2024-07-24 14:57:21.556 11169-11437 weex                    com.cardman                          E  tryUseRunTimeApi ? false  
2024-07-24 14:57:21.618 11169-11437 weex                    com.cardman                          E  [WXBridgeManager] invoke execJSService: framework.js uninitialized.  
2024-07-24 14:57:21.618 11169-11437 weex                    com.cardman                          E  [WXBridgeManager] invoke execJSService: framework.js uninitialized.  
2024-07-24 14:57:21.630 11169-11437 weex                    com.cardman                          E  [WXBridgeManager] invoke execJSService: framework.js uninitialized.  
2024-07-24 14:57:21.630 11169-11437 weex                    com.cardman                          E  [WXBridgeManager] invoke execJSService: framework.js uninitialized.  
2024-07-24 14:57:21.630 11169-11437 weex                    com.cardman                          W  app AvailMemory ---->>>3005  
2024-07-24 14:57:21.658 11169-11437 WXParams                com.cardman                          E  setCrashFilePath: /data/user/0/com.cardman/app_crash  
2024-07-24 14:57:21.658 11169-11437 weex                    com.cardman                          E  weexjss's Path is /data/app/~~pbiI5aJC6Io_u5eOON5UpQ==/com.cardman-bizmX_WHkmdFgfWbqfVfZA==/base.apk!/lib/arm64-v8a/libweexjss.so but file does not exist

开发环境信息

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 Win10 22H2
HBuilderX类型 正式
HBuilderX版本号 3.8.12
手机系统 Android
手机系统版本号 Android 12
手机厂商 华为
手机机型 P40
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

4 回复

Android 15适配要求AGP版本>= 8.3.0


有人吗?测试发现除了Gradle版本8.0.0-rc01还是可以的,8.1.0及以上就不行了。uni sdk版本以及HBuilder均已升级到最新版本。

顶一下,我是ANdroid 11 白屏

在针对uni-app项目升级AGP(Android Gradle Plugin)到8.3.0及以上版本时,遇到离线打包或自定义基座调试时APP启动崩溃的问题,尤其是在适配Android 15(即API Level 32)时,通常可能是由于一些依赖库不兼容、资源文件缺失或配置错误导致。下面提供一个可能的解决思路和代码示例,帮助你定位和解决问题。

1. 检查并更新依赖库

首先,确保所有依赖库都已更新到兼容AGP 8.3.0及以上版本的版本。特别是与Android系统紧密相关的库,如androidx系列。

// 在build.gradle文件中检查并更新依赖
dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.0' // 确保使用最新稳定版本
    implementation 'androidx.core:core-ktx:1.7.0'
    // 其他依赖...
}

2. 配置AndroidManifest.xml

检查AndroidManifest.xml文件,确保有必要的权限声明和适配信息,特别是针对Android 12及以上版本的新权限和特性。

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

    <application
        ...
        android:exported="true"> <!-- Android 12+需要明确声明组件的exported属性 -->
        ...
    </application>

    <!-- 如果使用了特定功能,如相机、存储等,确保已正确声明权限 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    ...
</manifest>

3. 检查Gradle配置

确保gradle-wrapper.propertiesbuild.gradle文件中的Gradle版本与AGP版本兼容。

// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
// 项目级build.gradle
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.3.0'
    }
}

4. 处理资源文件

检查res目录下的资源文件,特别是drawablemipmap,确保没有使用不兼容或缺失的资源。

5. 调试和日志

使用Android Studio的Logcat工具查看崩溃日志,定位具体错误原因。这通常是解决问题的关键步骤。

# Logcat命令示例(在终端中运行)
adb logcat *:E

通过上述步骤,你应该能够定位并解决uni-app项目在升级AGP到8.3.0及以上版本后遇到的启动崩溃问题。如果问题依旧存在,建议详细检查崩溃日志,查找具体的异常类型和错误堆栈,以便进一步分析。

回到顶部