You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic+Cordova应用API31物理设备启动即崩溃问题求助

Ionic+Cordova Android应用API31物理设备崩溃问题排查

问题描述

我正在测试一款基于Ionic(搭配Cordova)的Android集成Demo,该应用在API26、30、31版本的模拟器上运行正常,但在API31版本的物理设备上,启动加载闪屏后立即崩溃。已在多个论坛搜索,未找到适配的解决方案,终端输出日志如下:

I/chromium: [INFO:CONSOLE(100770)] "Ionic Native: deviceready event fired after 2039 ms", source: http://localhost/vendor-es2015.js (100770)
W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2387)
        at android.os.Parcel.createException(Parcel.java:2357)
        at android.os.Parcel.readException(Parcel.java:2340)
        at android.os.Parcel.readException(Parcel.java:2282)
        at android.security.keystore.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:988)
        at android.security.KeyStore.get(KeyStore.java:233)
        at android.security.KeyStore.get(KeyStore.java:222)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificate(AndroidKeyStoreSpi.java:160)
        at java.security.KeyStore.getCertificate(KeyStore.java:1120)
        at com.crypho.plugins.RSA.loadKey(RSA.java:71)
        at com.crypho.plugins.RSA.isEntryAvailable(RSA.java:51)
        at com.crypho.plugins.SecureStorage.execute(SecureStorage.java:105)
        at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:117)
        at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
        at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
        at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
        at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:342)
        at android.os.Looper.loop(Looper.java:197)
        at android.os.HandlerThread.run(HandlerThread.java:67)
W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2387)
        at android.os.Parcel.createException(Parcel.java:2357)
        at android.os.Parcel.readException(Parcel.java:2340)
        at android.os.Parcel.readException(Parcel.java:2282)
        at android.security.keystore.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:988)
        at android.security.KeyStore.get(KeyStore.java:233)
        at android.security.KeyStore.get(KeyStore.java:222)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificate(AndroidKeyStoreSpi.java:165)
        at java.security.KeyStore.getCertificate(KeyStore.java:1120)
        at com.crypho.plugins.RSA.loadKey(RSA.java:71)
        at com.crypho.plugins.RSA.isEntryAvailable(RSA.java:51)
        at com.crypho.plugins.SecureStorage.execute(SecureStorage.java:105)
        at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:117)
        at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
        at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
        at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
        at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:342)
        at android.os.Looper.loop(Looper.java:197)
        at android.os.HandlerThread.run(HandlerThread.java:67)
W/PluginManager: THREAD WARNING: exec() call to SecureStorage.init blocked the main thread for 42ms. Plugin should use CordovaInterface.getThreadPool().
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ionicframework.suacimobile257509, PID: 22032
    android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.credentials.UNLOCK }
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1727)
        at android.app.Activity.startActivityForResult(Activity.java:5412)
        at org.apache.cordova.CordovaActivity.startActivityForResult(CordovaActivity.java:345)
        at android.app.Activity.startActivityForResult(Activity.java:5370)
        at android.app.Activity.startActivity(Activity.java:5760)
        at android.app.Activity.startActivity(Activity.java:5713)
        at com.crypho.plugins.SecureStorage.startActivity(SecureStorage.java:240)
        at com.crypho.plugins.SecureStorage.access$700(SecureStorage.java:21)
        at com.crypho.plugins.SecureStorage$4.run(SecureStorage.java:217)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:250)
        at android.app.ActivityThread.main(ActivityThread.java:7803)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
D/SERVER: Handling local request: http://localhost/7-es2015.js
I/Process: Sending signal. PID: 22032 SIG: 9

问题定位

从日志核心报错可以确定:

  1. 前期的KeyStore exception (code 7)是密钥库访问异常,触发了cordova-plugin-secure-storage插件的逻辑错误;
  2. 致命崩溃原因是**android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.credentials.UNLOCK }**——插件尝试调用系统的凭证解锁Activity,但当前物理设备的系统(可能是定制ROM)没有提供该组件,导致找不到可处理的Activity而崩溃。

解决方案

  • 升级SecureStorage插件:将cordova-plugin-secure-storage升级到最新版本,旧版本对Android 12(API31)的系统组件适配不足;
  • 替换为兼容插件:如果升级后问题依旧,改用cordova-plugin-secure-storage-echo,它是原插件的维护分支,修复了Android 12+的兼容性问题;
  • 检查设备系统:若使用定制ROM设备,部分厂商移除了原生凭证解锁组件,需在应用中添加降级逻辑,比如无法调用解锁Intent时,切换到本地加密存储方案;
  • 添加必要权限:确保AndroidManifest.xml中包含以下权限:
    <uses-permission android:name="android.permission.USE_BIOMETRIC" />
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    

内容的提问来源于stack exchange,提问作者Melanie Marval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 02:24:11