Comment signer APK sur Android Studio même avec des chaînes non-traduites?

arrière-plan

j'ai récemment migré mon application sur Android-Studio. J'ai eu quelques problèmes à le faire, mais j'ai fini par m'en remettre.

le problème

Pour une raison quelconque, sur Android Studio, quand j'essaie de signer un APK, je reçois beaucoup d'erreurs qui ressemblent à ceci:

Error:(16) Error: "..." is not translated in "de" (German), "el" (Greek), "iw" (Hebrew) [MissingTranslation]

(où "..."est une chaîne de caractères)

en bas, après beaucoup d'erreurs de ce genre, je vois ceci:

Error:Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}
...

la question

Je ne sais pas ce qui ne va pas et comment je peux le réparer. Sur Eclipse je l'ai fait très facilement. Les traductions manquantes ne devraient pas m'empêcher de signer un APK...

il me semble que Lint empêche L'exportation de L'APK, et que la raison en est que je n'ai pas traduit toutes les chaînes. Est-ce vrai?

est-ce que n'importe qui peut aider moi? Comment puis-je arranger ça, pour que Lint me montre juste des avertissements à la place? ou un dialogue de confirmation si je suis sûr de vouloir le faire?

52
demandé sur android developer 2014-12-14 21:00:53

6 réponses

le moyen le plus propre pour résoudre le problème est de désactiver les vérifications de la charpente des traductions manquantes pour les constructions de version seulement.

pour ce faire, ajoutez" désactiver "MissingTranslation "" à votre build.fichier gradle comme indiqué ci-dessous:

android {
    buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }
    }
}
112
répondu yvolk 2015-08-05 19:44:07

il me semble que Lint empêche l'exportation de L'APK, et la raison est que je n'ai pas traduire toutes les chaînes. C'est que vrai?

Oui. L'option par défaut est lintOptions.abortOnError = true

est-ce que quelqu'un peut m'aider?

vous devez ouvrir le fichier build.gradle situé dans le module principal du projet, ou le dossier générique si vous n'avez pas de module. Ajouter ensuite les lignes suggérées:

android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}

certains avertissements de peluches sont par défaut tournés vers studio comme des erreurs, Je ne sais pas vraiment pourquoi, mais en termes de traductions je suppose que c'est une façon d '"arrêter" la publication d'une application que la traduction est incomplète en raison d'un ajout de dernière minute de certains textes.

avec le lintOptions checkReleaseBuilds abortOnError vous paramétrez la vérification de Lint pour ne pas exécuter pour les versions de publication et aussi ne pas s'arrêter si une" erreur " est trouvée. Ci-dessous, j'explique où se trouvent les réglages d'erreurs de peluche, donc si vous voulez aller plus loin, vous pouvez aller un pas en avant et les lire un à un. Certains d'entre eux fournissent des instructions utiles pour optimiser le code.

Comment puis-je réparer ça, pour que Lint me montre juste des avertissements à la place? ou un dialogue de confirmation si je suis sûr de vouloir le faire?

Il ya aussi une option à L'Android Studio paramètres de changer toute peluche erreur d'avertissement, mais je n'ai jamais testé ça. D'habitude, je me tourne vers la solution Grad.

l'option est située à Settings > Inspections > Android Lint . Pour trouver facilement les paramètres ouverts et à la recherche (situé en haut) tapez Lint translation là, vous pouvez changer les options de traduction apparaissent à la gauche des erreurs aux avertissements.

une autre option si vos chaînes d'erreur ne seront jamais traduites est d'ajouter à vos fichiers de chaîne XML tools:ignore="MissingTranslation" soit à la racine de l'article, soit à chaque chaîne non traduisible.

29
répondu madlymad 2014-12-14 21:31:46

Simple façon de résoudre cette erreur

il suffit d'ajouter le Code suivant pour ajouter" désactiver 'MissingTranslation' " à votre Compilation.fichier gradle comme indiqué ci-dessous:

...
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }
  ...

OU , Vous pouvez aussi Ajouter ceci:

android {
        buildTypes {
            release {
                lintOptions {
                    disable 'MissingTranslation'
                }
            }
        }
    }
5
répondu Snoopy 2016-02-15 07:14:41

vous pouvez essayer d'ouvrir " Translations Editor "et de définir la chaîne de caractères"..."en tant que "Unstranlatable". Vous devez également supprimer toutes les traductions de cette chaîne.

1
répondu valenta 2016-10-05 04:51:10

FWIW: si vous n'avez pas l'intention de prendre en charge d'autres langues, vous n'avez pas besoin de désactiver la vérification des peluches. Parfois votre configuration de projet (ou une bibliothèque que vous importez) peut avoir accidentellement - ou intentionnellement-inclus une config pour supporter des langues supplémentaires en déclarant un dossier de valeurs pour cette langue comme ceci par exemple:

<your project source folder>/main/res/values-ar

C'était le cas pour moi donc j'ai simplement enlevé le dossier. Mais si vous n'avez pas contrôle sur la bibliothèque incriminée puis un choix est de désactiver lint abortOnError comme indiqué dans la réponse acceptée, ou de trouver un moyen d'exclure les dossiers "bibliothèque-importés" d'une manière ou d'une autre. Pour cette dernière option vous pouvez démarrer ici

0
répondu kip2 2017-05-23 12:34:44

il y a plusieurs solutions mais j'ai essayé

<string name="hello" translatable="false">hello</string>

c'est l'attribut ignore de l'espace de noms d'outils dans votre fichier strings, comme suit:

<?xml version="1.0" encoding="utf-8"?>
<resources
  xmlns:tools="http://schemas.android.com/tools"
  tools:ignore="MissingTranslation" >

  <!-- your strings here; no need now for the translatable attribute -->

</resources>

et de la grille

 release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }

et

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}
0
répondu Null Pointer Exception 2018-07-05 06:27:09