android - 由于缺少 64 位库,无法构建 64 位版本的 Ionic Android App
问题描述
我们正在尝试更新我们的 Android 应用程序以满足 Google 在 8 月份提出的最近的 64 位要求。我们的应用程序是使用 Ionic 创建的,我们正在使用 gradle 设置 ABI 过滤器
defaultConfig {
multiDexEnabled true
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
当我们尝试使用此配置运行项目时,我们收到此错误:
2019-11-27 15:01:19.802 12444-12444/com.example.app D/AndroidRuntime: Shutting down VM
2019-11-27 15:01:19.803 12444-12444/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 12444
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/base.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/lib/arm64, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/base.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_dependencies_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_0_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_1_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_2_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_3_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_4_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_5_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_6_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_7_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_8_apk.apk!/lib/arm64-v8a, /data/app/com.example.app-j3ujXrVqbu_q18iwpcdzrw==/split_lib_slice_9_apk.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]] couldn't find "libnative.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
at java.lang.System.loadLibrary(System.java:1657)
at com.audiofetch.afaudiolib.bll.colleagues.NativeController.<clinit>(NativeController.java:471)
at com.audiofetch.afaudiolib.bll.colleagues.NativeController.get(NativeController.java:68)
at com.audiofetch.afaudiolib.bll.colleagues.AudioController.initAudioSubsystem(AudioController.java:326)
at com.audiofetch.afaudiolib.bll.colleagues.AudioController.initAudioSubsystem(AudioController.java:303)
at com.audiofetch.afaudiolib.bll.colleagues.AudioController.<init>(AudioController.java:142)
at com.audiofetch.afaudiolib.bll.colleagues.AudioController.get(AudioController.java:129)
at com.android.audiofetchapp.AudioFetch.initialize(AudioFetch.java:46)
at org.apache.cordova.CordovaPlugin.privateInitialize(CordovaPlugin.java:57)
at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:171)
at org.apache.cordova.PluginManager.startupPlugins(PluginManager.java:97)
at org.apache.cordova.PluginManager.init(PluginManager.java:86)
at org.apache.cordova.CordovaWebViewImpl.init(CordovaWebViewImpl.java:115)
at org.apache.cordova.CordovaActivity.init(CordovaActivity.java:149)
at org.apache.cordova.CordovaActivity.loadUrl(CordovaActivity.java:224)
at com.example.app.MainActivity.onCreate(MainActivity.java:39)
at android.app.Activity.performCreate(Activity.java:7174)
2019-11-27 15:01:19.803 12444-12444/com.example.app E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
2019-11-27 15:01:19.804 12444-12444/com.example.app E/ApplicationBase: ===================================
2019-11-27 15:01:19.804 12444-12444/com.example.app E/ApplicationBase: An uncaught exception has occurred!
2019-11-27 15:01:19.804 12444-12444/com.example.app E/ApplicationBase: ===================================
我们认为我们已经将问题追溯到 libnative.so 没有 64 位兼容版本,但我们并不确定。该错误似乎仅在我们使用 ndk.abiFilters 指定 64 位 ABI 时发生。在尝试将 64 位兼容性构建到他们的 Ionic 应用程序中时,是否有其他人遇到过这个问题?
不确定是否需要,但这里是我们在应用程序中安装的插件列表:
cordova-fabric-plugin 1.1.14-dev "cordova-fabric-plugin"
cordova-open-native-settings 1.5.2 "Native settings"
cordova-plugin-add-swift-support 1.7.2 "AddSwiftSupport"
cordova-plugin-advanced-http 2.0.4 "Advanced HTTP plugin"
cordova-plugin-audio-fetch 1.0.0 "AudioFetch"
cordova-plugin-badge 0.8.8 "Badge"
cordova-plugin-customurlscheme 4.3.0 "Custom URL scheme"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-external-app 0.0.1 "External App Plugin"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-inappbrowser 3.1.0 "InAppBrowser"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 3.1.2 "cordova-plugin-ionic-webview"
cordova-plugin-local-notification 0.9.0-beta.2 "LocalNotification"
cordova-plugin-music-controls 2.2.0 "MusicControls"
cordova-plugin-name 0.0.1 "Name Plugin"
cordova-plugin-nativestorage 2.3.2 "NativeStorage"
cordova-plugin-remote-notifications 0.0.9 "Cordova Plugin for Remote Notifications"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-telephony 0.0.1 "Telephony Plugin"
cordova-plugin-tguard-login 0.0.11 "TGuard Login Plugin"
cordova-plugin-vibration 3.1.0 "Vibration"
cordova-plugin-volume 0.0.1 "Volume Plugin"
cordova-plugin-walkbase 0.0.1 "Walkbase Plugin"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-zbar 1.3.2 "ZBar barcode scanner"
cordova-universal-links-plugin 1.2.1 "Universal Links Plugin"
解决方案
原来我们使用的一个插件里面有一个非 64 位兼容的库。一旦我们禁用该插件,应用程序就开始成功构建。
推荐阅读
- reactjs - 根据 Firebase 状态导航到另一个屏幕
- ffmpeg - 如何修复 ffmpeg 未找到 | 不和谐.py
- javascript - 创建组件后丢失动画
- python - 如何准确获取图像中形状的轮廓?
- wordpress - 下拉菜单仅在引导程序 4 上的 WordPress 中有效一次
- python-3.x - Sqlite3 dbase 表永久锁定写入
- javascript - 在全前端 React 应用程序中将本地状态数据保存在 localStorage 中通常是否安全?
- python - 如何查看数据框两列之间的最大值以及一列中有多少值大于另一列?
- javascript - Js如何使用selfbot删除消息
- c# - 如何在 ControlBindingCollection 中找到特定绑定?