Android升级cordova相机插件时出现错误

更新Cordova相机插件从2.1.1到2.3.1后,我得到生成错误。 以下是版本的详细信息

cordova版本:6.3.1,cordova-plugin-camera 2.1.1“照相机”。 以下是我遵循的步骤

cordova plugin remove cordova-plugin-camera --save cordova plugin add cordova-plugin-camera --save 

我看到config.xml文件已经更新到

当我build立cordovaandroid构build我得到下面的错误错误:cmd:命令失败,退出代码1错误输出:注意:一些input文件使用或重写弃用的API。 注意:使用-Xlint:deprecation重新编译以获取详细信息。 注:某些input文件使用或覆盖弃用的API。 注意:使用-Xlint:deprecation重新编译以获取详细信息。 警告:string“menu_settings”没有默认翻译。

platform \ android \ src \ org \ apache \ cordova \ camera \ CameraLauncher.java:32:error:can not find symbol org.apache.cordova.BuildHelper; symbol:class BuildHelper location:package org.apache.cordova platforms \ android \ src \ org \ apache \ cordova \ camera \ CameraLauncher.java:140:error:找不到符号this.applicationId =(String)BuildHelper.getBuildConfigValue(cordova。 getActivity(),“APPLICATION_ID”); ^符号:variablesBuildHelper位置:类CameraLauncher注意:某些input文件使用或覆盖弃用的API。 注意:使用-Xlint:deprecation重新编译以获取详细信息。 注意:一些input文件使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:取消选中以获取详细信息。 2错误

失败:生成失败,出现exception。

  • 出了什么问题:执行失败的任务':compileDebugJavaWithJavac'。

    编译失败 详细信息请参阅编译器错误输出。

  • 尝试:运行–stacktrace选项来获取堆栈跟踪。 使用–info或 – debug选项运行以获取更多的日志输出。

Related of "Android升级cordova相机插件时出现错误"

我们通过强制安装版本1.1.0来解决这个问题。

以下是我们从CLI运行的命令:

 cordova plugin remove cordova-plugin-compat --force cordova plugin add cordova-plugin-compat@1.1.0 

我今天遇到了同样的问题。 我通过重新安装插件cordova-plugin-compat来修复它。 由于我使用了–force的依赖关系。

 cordova plugin remove cordova-plugin-compat --force cordova plugin add cordova-plugin-compat 

您应该将cordova-plugin-camera升级到版本1.1

我得到了完全相同的错误。 这实际上是由一个老版本的cordova-plugin-compat插件(1.0)引起的,通过升级到版本1.1(最新),它将起作用。

这是我做的,

  1. 删除所有平台

    cordova平台删除android

    cordova平台删除ios

  2. 删除旧的插件,并添加新的

    cordova插件删除cordova-plugin-compat

    cordova插件添加cordova-plugin-compat

  3. 添加所有平台

    cordova平台添加android

    cordova平台添加ios

  4. 重新编译,一切正常!

我也从相机插件2.3.1错误。 这是因为依赖cordova-plugin-compat来获取应用程序ID。 删除cordova-plugin-compat并安装1.1.0,对我不起作用。

为了解决这个问题,从“src / android / CameraLauncher.java”中删除这个代码:

 140 - this.applicationId = (String) BuildHelper.getBuildConfigValue(cordova.getActivity(), "APPLICATION_ID"); 141 - this.applicationId = preferences.getString("applicationId", this.applicationId); 

并添加:

 140 + this.applicationId = cordova.getActivity().getPackageName(); 

在这里输入图像说明

我已经改变了下面的方法。

 // intiatiate you action accordingly if (action.equals("takePicture")) { this.srcType = CAMERA; this.destType = FILE_URI; this.saveToPhotoAlbum = false; this.targetHeight = 0; this.targetWidth = 0; this.encodingType = JPEG; this.mediaType = PICTURE; this.mQuality = 50; // this.destType = args.getInt(1); this.srcType = args.getInt(2); this.mQuality = args.getInt(0); this.targetWidth = args.getInt(3); this.targetHeight = args.getInt(4); this.encodingType = args.getInt(5); this.mediaType = args.getInt(6); this.allowEdit = args.getBoolean(7); this.correctOrientation = args.getBoolean(8); this.saveToPhotoAlbum = args.getBoolean(9); // If the user specifies a 0 or smaller width/height // make it -1 so later comparisons succeed if (this.targetWidth < 1) { this.targetWidth = -1; } if (this.targetHeight < 1) { this.targetHeight = -1; } if (this.targetHeight == -1 && this.targetWidth == -1 && this.mQuality == 100 && !this.correctOrientation && this.encodingType == PNG && this.srcType == CAMERA) { this.encodingType = JPEG; } try { if (this.srcType == CAMERA) { this.callTakePicture(destType, encodingType); } else if ((this.srcType == PHOTOLIBRARY) || (this.srcType == SAVEDPHOTOALBUM)) { // FIXME: Stop always requesting the permission if(!PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { PermissionHelper.requestPermission(this, SAVE_TO_ALBUM_SEC, Manifest.permission.READ_EXTERNAL_STORAGE); } else { this.getImage(this.srcType, destType, encodingType); } } } catch (IllegalArgumentException e) { callbackContext.error("Illegal Argument Exception"); PluginResult r = new PluginResult(PluginResult.Status.ERROR); callbackContext.sendPluginResult(r); return true; } PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); r.setKeepCallback(true); callbackContext.sendPluginResult(r); return true; } return false; }