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

Ionic 3适配Android SDK 33后相机无法打开问题求助

Ionic 3 + Cordova 升级targetSdkVersion到33后相机功能失效问题

我开发了一款基于Ionic 3和Cordova的应用,原本相机功能正常。为满足Google Play商店要求,将android-targetSdkVersion从31升级至33后,Android 11、12及以上设备的相机功能失效。

触发相机按钮时,Android Studio Logcat输出以下错误日志:

2023-09-19 15:35:05.799 1043-1043/? E/vendor.qti.hardware.perf@2.2-service: Unknown params
2023-09-19 15:35:05.800 1043-1043/? E/vendor.qti.hardware.perf@2.2-service: Unknown params
2023-09-19 15:35:05.805 1043-1043/? E/vendor.qti.hardware.perf@2.2-service: Unknown params
2023-09-19 15:35:05.805 1043-1078/? E/ANDR-PERF-LM: MetaMeter: handleAsync() 164: AdaptLaunch Invalid Async
2023-09-19 15:35:05.849 1043-1043/? E/vendor.qti.hardware.perf@2.2-service: Unknown params
2023-09-19 15:35:05.989 7199-7199/? E/NextAppCoreTrainingJobService: No trained model yet

尝试升级cordova-android到12版本后,问题仍未解决,相机无法打开且无任何提示。


当前配置信息

package.json:

{
    "name": "app",
    "version": "0.0.18",
    "author": "Ionic Framework",
    "homepage": "http://ionicframework.com/",
    "private": true,
    "scripts": {
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build --prod",
        "lint": "ionic-app-scripts lint",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
    },
    "dependencies": {
        "@angular/common": "4.4.7",
        "@angular/compiler": "4.4.7",
        "@angular/compiler-cli": "4.4.7",
        "@angular/core": "4.4.7",
        "@angular/forms": "4.4.7",
        "@angular/http": "4.4.7",
        "@angular/platform-browser": "4.4.7",
        "@angular/platform-browser-dynamic": "4.4.7",
        "@ionic-native/app-version": "^4.20.0",
        "@ionic-native/camera": "^4.5.2",
        "@ionic-native/core": "^4.11.0",
        "@ionic-native/date-picker": "^4.20.0",
        "@ionic-native/geolocation": "^4.20.0",
        "@ionic-native/splash-screen": "4.3.2",
        "@ionic-native/status-bar": "4.3.2",
        "@ionic-native/vibration": "^4.20.0",
        "@ionic/app-scripts": "^3.2.4",
        "@ionic/storage": "2.0.1",
        "brmasker-ionic-3": "^1.6.3",
        "cordova-android": "^12.0.0",
        "cordova-custom-config": "^5.1.1",
        "cordova-ios": "^4.4.0",
        "cordova-plugin-app-version": "^0.1.14",
        "cordova-plugin-camera": "6.0.0",
        "cordova-plugin-compat": "^1.2.0",
        "cordova-plugin-datepicker": "^0.9.3",
        "cordova-plugin-device": "^1.1.4",
        "cordova-plugin-geolocation": "~2.4.3",
        "cordova-plugin-ionic-webview": "^1.1.16",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-vibration": "^2.1.6",
        "cordova-plugin-whitelist": "^1.3.1",
        "dateformat": "^5.0.3",
        "ion": "^1.0.1",
        "ionic-angular": "3.9.2",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionicons": "3.0.0",
        "node-gyp": "^9.4.0",
        "rxjs": "^5.5.11",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.18"
    },
    "devDependencies": {
        "node-sass": "7.0.3",
        "typescript": "2.3.4"
    },
    "description": "An Ionic project",
    "cordova": {
        "plugins": {
            "cordova-plugin-vibration": {},
            "cordova-plugin-datepicker": {},
            "cordova-plugin-device": {},
            "cordova-plugin-ionic-webview": {},
            "cordova-plugin-splashscreen": {},
            "cordova-plugin-whitelist": {},
            "ionic-plugin-keyboard": {},
            "cordova-plugin-geolocation": {
                "GEOLOCATION_USAGE_DESCRIPTION": " "
            },
            "cordova-plugin-camera": {},
            "cordova-plugin-compat": {},
            "cordova-custom-config": {},
            "cordova-plugin-app-version": {}
        },
        "platforms": [
            "android"
        ]
    }
}

Ionic环境信息:

Ionic:

   ionic (Ionic CLI)  : 4.0.0-rc.13 (C:\Users\User\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.4

Cordova:

   cordova (Cordova CLI) : 7.0.1
   Cordova Platforms     : android broken

System:

   Android SDK Tools : 26.1.1
   NodeJS            : v17.9.1 (C:\Program Files\nodejs\node.exe)
   npm               : 8.11.0
   OS                : Windows 10

解决思路建议

  • 适配Android 13权限:Android 13(targetSdk33)新增READ_MEDIA_IMAGES/READ_MEDIA_VIDEO权限,需在AndroidManifest.xml中添加声明,同时确保运行时动态申请权限,检查cordova-plugin-camera 6.x是否已适配该权限,未适配则手动补充配置。
  • 升级Cordova CLI:当前Cordova CLI版本7.0.1过低,无法兼容cordova-android 12,建议升级到最新稳定版,升级后重新添加Android平台。
  • 更新相机插件及依赖:@ionic-native/camera版本4.5.2需升级到与cordova-android 12兼容的4.x最新版;移除已废弃的cordova-plugin-compat,cordova-android 12不再需要该插件。
  • 适配Scoped Storage:Android 11+对文件访问限制更严格,确保相机插件使用的存储路径符合Scoped Storage要求,避免因权限问题无法读写图片。
  • 升级WebView插件:当前cordova-plugin-ionic-webview版本1.1.16过低,建议升级到与cordova-android 12、Ionic 3兼容的最新版本。
  • 清理缓存重建项目:执行cordova clean、ionic clean命令后,重新添加Android平台并构建,清除旧缓存导致的兼容性问题。

内容的提问来源于stack exchange,提问作者Victor Soares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:53:17