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

Ionic 5+Angular 8中CameraPreview提示plugin_not_installed但已安装

问题分析与解决方案

你遇到的plugin_not_installed错误本质是Cordova的deviceready事件未正常触发——从日志里的deviceready has not fired after 5 seconds和Channel not fired: onCordovaInfoReady就能确认这一点。Cordova插件必须等deviceready完成后才能初始化调用,初始化流程卡住的话,插件自然会被判定为“未安装”。

下面是针对性的解决方案:

1. 确保在deviceready完成后调用相机插件

Ionic提供了Platform.ready()方法来等待Cordova的deviceready事件,你需要修改组件代码,先等待事件完成再调用相机功能:

import { Component } from '@angular/core';
import { CameraPreview, CameraPreviewOptions } from '@ionic-native/camera-preview/ngx';
import { Platform } from '@ionic/angular';

@Component({
  selector: 'app-photo',
  templateUrl: './photo.component.html',
  styleUrls: ['./photo.component.scss'],
})
export class PhotoComponent {

  constructor(
    private cameraPreview: CameraPreview,
    private platform: Platform // 新增Platform注入
  ) { }

  async takePhoto() {
    // 先等待Cordova初始化完成
    await this.platform.ready();
    
    const cameraPreviewOpts: CameraPreviewOptions = {
      x: 0, y: 0, 
      width: window.screen.width, 
      height: window.screen.height,
      camera: 'rear', 
      tapPhoto: true, 
      previewDrag: true, 
      toBack: true, 
      alpha: 1
    };

    try {
      const res = await this.cameraPreview.startCamera(cameraPreviewOpts);
      console.log(res);
    } catch (err) {
      console.error('相机启动失败:', err);
    }
  }
}

2. 修复Cordova Android平台的初始化问题

平台初始化异常是deviceready未触发的常见原因,按以下步骤清理重建:

  • 移除现有Android平台,重新添加一个稳定版本(推荐android@10.0.0,和你当前插件版本兼容性较好):
    ionic cordova platform rm android
    ionic cordova platform add android@10.0.0
    
  • 清理项目缓存,避免残留的错误配置:
    ionic cordova clean
    
  • 检查config.xml,确保没有冲突的权限或插件配置,比如不要同时安装cordova-plugin-camera和cordova-plugin-camera-preview(两者会冲突)。

3. 验证运行环境的正确性

  • 不要用Chrome浏览器直接测试:Cordova插件依赖原生平台环境,浏览器(包括Chrome Canary的设备模式)无法模拟Cordova的deviceready事件,必须用真机或Android模拟器运行ionic cordova run android。
  • 确保你的Android SDK已安装对应版本(比如添加android@10.0.0需要安装Android 10 (API 29)的SDK组件)。

4. 插件兼容性检查

你当前使用的cordova-plugin-camera-preview@0.11.2发布时间较早,和Ionic 5/Angular 8的兼容性需要注意:

  • 如果上述步骤无效,可以尝试升级插件到最新稳定版:
    ionic cordova plugin rm cordova-plugin-camera-preview
    ionic cordova plugin add cordova-plugin-camera-preview@latest
    npm install @ionic-native/camera-preview@latest
    

按照这些步骤操作后,deviceready事件应该能正常触发,相机插件也不会再报plugin_not_installed错误了。

内容的提问来源于stack exchange,提问作者Mr. Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:32:49