Cordovaカメラプラグインを2.1.1から2.3.1に更新した後、ビルドエラーが発生します。以下はバージョンの詳細です
cordovaバージョン:6.3.1、cordova-plugin-camera 2.1.1 "Camera"。以下は私がフォローしているステップです
cordova plugin remove cordova-plugin-camera --save
cordova plugin add cordova-plugin-camera --save
Config.xmlファイルが更新されているのがわかります
コルドバをビルドするときAndroid=ビルドすると、次のエラーが表示されますエラー:cmd:コマンドが終了コード1で失敗しましたエラー出力:注:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。注:-詳細についてはXlint:deprecationをご覧ください。注:一部の入力ファイルは、廃止予定のAPIを使用またはオーバーライドしています。注:詳細については、-Xlint:deprecationで再コンパイルしてください。警告:文字列 'menu_settings'にはデフォルトの変換がありません。
platform\Android\src\org\Apache\cordova\camera\CameraLauncher.Java:32:エラー:シンボルインポートorg.Apache.cordova.BuildHelperが見つかりません。シンボル:クラスBuildHelper場所:パッケージorg.Apache.cordovaプラットフォーム\ Android\src\org\Apache\cordova\camera\CameraLauncher.Java:140:エラー:シンボルが見つかりませんthis.applicationId =(String)BuildHelper.getBuildConfigValue(cordova。 getActivity()、 "APPLICATION_ID"); ^記号:変数BuildHelperの場所:クラスCameraLauncher注:一部の入力ファイルは、非推奨のAPIを使用またはオーバーライドしています。注:詳細については、-Xlint:deprecationを指定して再コンパイルしてください。注:一部の入力ファイルは、未チェックまたは安全でない操作を使用します。注:詳細については、-Xlint:uncheckedを指定して再コンパイルしてください。 2エラー
失敗:例外によりビルドが失敗しました。
問題点:タスク ':compileDebugJavaWithJavac'の実行が失敗しました。
コンパイルに失敗しました。詳細については、コンパイラエラー出力を参照してください。
試してください:--stacktraceオプションを指定して実行し、スタックトレースを取得します。 --infoまたは--debugオプションを指定して実行し、より多くのログ出力を取得します。
これはバージョン1.1.0のインストールを強制することで解決しました。
CLIから実行したコマンドは次のとおりです。
cordova plugin remove cordova-plugin-compat --force
cordova plugin add [email protected]
今日も同じ問題に遭遇しました。プラグインを再インストールして修正しましたcordova-plugin-compat
。依存関係のため、私は--forceを使用しました。
cordova plugin remove cordova-plugin-compat --force
cordova plugin add cordova-plugin-compat
Cordova-plugin-cameraをバージョン1.1にアップグレードする必要があります
カメラプラグイン2.3.1でもエラーが発生しました。これは、アプリケーションIDを取得するためにcordova-plugin-compatに依存しているためです。 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();
まったく同じエラーが発生しました。これは、実際には古いバージョンのcordova-plugin-compatプラグイン(1.0)が原因で発生し、バージョン1.1(最新)にアップグレードすると機能します。
これが私がしたことです、
すべてのプラットフォームを削除
コルドバプラットフォームは、Androidを削除します
コルドバプラットフォーム削除ios
古いプラグインを削除して新しいプラグインを追加
cordovaプラグインはcordova-plugin-compatを削除します
cordovaプラグインはcordova-plugin-compatを追加します
すべてのプラットフォームを元に戻す
cordovaプラットフォームがAndroidを追加
コルドバプラットフォーム追加ios
再コンパイルすると、すべてが機能します!
以下の方法に変更を加えました。
// 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;
}