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

Contexte

J'ai récemment migré mon application vers Android-Studio. J'ai eu des problèmes pour le faire, mais je les ai dépassés éventuellement.

Le problème

Pour une raison quelconque, sur Android Studio, lorsque j'essaie de signer un APK, j'ai beaucoup d'erreurs qui ressemblent à ceci:

  • Comment puis-je garder l'écran allumé dans ma application?
  • ./fastboot: aucun fichier ou répertoire
  • Suivez l'emplacement de l'utilisateur sur React Native AirBnb's MapView
  • Utilisation de l'iPad avec 11 doigts ... Extension de la limite d'Android dans Code
  • Comment personnaliser la largeur et la hauteur lorsque vous affichez une activité en tant que boîte de dialogue
  • Android - ImageView recoupe un autre ImageView
  • Error:(16) Error: "..." is not translated in "de" (German), "el" (Greek), "iw" (Hebrew) [MissingTranslation] 

    (Où "…" est une chaîne)

    En bas, après de nombreuses erreurs de ce genre, je vois cela:

     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 une APK …

    Pour moi, il semble que Lint empêche l'exportation de l'APK, et que la raison en est que je n'ai pas traduit toutes les cordes. Est-ce vrai?

    Est-ce que quelqu'un peut m'aider s'il vous plait? Comment puis-je réparer cela, de sorte que Lint me montrera juste des avertissements à la place? Ou une boîte de dialogue de confirmation si je suis sûr que je veux le faire?

  • Bibliothèque Android Gradle release JAR
  • La phase "Mise à jour de la bibliothèque Android" peut-elle être accélérée?
  • Est-il possible de faire référence à une autre chaîne dans strings.xml?
  • Attendre le séparateur de chemin de classe ';' Avant '\ Android \ android-sdk \ build-tools \ 23.0.1 \ lib \ shrinkedAndroid.jar' dans l'argument numéro 8
  • Comment détecter si un appareil mobile est émulé par Google Chrome?
  • Comment obtenir le code pays ISO dans les applications Android?
  • 5 Solutions collect form web for “Comment signer APK sur Android Studio même avec des chaînes non traduites?”

    Le moyen le plus propre à résoudre le problème est de désactiver les vérifications de Lint des traductions manquantes pour les versions de version seulement.

    Pour cela, ajoutez "désactiver" MissingTranslation '"dans votre fichier build.gradle comme indiqué ci-dessous:

     android { buildTypes { release { lintOptions { disable 'MissingTranslation' } } } } 

    Pour moi, il semble que Lint empêche l'exportation de l'APK, et que la raison en est que je n'ai pas traduit toutes les cordes. Est-ce vrai?

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

    Est-ce que quelqu'un peut m'aider s'il vous plait?

    Vous devez ouvrir le fichier build.gradle situé au module principal du projet ou le dossier générique si vous n'avez pas de module. Ajoutez ensuite les lignes proposé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 Lint sont par défaut tournés vers le studio comme des erreurs, je ne sais pas pourquoi, mais en termes de traduction, je suppose que c'est un moyen de "vous arrêter" de publier une application que la traduction est incomplète en raison des ajouts de dernière minute De certains textes.

    Avec lintOptions checkReleaseBuilds abortOnError vous configurez la vérification de Lint pour ne pas s'exécuter pour les versions et ne s'arrête pas si une "erreur" est trouvée. Ci-dessous, je explique où les paramètres d'erreur Lint peuvent être trouvés, donc, si vous voulez aller plus loin, vous pouvez faire un pas en avant et les lire un par un. Certains d'entre eux fournissent des instructions utiles pour les optimisations de code.

    Comment puis-je réparer cela, de sorte que Lint me montrera juste des avertissements à la place? Ou une boîte de dialogue de confirmation si je suis sûr que je veux le faire?

    Il existe également une option dans les paramètres de Android Studio pour modifier toute erreur de Lint à Lint, mais je ne le teste jamais. Je me tourne généralement vers la solution Gradle.

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

    Une autre option si vos chaînes d'erreur ne vont jamais être traduites est d'ajouter à vos tools:ignore="MissingTranslation" fichiers de chaînes XML tools:ignore="MissingTranslation" soit à l'élément racine, soit à chaque chaîne non tools:ignore="MissingTranslation" .

    Manière simple de résoudre cette erreur

    Ajoutez simplement le code suivant pour ajouter "désactiver" MissingTranslation '"à votre fichier build.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 également ajouter ceci:

     android { buildTypes { release { lintOptions { disable 'MissingTranslation' } } } } 

    Vous pouvez essayer d'ouvrir "Editor des traductions" et définir la chaîne "…" comme "Inadéquilable". Vous devez également supprimer toutes les traductions de cette chaîne.

    FWIW: si vous ne prévoyez pas d'appuyer d'autres langues, il n'est pas nécessaire de désactiver les contrôles de peluches. Parfois, votre configuration de projet (ou une bibliothèque que vous importez) peut avoir inclus accidentellement ou intentionnellement une configuration 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'est le cas pour moi, donc j'ai simplement supprimé le dossier. Mais si vous n'avez aucun contrôle sur la bibliothèque offensante, un choix est de désactiver lint abortOnError comme indiqué dans la réponse acceptée, ou trouver un moyen d'exclure les dossiers «bibliothèque importés» en quelque sorte. Pour cette dernière option, vous pouvez commencer ici

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.