web-dev-qa-db-ja.com

APKにAndroid Studioが翻訳されていない場合でも署名するにはどうすればよいですか?

バックグラウンド

私は最近 my app をAndroid-Studioに移行しました。そうすることでいくつかの問題がありましたが、結局それらを乗り越えました。

問題

何らかの理由で、Android StudioでAPKに署名しようとすると、次のようなエラーが多数表示されます。

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

(「...」は文字列です)

一番下で、この種の多くのエラーの後、私はこれを見ます:

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
    }
}
...

質問

何が間違っているのか、どうすれば修正できるのかわかりません。 Eclipseでは簡単にできました。翻訳が見つからないからといって、APKに署名することを止めることはできません...

私には、LintがAPKのエクスポートを妨げているように見えます。その理由は、すべての文字列を翻訳しなかったからです。本当?

誰でも助けてくれますか? Lintが代わりに警告だけを表示するように、どうすれば修正できますか?または確認したい場合は確認ダイアログが表示されますか?

52

この問題を解決する最もクリーンな方法は、リリースビルドに対してのみ、欠落している翻訳のLintチェックを無効にすることです。

そのためには、以下に示すようにbuild.gradleファイルに「disable 'MissingTranslation'」を追加します。

Android {
    buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }
    }
}
114
yvolk

私には、LintがAPKのエクスポートを妨げているように見えます。その理由は、すべての文字列を翻訳しなかったからです。本当?

はい。デフォルトのオプションはlintOptions.abortOnError = trueです

誰でも助けてくれますか?

メインプロジェクトモジュールにあるbuild.gradleファイルを開くか、モジュールがない場合は汎用フォルダーを開く必要があります。次に、提案された行を追加します。

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

一部のLint警告はデフォルトでエラーとしてスタジオに変更されますが、実際には理由はわかりませんが、翻訳に関しては、アプリの公開を「停止」する方法だと思います。いくつかのテキストの。

lintOptions checkReleaseBuilds abortOnErrorを使用して、リリースバージョンで実行しないようにLintのチェックを設定し、「エラー」が見つかった場合に停止しないようにします。以下では、Lintエラーの設定が見つかる場所について説明します。したがって、さらに先に進みたい場合は、一歩進んで、それらを1つずつ読むことができます。それらのいくつかは、コードの最適化に役立つ指示を提供します。

Lintが代わりに警告だけを表示するように、どうすれば修正できますか?または確認したい場合は確認ダイアログですか?

Android Studioの設定には、LintエラーをLint警告に変更するオプションもありますが、それをテストすることはありません。通常、gradleソリューションを使用します。

オプションはSettings> Inspections> Android Lintにあります。開いている設定を簡単に検索し、検索(上部にあります)でLint translationと入力すると、左側に表示される翻訳オプションをエラーから警告に変更できます。

エラー文字列が決して翻訳されない場合の別のオプションは、XML文字列ファイルtools:ignore="MissingTranslation"にルートアイテムまたは各翻訳不可能な文字列を追加することです。

30
madlymad

このエラーを解決する簡単な方法

次のコードを追加するだけで、以下のようにbuild.gradleファイルに「disable 'MissingTranslation'」を追加できます。

...
  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
      }
  }
  ...

[〜#〜] or [〜#〜]これも追加できます:

Android {
        buildTypes {
            release {
                lintOptions {
                    disable 'MissingTranslation'
                }
            }
        }
    }
5
Snoopy

「翻訳エディタ」を開き、文字列「...」を「Unstranlatable」として設定してみてください。また、この文字列のすべての翻訳を削除する必要があります。

1
valenta

作業中

             buildTypes {
                        release {
                            lintOptions {
                                checkReleaseBuilds false
                                abortOnError false
                            }
                            minifyEnabled false
                            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
                        }
                    }
0
Keshav Gera

FWIW:他の言語をサポートする予定がない場合は、lintチェックを無効にする必要はまったくありません。時々、プロジェクトのセットアップ(またはインポートするライブラリ)が誤って(または意図的に)追加の言語をサポートするための構成を含んでいる場合があります。たとえば、次のような言語の値フォルダーを宣言します。

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

私にとってはそうだったので、私は単にフォルダを削除しました。ただし、問題のあるライブラリを制御できない場合は、受け入れられた回答に示されているlint abortOnErrorを無効にするか、何らかの方法で「ライブラリにインポートされた」フォルダを除外する方法を見つけます。後者のオプションでは、 here を開始できます

0
kip2

多くの解決策がありますが、私は試しました

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

次のように、stringsファイルのtools名前空間のignore属性です。

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

そしてGradleから

 release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }

そして

Android {
     lintOptions {
        disable 'MissingTranslation'
    }
}