web-dev-qa-db-fra.com

Erreur de construction Android lors de la mise à niveau du plug-in de la caméra Cordova

Je reçois une erreur de construction après la mise à jour du plug-in cordova camera de 2.1.1 à 2.3.1. Ci-dessous les détails de la version

version cordova: 6.3.1, cordova-plugin-camera 2.1.1 "Caméra". Voici les étapes que je suis en train de suivre

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

Je vois que le fichier config.xml a été mis à jour en

Lorsque je compile cordova Android build, le message d'erreur ci-dessous apparaît Erreur: cmd: la commande a échoué avec le code de sortie 1 Erreur de sortie: Remarque: Certains fichiers d'entrée utilisent ou remplacent une API obsolète . Remarque: Recompilez avec -Xlint: obsolète pour plus de détails . Remarque: Certains fichiers d'entrée utilisent ou remplacent une API obsolète . Remarque: Recompilez avec -Xlint: obsolète pour plus de détails . avertissement: la chaîne 'menu_settings' n'a pas de traduction par défaut.

plates-formes\Android\src\org\Apache\cordova\camera\CameraLauncher.Java: 32: erreur: impossible de trouver le symbole importer org.Apache.cordova.BuildHelper; symbole: classe BuildHelper emplacement: paquet org.Apache.cordova plates-formes\Android\src\org\Apache\cordova\camera\CameraLauncher.Java: 140: erreur: impossible de trouver le symbole this.applicationId = (String) BuildHelper.getBuildConfigValue (cordova.getActivity (), "APPLICATION_ID"); ^ symbole: variable BuildHelper emplacement: classe CameraLauncher Remarque: Certains fichiers d'entrée utilisent ou remplacent une API obsolète . Remarque: Recompilez avec -Xlint: obsolète pour plus de détails . Remarque: Certains fichiers d'entrée utilisent des opérations non contrôlées ou non sécurisées . Remarque: Recompiler avec -Xlint: décoché pour plus de détails . 2 erreurs

ECHEC: La construction a échoué avec une exception.

  • Ce qui s'est mal passé: L'exécution a échoué pour la tâche ': compileDebugJavaWithJavac'.

    La compilation a échoué. voir la sortie d'erreur du compilateur pour plus de détails.

  • Essayez: Exécutez-le avec l'option --stacktrace pour obtenir le suivi de la pile. Exécutez-la avec l'option --info ou - debug pour obtenir davantage de sorties de journal.

10
user2934433

Nous avons résolu ce problème en forçant l'installation de la version 1.1.0. 

Voici les commandes que nous avons exécutées à partir de la CLI:

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

J'ai rencontré le même problème aujourd'hui. Je l'ai fait réparer en réinstallant le plugin cordova-plugin-compat. En raison des dépendances que j'ai utilisées --force.

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

Vous devez mettre à niveau cordova-plugin-camera vers la version 1.1.

3
martin mo

Je recevais aussi une erreur du plugin de caméra 2.3.1. C’est à cause de la dépendance de cordova-plugin-compat d’obtenir l’identifiant de l’application. Le retrait de cordova-plugin-compat et l’installation de la version 1.1.0 n’a pas fonctionné pour moi.

Pour résoudre ce problème, supprimez ce code de "src/Android/CameraLauncher.Java":

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

et ajouter:

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

 enter image description here

3
Avijit

J'ai exactement la même erreur. Ceci est en fait causé par une ancienne version du plugin cordova-plugin-compat (1.0), en passant à la version 1.1 (la plus récente), cela fonctionnera.

Voici ce que j'ai fait,

  1. Supprimer toutes les plateformes

    plate-forme cordova supprimer Android

    plate-forme cordova retirer ios

  2. Supprimer l'ancien plugin et ajouter un nouveau

    cordova plugin supprimer cordova-plugin-compat

    cordova plugin ajoute cordova-plugin-compat

  3. Ajouter toutes les plateformes en retour

    plate-forme cordova ajouter Android

    plate-forme cordova ajoute ios

  4. Re-compiler et tout fonctionne!

2
Bob Huang

J'ai apporté des modifications à la méthode ci-dessous.

// 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