uni-app AGP升级到8.3.0及以上时,离线打包或自定义基座调试,APP启动时崩溃(Android 15适配)
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 |
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.properties
和build.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
目录下的资源文件,特别是drawable
和mipmap
,确保没有使用不兼容或缺失的资源。
5. 调试和日志
使用Android Studio的Logcat工具查看崩溃日志,定位具体错误原因。这通常是解决问题的关键步骤。
# Logcat命令示例(在终端中运行)
adb logcat *:E
通过上述步骤,你应该能够定位并解决uni-app项目在升级AGP到8.3.0及以上版本后遇到的启动崩溃问题。如果问题依旧存在,建议详细检查崩溃日志,查找具体的异常类型和错误堆栈,以便进一步分析。