Skip to main content

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

 

Template:OutSystems/OSLanguageSwitcher

 

 

 

OutSystems

MABSアップグレードトラブルシューティングガイド - Android

異なるバージョンのモバイルアプリビルドサービス(MABS)を使用してアプリの作成を開始すると、何らかのエラーが発生する場合があります。このドキュメントは、MABS 4からMABS 5にアップグレードした後に発生するエラーをトラブルシューティングするときに役立ちます。

MABS 5では、生成されるAndroidアプリのターゲットSDKがAndroid Pターゲット(API 28)に上がります。MABS 4ではAPI 26を使用します。これを実現するために複数のコンポーネントが更新されており、このために互換性を破る変更が発生します。

発生したエラーがここで見つからない場合やエラーの説明が不十分な場合は、ログファイルで詳細なトラブルシューティング情報を確認します。「What went wrong」で始まる部分を検索してください。通常は、ここに役立つ情報が示されています。または、ログファイルの最後の方にある情報を確認します。それでも問題を解決することができずエラーを解消できない場合は、OutSystems Supportにお問い合わせください。

Cordova-android

更新されたコンポーネントの1つに、Cordova-androidパッケージ(バージョン6.4.0から8.0.0)があります。この更新によって、Androidプロジェクトの構造が変更されます。バージョン6.4.0では、アプリケーションコードはルートプロジェクト内に配置されます。新しいバージョンでは、:appという新しいプロジェクト内に配置されます。

このため、プロジェクトのディレクトリツリーが変更になります。Androidプロジェクトのルートにあった多くのファイルは、:appプロジェクトのディレクトリに移動されます。これには、ソースファイル、リソース、アセットなどが含まれます。

一部のプラグインでは、これらのディレクトリのファイルをコピーしたり、ファイルへのアクセスを試行したりします。これらのCordova-androidバージョン間ではディレクトリが異なるため、一部のプラグインは一部のCordova-androidバージョンでのみ動作する可能性があります。つまり、MABS 4またはMABS 5のいずれかでのみ動作する可能性があります。

OutSystemsがサポートするプラグインでこの影響を受けるのは、OneSignalプラグインのみです。エラーを回避するには、「サポート対象プラグインのバージョン」セクションの表をご覧ください。

プラグインの中には、使用されているバージョンを評価し、それに基づいてディレクトリを調整することにより、両方のCordova-androidバージョンでこれらのディレクトリに依存するタスクを実行できるものがあります。

Androidサポートライブラリ

ライブラリの変更の影響を受けるサポート対象プラグインは、5つあります。

  • Barcodeプラグイン
  • Cameraプラグイン
  • Local Notificationsプラグイン
  • OneSignalプラグイン
  • PushWooshプラグイン

Androidサポートライブラリのバージョン28を使用するプラグインは、MABS 4と互換性がありません。MABS 5では古いバージョンが動作しますが、保証されません。Gradleの解決に関する問題を回避するには、「サポート対象プラグインのバージョン」セクションの表をご覧ください。

ターゲットSDKのバージョン28への更新に合わせて、OutSystemsアプリケーションコアとサポート対象プラグインの両方で、Androidサポートライブラリもバージョン28に更新されました。これにより、一部のプラグインの間でGradleの解決に関する問題が発生する可能性があります。このトピックの詳細については、「MABSのAndroidサポートライブラリバージョン」をご覧ください。

サポート対象プラグインのバージョン

サポート対象のOutSystemsプラグインでは、以下のバージョンを使用する必要があります。

プラグイン名 MABS 4のバージョン MABS 5のバージョン
Barcodeプラグイン 3.x.x 4.x.x
Cameraプラグイン 4.x.x 5.x.x
Local Notificationsプラグイン 5.x.x 6.x.x
OneSignalプラグイン 2.x.x 3.x.x
PushWooshプラグイン 3.x.x 4.x.x

よくあるエラー

このセクションでは、いくつかの一般的なエラーの説明とその修正方法を提供しています。

ファイルが見つからない

症状

ビルドをリクエストしているときに、以下のようなエラーが発生します。

  • アプリケーション生成中のエラー。スクリプト「platforms/android/app/cordova-android-support-gradle-release/properties.gradle」が見つからなかったために発生しました。スクリプトのパスを確認し、再試行してください。
  • Cordovaプラグイン「cordova-plugin-firebase」のインストール中のエラー。Error: ENOENT: no such file or directory, scandir 'platforms/android/assets/www/google-services'。

原因

このエラーは、アプリのビルド中にプラグインがファイルへのアクセスを試行したとき、ファイルが見つからなかった場合に発生します。これには、複数の理由が考えられます。

  • Cordova-androidバージョンのため、プラグインには使用中のMABSバージョンとの互換性がない
  • プラグインが適切に構成されていない
  • プラグインのコード内にエラーがある

OneSignalプラグインを使用している場合で見つからないファイルがplatforms/android/app/cordova-android-support-gradle-release/properties.gradleである場合は、使用しているOneSignalプラグインのバージョンが適切ではない可能性が高いです。

解決策

OneSignalプラグインを使用している場合:

  • 「サポート対象プラグインのバージョン」セクションの表をご覧ください。

前の手順で問題が修正されない場合:

  • プラグインのドキュメントを参照し、プラグインが適切に構成されていることを確認します。
  • プラグインを、新しいCordova-androidバージョンをサポートしている可能性のある新しいバージョンにアップグレードしてみます。

問題が続く場合:

  • Cordova-androidディレクトリの変更に対応するようにプラグインを変更します(このセクションで説明されているディレクトリの変更をご覧ください)。

プラグインと古いMABSバージョンとの互換性がない

症状

MABS 4以前でビルドをリクエストしているときに、以下のようなエラーが発生します。

  • アプリケーション生成中のエラー。ビルドで使用されている1つ以上のCordovaプラグインには、MABS 5以上(Androidサポートライブラリ28)以外との互換性がありません。プラグインをダウングレードするか、MABS 5以上を使用してアプリケーションをビルドしてください。
  • Cordovaプラグインのコンパイル中のエラー: intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:87: error: resource android:attr/fontVariationSettings not found。

原因

このエラーは、Androidサポートライブラリバージョン28を参照するプラグインを1つ以上使用するアプリを、MABS 4以前でビルドしているときに発生します。

ログファイルには、このエラーのような内容が含まれます。これは、サポートライブラリが使用しようとしているリソースがAndroidターゲットSDK 28以降にのみ存在するものであるため見つからないことを示しています。

platforms/android/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:90: error: resource android:attr/fontVariationSettings not found. platforms/android/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:90: error: resource android:attr/ttcIndex not found.

解決策

以下の2つの方法を試行することができます。

  • 新しいMABSバージョンを使用します。
  • サポート対象プラグインのバージョンを変更します(「サポート対象プラグインのバージョン」セクションの表をご覧ください)。

問題が続く場合:

  • プラグインを変更し、サポートライブラリのバージョンを下げます(これにより、ビルドまたはランタイムの問題が発生する可能性があります)。

AndroidXサポートライブラリの使用

症状

ビルドをリクエストしているときに、以下のエラーが発生します。

  • アプリケーション生成中のエラー。ビルドで使用されている1つ以上のCordovaプラグインでAndroidXライブラリが必要です。現在、AndroidXはMABSと互換性がありません。プラグインの構成を確認してください。

原因

このエラーは、AndroidXサポートライブラリを使用するプラグインまたはそれを利用する依存関係を含むアプリをビルドしているときに発生します。現在、AndroidXはMABSと互換性がありません。AndroidXサポートライブラリと古いAndroidサポートライブラリを一緒に使用すると、衝突が発生します。依存関係の問題の一般的な例は、Google Mobile Services(GMS)の依存関係です。

ログファイルには、以下のような内容が含まれます。

* What went wrong: Execution failed for task ':app:processReleaseManifest'. > Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-20:19 to override.

解決策

プラグインのコードを確認し、AndroidXを使用する可能性のあるGradleの依存関係を探します。バージョンがロックされていない(つまり、常に最新バージョンが使用される)Googleに関連する依存関係が原因である可能性が高いです。

例:

  • implementation "com.google.android.gms:play-services-maps:+"

問題のある依存関係を含むプラグインを特定した後、以下の手順を実行することができます。

  • プラグインを、これらの依存関係をロックできる別のバージョンにアップグレード/ダウングレードしてみます。

問題が続く場合:

  • プラグインを変更し、問題のある依存関係のバージョンをロックします。

Googleサービスの不適切な利用

症状

ビルドをリクエストしているときに、以下のエラーが発生します。

  • アプリケーション生成中のエラー。一部のプラグインでGoogleサービスを使用していますが、それらの使用が正しく構成されていません。プラグインのドキュメントを参照し、設定が正しいことを確認してください。

原因

このエラーは、Googleサービスを使用するアプリをビルドしているとき、アプリの構成が正しくない場合に発生します。これらのアプリでは、正しいディレクトリに配置された特定のJSON(Androidの場合)構成ファイルまたはPlist(iOSの場合)構成ファイルが必要です。Googleサービスを使用するプラグインのほとんどで、Service Studioのリソースとして適切に構成されたファイルが必要です。

サポート対象プラグインの場合、PushWooshではAndroid用の構成JSONファイルを含むZIPファイルを用意する必要があります。詳細については、プラグインのドキュメントをご覧ください。

ログファイルには、このような内容が含まれます。これは、google-services.jsonファイルが正しいディレクトリ内にないことを示しています。

Execution failed for task ':app:processDebugGoogleServices'. > File google-services.json is missing. The Google Services Plugin cannot function without it.

または、google-services.jsonファイルが正しいディレクトリ内にあるが正しく入力されていない(JSONファイル内のパッケージ名がアプリケーションのパッケージ名と一致していない)場合は、以下のようになります。

Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name 'com.some.some'

解決策

以下の2つの方法を試行することができます。

  • プラグインのドキュメントを参照し、プラグインが適切に構成されていることを確認します。
  • JSONファイルまたはPlistファイルが正しく入力されていることを確認します。

この方法で問題が解決しない場合:

  • 問題のあるプラグインの別のバージョンを使用してみます。

問題が続く場合:

  • Cordova-androidディレクトリの変更に対応するようにプラグインを変更します(このセクションで説明されているディレクトリの変更をご覧ください)。

Androidサポートライブラリに互換性がない

症状

ビルドをリクエストしているときに、以下のようなエラーが発生します。

  • アプリケーション生成中のエラー。Androidサポートライブラリの衝突するバージョンが使用されています(25.4.0および26.1.0)。プラグインの構成を確認してください。

原因

このエラーは、異なるバージョンをターゲットにする複数のAndroidサポートライブラリの依存関係を使用するアプリをビルドしているときに発生します。このような依存関係によってエラーが発生する可能性があります。

ログファイルには、この例のような内容が含まれます。このようになるのは、android.support.VERSIONメタデータタグで異なる値が定義されている複数のサポートライブラリによって発生する衝突がある場合です。

* What went wrong: > Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(25.4.0) from [com.android.support:exifinterface:25.4.0] AndroidManifest.xml:25:13-35 is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0). Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

解決策

以下の2つの方法を試行することができます。

  • この問題の原因になっている可能性のあるプラグインをアップグレード/ダウングレードしてみます。
  • MABSの新しいバージョンを使用します。

問題が続く場合:

  • プラグインを変更し、問題のある依存関係のバージョンを変更します。

メタデータタグが複数定義されている

症状

ビルドをリクエストしているときに、以下のようなエラーが発生します。

  • アプリケーション生成中のエラー。メタデータSOME_APP_KEYが複数定義されています。プラグインのドキュメントを参照し、設定が正しいことを確認してください。

原因

このエラーは、同じメタデータタグを異なる値で複数定義するアプリをビルドしているときに発生します。通常、メタデータ値を再定義または上書きするAndroidManifest.xmlファイルを変更または新しく作成するいくつかののプラグインの使用が原因となって発生します。

ログファイルには、このログの例のような内容が含まれます。これは、独自のライブラリによって文字列リソースとしてすでに定義されているSOME_APP_KEYメタデータ値をプラグインが上書きすることによって衝突が発生していることを示しています。

* What went wrong: > Manifest merger failed : Attribute meta-data#SOME_APP_KEY@value value=(1234567890) from AndroidManifest.xml:18:54-130 is also present at [com.some.some:library:1.2.3] AndroidManifest.xml:22:13-47 value=(@string/some_app_key). Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:18:9-133 to override.

解決策

以下の方法を試行することができます。

  • プラグインのドキュメントを参照し、プラグインが適切に構成されていることを確認します。

問題が続く場合:

  • プラグインを変更し、メタデータ値の定義方法を変更します。

Google Playサービスの依存関係に互換性がない

症状

ビルドをリクエストしているときに、以下のエラーが発生します。

  • アプリケーション生成中のエラー。一部のプラグインでGoogle Playサービスの依存関係を使用していますが、お互いに衝突しています。プラグインの構成を確認してください。

原因

このエラーは、Google Playサービスの複数の依存関係を使用するアプリをビルドしているとき、そのバージョンがお互いに衝突している場合に発生します。

ログファイルには、この例のような内容が含まれます。これは、アプリケーションが2つ以上のGoogle Playサービスのライブラリの依存関係を使用しようとしており、それらのバージョン間に互換性がないことを示しています。

Failed to capture fingerprint of input files for task ':app:preDebugBuild' property 'compileManifests' during up-to-date check. > In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[11.0. 0]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

解決策

以下の方法を試行することができます。

  • Google Playサービスを使用するプラグインの他のバージョンを使用します。

問題が続く場合:

  • プラグインを変更し、必要に応じて依存関係のバージョンを変更します。

最小Android SDKに互換性がない

症状

ビルドをリクエストしているときに、以下のようなエラーが発生します。

  • アプリケーション生成中のエラー。ライブラリ: some-lib: Android SDK 21以上が必要です。これはアプリケーションで必要な16より上です。この値が拡張構成で上書きされているかどうかを確認してください。

原因

このエラーは、アプリケーションが必要とする最小SDKより上の最小SDKを必要とするライブラリを使用するアプリをビルドしているときに発生します。ライブラリがアプリケーションの最小SDKでは利用できないクラス、メソッド、リソースなどを使用しようとする可能性があるため、このアプリのビルドは失敗します。

これは、アプリケーションの拡張構成でこの値が上書きされることによって発生する可能性があります。

ログファイルには、このような内容が含まれます。これは、アプリケーションの最小SDKは16であるが、最小SDKが21のライブラリsome-libを使用していることを示しています。

* What went wrong: > Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in library [:some-lib:] .gradle/caches/transforms-1/files-1.1/some-debug.aar/0123456790abcdef0123456789abcdef/AndroidManifest.xml as the library might be using APIs not available in 16 Suggestion: use a compatible library with a minSdk of at most 16, or increase this project's minSdk version to at least 21, or use tools:overrideLibrary="com.some.api.some" to force usage (may lead to runtime failures)

解決策

以下の方法を試行することができます。

  • 拡張構成で定義されている最小SDKの値を確認します。

問題が続く場合:

  • 問題のあるライブラリを使用しているプラグインの他のバージョンを使用してみます。