私は最近 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が代わりに警告だけを表示するように、どうすれば修正できますか?または確認したい場合は確認ダイアログが表示されますか?
この問題を解決する最もクリーンな方法は、リリースビルドに対してのみ、欠落している翻訳のLintチェックを無効にすることです。
そのためには、以下に示すようにbuild.gradleファイルに「disable 'MissingTranslation'」を追加します。
Android {
buildTypes {
release {
lintOptions {
disable 'MissingTranslation'
}
}
}
}
私には、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"
にルートアイテムまたは各翻訳不可能な文字列を追加することです。
このエラーを解決する簡単な方法
次のコードを追加するだけで、以下のように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'
}
}
}
}
「翻訳エディタ」を開き、文字列「...」を「Unstranlatable」として設定してみてください。また、この文字列のすべての翻訳を削除する必要があります。
作業中
buildTypes {
release {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
FWIW:他の言語をサポートする予定がない場合は、lintチェックを無効にする必要はまったくありません。時々、プロジェクトのセットアップ(またはインポートするライブラリ)が誤って(または意図的に)追加の言語をサポートするための構成を含んでいる場合があります。たとえば、次のような言語の値フォルダーを宣言します。
<your project source folder>/main/res/values-ar
私にとってはそうだったので、私は単にフォルダを削除しました。ただし、問題のあるライブラリを制御できない場合は、受け入れられた回答に示されているlint abortOnErrorを無効にするか、何らかの方法で「ライブラリにインポートされた」フォルダを除外する方法を見つけます。後者のオプションでは、 here を開始できます
多くの解決策がありますが、私は試しました
<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'
}
}