こちらの手順に従ってAndroidアプリを公開しようとしています:
http://ionicframework.com/docs/guide/publishing.html
ただし、cordova build --release Androidを実行すると、次のエラーが表示されます。
:lintVitalArmv7Release
/Users/xxx/Documents/xxx/xxx/platforms/Android/res/values/arrays.xml:3: Error: "country_codes" is not translated in "ar" (Arabic), "bg" (Bulgarian), "ca" (Catalan), "cs" (Czech), "da" (Danish), "de" (German), "el" (Greek), "es" (Spanish), "eu" (Basque), "fi" (Finnish), "fr" (French), "he" (Hebrew), "hi" (Hindi), "hu" (Hungarian), "id" (Indonesian), "it" (Italian), "iw" (Hebrew), "ja" (Japanese), "ko" (Korean), "nl" (Dutch), "pl" (Polish), "pt" (Portuguese), "ru" (Russian), "sk" (Slovak), "sl" (Slovene), "sv" (Swedish), "tr" (Turkish), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]
<string-array name="country_codes">
~~~~~~~~~~~~~~~~~~~~
/Users/xxx/Documents/xxx/xxx/platforms/Android/res/values/strings.xml:3: Error: "app_name" is not translated in "ar" (Arabic), "bg" (Bulgarian), "ca" (Catalan), "cs" (Czech), "da" (Danish), "de" (German), "el" (Greek), "es" (Spanish), "eu" (Basque), "fi" (Finnish), "fr" (French), "he" (Hebrew), "hi" (Hindi), "hu" (Hungarian), "id" (Indonesian), "it" (Italian), "iw" (Hebrew), "ja" (Japanese), "ko" (Korean), "nl" (Dutch), "pl" (Polish), "pt" (Portuguese), "ru" (Russian), "sk" (Slovak), "sl" (Slovene), "sv" (Swedish), "tr" (Turkish), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]
<string name="app_name">myapp</string>
~~~~~~~~~~~~~~~
/Users/xxx/Documents/xxx/xxx/platforms/Android/res/values/strings.xml:4: Error: "launcher_name" is not translated in "ar" (Arabic), "bg" (Bulgarian), "ca" (Catalan), "cs" (Czech), "da" (Danish), "de" (German), "el" (Greek), "es" (Spanish), "eu" (Basque), "fi" (Finnish), "fr" (French), "he" (Hebrew), "hi" (Hindi), "hu" (Hungarian), "id" (Indonesian), "it" (Italian), "iw" (Hebrew), "ja" (Japanese), "ko" (Korean), "nl" (Dutch), "pl" (Polish), "pt" (Portuguese), "ru" (Russian), "sk" (Slovak), "sl" (Slovene), "sv" (Swedish), "tr" (Turkish), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]
<string name="launcher_name">@string/app_name</string>
~~~~~~~~~~~~~~~~~~~~
/Users/xxx/Documents/xxx/xxx/platforms/Android/res/values/strings.xml:5: Error: "activity_name" is not translated in "ar" (Arabic), "bg" (Bulgarian), "ca" (Catalan), "cs" (Czech), "da" (Danish), "de" (German), "el" (Greek), "es" (Spanish), "eu" (Basque), "fi" (Finnish), "fr" (French), "he" (Hebrew), "hi" (Hindi), "hu" (Hungarian), "id" (Indonesian), "it" (Italian), "iw" (Hebrew), "ja" (Japanese), "ko" (Korean), "nl" (Dutch), "pl" (Polish), "pt" (Portuguese), "ru" (Russian), "sk" (Slovak), "sl" (Slovene), "sv" (Swedish), "tr" (Turkish), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]
<string name="activity_name">@string/launcher_name</string>
~~~~~~~~~~~~~~~~~~~~
Explanation for issues of type "MissingTranslation":
If an application has more than one locale, then all the strings declared
in one language should also be translated in all other languages.
If the string should not be translated, you can add the attribute
translatable="false" on the <string> element, or you can define all your
non-translatable strings in a resource file called donottranslate.xml. Or,
you can ignore the issue with a tools:ignore="MissingTranslation"
attribute.
By default this detector allows regions of a language to just provide a
subset of the strings and fall back to the standard language strings. You
can require all regions to provide a full translation by setting the
environment variable Android_LINT_COMPLETE_REGIONS.
You can tell lint (and other tools) which language is the default language
in your res/values/ folder by specifying tools:locale="languageCode" for
the root <resources> element in your resource file. (The tools prefix
refers to the namespace declaration http://schemas.Android.com/tools.)
/Users/xxx/Documents/xxx/xxx/platforms/Android/res/values-ar/strings.xml:64: Error: "menu_settings" is translated here but not found in default locale [ExtraTranslation]
<string name="menu_settings">???????</string>
5 errors, 0 warnings
:lintVitalArmv7Release FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':lintVitalArmv7Release'.
> 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
}
}
...
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 4.583 secs
/Users/xxx/Documents/xxx/xxx/platforms/Android/cordova/node_modules/q/q.js:126
throw e;
^
Error code 1 for command: /Users/xxx/Documents/xxx/xxx/platforms/Android/gradlew with args: cdvBuildRelease,-b,/Users/xxx/Documents/xxx/xxx/platforms/Android/build.gradle,-Dorg.gradle.daemon=true
ERROR building one of the platforms: Error: /Users/xxx/Documents/xxx/xxx/platforms/Android/cordova/build: Command failed with exit code 8
You may not have the required environment or OS to build this project
Error: /Users/xxx/Documents/xxx/xxx/platforms/Android/cordova/build: Command failed with exit code 8
at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:131:23)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:766:16)
at Process.ChildProcess._handle.onexit (child_process.js:833:5)
ionic build Androidを実行し、問題なくエミュレータにデプロイできます。
LintOptionsとbuild.gradleを検索しようとしましたが、プロジェクトのどこにも見つかりません...
誰でも助けることができますか?前もって感謝します
追加してこれを解決しました
lintOptions {
abortOnError false
}
Android {}
/platforms/Android/build.gradleのセクション
Ionicプロジェクトの/platforms/Android/build.gradle
ファイルに次のエントリを追加します。
Android {
lintOptions { disable 'MissingTranslation', 'ExtraTranslation' }
}
働いた。
VCS(Gitなど)からplatforms
ディレクトリを保持したい場合は、
現時点での最良の解決策は、 ignore-lint-translation というプラグインを使用することです。
cordova plugin add cordova-plugin-ignore-lint-translation --save
有効な結果は、そのようなlintオプションを無効にするgradleファイルの追加です(doh!)。
追加するだけで、より具体的にすることができます
lintOptions {
disable MissingTranslation
}
このエラーを修正するには、追加する必要があります
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
}
/platforms/Android/build.gradleのAndroid {}セクション
echo "Android { lintOptions { checkReleaseBuilds false } }" >> platforms/Android/build-extras.gradle
MissingTranslation
の問題が原因でビルドが失敗し、文字列を翻訳する必要がない場合、translatable="false"
ファイルの<string>
要素に属性/platforms/Android/app/src/main/res/values/strings.xml
を追加できます。
したがって、strings.xml
ファイル内の文字列が次のような場合:
<string name="app_name">Your App Name</string>
<string name="launcher_name">@string/app_name</string>
<string name="activity_name">@string/launcher_name</string>
次のように編集します。
<string name="app_name" translatable="false">Your App Name</string>
<string name="launcher_name" translatable="false">@string/app_name</string>
<string name="activity_name" translatable="false">@string/launcher_name</string>
このソリューションは私のために働いた。
Cordovaプラグインを使用する必要はありません。after_platform_add
説明されているようにフック ここ 、次にbuild-extras.gradle
ファイル:
Android {
lintOptions {
disable 'MissingTranslation'
disable 'ExtraTranslation'
}
}