flutter 插件错误 Fatal signal 6 (SIGABRT), code -6 in tid 10469

07-04 10:25:08.397 10469 10469 F flutter : [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(61)] Check failed: CheckException(env). 

07-04 10:25:08.398 10469 10469 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 10469 (xswadminmanager)

先简要描述下我的状况,相似者对应参考:

     我需要调用android本地代码 然后通过jni调用c语言代码,于是创建了flutter插件,在插件目录android项目与运行没有问题,目录如下,/flutter_uhf/example/android/app 这种是android方式测试插件,但是通过flutter方式就会报上面的错误,目录如下/flutter_uhf/example/lib/main.dart。

 错误原因:虽然我只在android的libs下添加了armeabi-v7a的so库,但是通过flutter方式运行它会默认给我生成4种类型lib对应的so库,(提醒,如果你使用flutter build apk的话默认只会生成armeabi-v7a的so目录,所以这个bug在release版本的apk上不存在,只存在debug版本,当然你也可以使用 flutter build apk --target-platform=android-arm64来生成arm64的apk)如下:


很显然,我的调试机器匹配上了arm64-v8a导致了错误,理论上只要在插件的android/libs加入arm64-v8a的相应包即可,但遗憾的是我并没用arm64-v8a版本的so库。

于是找到两种解决方案:(推荐使用第二种)

    第一种:

  android/app/build.gradle defaultConfig 添加如下规则

defaultConfig {
    applicationId "com.reading520.xxswadminmanager"
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 1
    versionName "0.0.1"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    ndk{
        abiFilters "armeabi-v7a"
    }
}

但是这样还有个问题,libflutter.so不会加入其中,启动就会报错,所有找到armeabi-v7a版本的libflutter.so粘贴到android/libs下,libflutter.so位置如下图


随后就可以按绿色按钮运行程序了。

第二种(推荐使用)如下添加这个参数即可(android-arm请替换车你需要的版本)--target-platform=android-arm,接着应用操作,然后就可以运行了。


猜你喜欢

转载自blog.csdn.net/qq_32319999/article/details/80910332