web-dev-qa-db-ja.com

Android Cordovaカメラプラグインのアップグレード時のビルドエラー

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オプションを指定して実行し、より多くのログ出力を取得します。

12
user2934433

これはバージョン1.1.0のインストールを強制することで解決しました。

CLIから実行したコマンドは次のとおりです。

cordova plugin remove cordova-plugin-compat --force
cordova plugin add [email protected]
34
Cody Watkins

今日も同じ問題に遭遇しました。プラグインを再インストールして修正しましたcordova-plugin-compat。依存関係のため、私は--forceを使用しました。

cordova plugin remove cordova-plugin-compat --force
cordova plugin add cordova-plugin-compat
20
Toontoet

Cordova-plugin-cameraをバージョン1.1にアップグレードする必要があります

3
martin mo

カメラプラグイン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();

enter image description here

3
Avijit

まったく同じエラーが発生しました。これは、実際には古いバージョンのcordova-plugin-compatプラグイン(1.0)が原因で発生し、バージョン1.1(最新)にアップグレードすると機能します。

これが私がしたことです、

  1. すべてのプラットフォームを削除

    コルドバプラットフォームは、Androidを削除します

    コルドバプラットフォーム削除ios

  2. 古いプラグインを削除して新しいプラグインを追加

    cordovaプラグインはcordova-plugin-compatを削除します

    cordovaプラグインはcordova-plugin-compatを追加します

  3. すべてのプラットフォームを元に戻す

    cordovaプラットフォームがAndroidを追加

    コルドバプラットフォーム追加ios

  4. 再コンパイルすると、すべてが機能します!

2
Bob Huang

以下の方法に変更を加えました。

// 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;
    }
0
jaleel_quest