AmazonアプリストアEasy Port
Android OS向けにビルドされたアプリには、Fire OSと互換性のないSDKが含まれている場合があります。AmazonアプリストアEasy Portは、Fire OSと互換性のある同等のSDKを使用してアプリをバイトコードレベルでビルドすることで、互換性の問題への対処を支援します。これにより、コードリファクタリングの必要性が最小限に抑えられます。JavaまたはKotlinベースのAndroidアプリをAndroid Gradleプラグイン(AGP)バージョン7.4.0以降でビルドしている場合、Easy PortでサポートされるSDKを使用していれば、Easy Portを使用してアプリを移植できます。次の表は、AmazonアプリストアEasy Portで現在サポートされているSDKを示しています。
SDKカテゴリー | Easy PortでサポートされるSDK 記載のバージョンのみサポート |
Fire OSと互換性のあるSDK Easy Portで使用される同等のSDK |
---|---|---|
支払い情報 | Google Play Billing Libraryバージョン5.2.1(JavaおよびKotlin用) | Appstore請求サービス対応SDKバージョン4.1.0 |
- AmazonアプリストアEasy PortによるAndroidアプリのビルド
- AmazonアプリストアEasy Portの使用開始
- AmazonアプリストアEasy Port Gradleプラグイン
- AmazonアプリストアEasy Portのアスペクト
- AmazonアプリストアEasy Portに関するよくある質問(FAQ)
- 関連トピック
AmazonアプリストアEasy PortによるAndroidアプリのビルド
次の図は、Androidアプリのコンパイルプロセスを簡略化して示したものです。
AmazonアプリストアEasy Portを使用してビルドするには、プロジェクトをEasy Port GradleプラグインおよびEasy Portアスペクトファイルと統合する必要があります。このプラグインの主な機能は、AGPビルドプロセスと統合し、AspectJコンパイラ(AJC)を使用してバイトコード変換を実行することです。Easy Portアスペクトファイルはバイトコード変換を制御し、モジュールのコードベース内で行われる、Fire OSと互換性のないSDKの呼び出しを特定します。アスペクトファイルは、これらの呼び出しをインターセプトし、要求された操作をFire OSと互換性のあるSDKで実行するようにAJCに指示します。アプリのコードベースの変更を最小限に抑えるために、Easy Portアスペクトファイルは、Fire OS非互換SDKとFire OS互換SDKの間でリクエストとレスポンスの変換も行います。
AmazonアプリストアEasy Portの使用開始
次の図は、AmazonアプリストアEasy Portと統合するプロセスを示しています。
以下のセクションでは、Easy Port GradleプラグインとEasy Portのアスペクトについて説明します。
AmazonアプリストアEasy Port Gradleプラグイン
AmazonアプリストアEasy Port Gradleプラグインは、AGPによるAndroidビルドプロセス中にバイトコード変換を実行できるようにするものです。プロジェクトにEasy Portプラグインを統合し、プラグインを構成して、アプリをビルドします。
要件
- AGP 7.4.0以降(AGP 7.4.0にはGradle 8.0以降が必要です)
AmazonアプリストアEasy Portプラグインの適用と構成
AmazonアプリストアEasy Portプラグインを構成するには、以下の手順に従います。
- ルートレベルのsettings.gradle.ktsファイルまたはsettings.gradleファイルの上部で、
pluginManagement
の下にあるrepositoriesブロックにmavenCentral()
を追加します。pluginManagement { repositories { google() mavenCentral() } }
pluginManagement { repositories { google() mavenCentral() } }
- モジュールに統合されているFire OS非互換SDKのバージョンがAmazonアプリストアEasy Portのアスペクトでサポートされている場合は、次のコードに示すように、モジュールにEasy Portプラグインを適用します。
plugins { id("com.amazon.device.easyport") version("1.0.0") }
plugins { id 'com.amazon.device.easyport' version '1.0.0' }
- モジュールのbuild.gradle.ktsファイルまたはbuild.gradleファイルを更新して、Easy Port用のプロダクトフレーバーを追加します。Easy Portフレーバーは、既にあるGoogle固有のフレーバーの上に構築する必要があります。プロダクトフレーバーの構成の詳細については、Androidドキュメントのプロダクトフレーバーを設定するを参照してください。次のコードは構成例を示しています。
android { ... flavorDimensions += "build" productFlavors { create("vanilla") { dimension = "build" } create("easyPort") { dimension = "build" } } }
android { ... flavorDimensions "build" productFlavors { vanilla { dimension 'build' } easyPort { dimension 'build' } } }
- 次のコードに示すように、モジュールのGradleファイルにAspectJRTへの依存関係を追加します。
easyPortImplementation("org.aspectj:aspectjrt:1.9.7")
easyPortImplementation 'org.aspectj:aspectjrt:1.9.7'
- モジュールのbuild.gradle.ktsファイルまたはbuild.gradleファイルに、次のEasy Port構成を追加します。
easyPort { variantFilter = listOf("easyPort")}
easyPort { variantFilter = ["easyPort"]}
- 関連するアスペクトをダウンロードして適用します。
アプリのビルド
AmazonアプリストアEasy Portプラグインとアスペクトを適用して構成したら、以下の手順に従ってアプリをビルドします。
- モジュールのEasy Portフレーバーを選択し、Fire OSと互換性のあるアプリをビルドします。
- ビルドに成功しても警告が表示される場合は、
AspectWeaverTask
という名前で始まるタスクから生成された警告に対処します。ビルドログでAspect Compilation Warnings
を検索すると、一覧を取得できます。これらの警告に対処するには、OSに依存しないようにコードを変更するか、アプリのコードベースにOS固有のチェックを追加します。SuppressEasyPortValidation
というアノテーションを追加すると、これらの警告を抑制できます。 - すべての警告を解決または抑制したら、アプリを再度ビルドします。
- ビルドしたアプリのすべての機能をテストします。
AmazonアプリストアEasy Portのアスペクト
AmazonアプリストアEasy Portのアスペクトは、Fire OSと互換性のないどのAPIをインターセプトするかと、インターセプト時にどのようなアクションを実行するかを指定するものです。アスペクトは、Fire OSと互換性のないSDKの特定のバージョンを対象に、そのSDKの呼び出しを、Fire OSと互換性のあるSDKの特定のバージョンの呼び出しに置き換えます。アスペクトを追加する方法の詳細については、次のリソースを参照してください。
AmazonアプリストアEasy Portに関するよくある質問(FAQ)
AmazonアプリストアEasy Portに関するよくある質問(FAQ)を以下に示します。
- Q: 既存のAndroidアプリをAmazonアプリストアに移植するにあたって、Easy Portはどのように役立ちますか?
- AmazonアプリストアEasy Portは、互換性の問題を自動的に処理してアプリの移植を支援します。Easy Portは、Fire OSと互換性のないSDKを使用するアプリを、Fire OSと互換性のある同等のSDKを使用してバイトコードレベルでビルドします。これにより、コードリファクタリングの必要性が最小限に抑えられます。Easy Portは現在、Google Play Billing Libraryの移植をサポートしています。
- Q: 既存のAndroidアプリをAppstore請求サービス対応SDKと統合するにはどうすればよいですか?
- アプリが現在Google Play Billing Libraryを使用している場合は、Easy Portを使用して、アプリをAppstore請求サービス対応SDKと統合できます。Easy Portは、Google Play Billing Library APIをAppstore請求サービス対応APIにバイトコードレベルで置き換えます。アプリがEasy Portの要件を満たしていない場合は、アプリを直接Appstore請求サービス対応SDKと統合することができます。手順については、Appstore請求サービス対応SDKを参照してください。
- Q: AspectJコンパイラとは何ですか?
- Easy Portでは、アスペクト指向プログラミングを使用して、Fire OSと互換性のないSDKをFire OSと互換性のあるSDKに置き換えます。アスペクトが適用されたバイトコードを生成するために使用されるのが、AspectJコンパイラ(AJC)です。
- Q: Easy Portはソースコードに変更を加えますか?
- Easy Portがソースコードに直接変更を加えることはありません。Easy Portはアスペクトを提供し、コンパイル時にそれらを適用して、Fire OSと互換性のあるバイトコードを生成します。
- Q: Easy Portによって何らかのデータが収集されることはありますか?
- いいえ、Easy Portがデータを収集することはありません。
- Q: Easy Portの適用後、コードベースに変更を加える必要はありますか?
- Easy Portを使用してプロジェクトをビルドすると、必要に応じて、変更を加えるためのガイドとなる導入ログが生成されます。ビルドログで、
AspectJ Compilation Warnings
の下に警告メッセージが記録されます。プラグインやアスペクトの依存関係の追加が原因で競合が発生した場合も、その競合を解決するためにコードの更新が必要になることがあります。 - Q: Easy PortはLinuxでも動作しますか?
- Easy Portは、Linux、Mac、Windowsの各オペレーティングシステムで動作します。
- Q: Easy Portでは、どのバージョンのGoogle Play Billing Libraryがサポートされますか?
- Easy Portは現在、Google Play Billing Libraryバージョン5.2.1のみをサポートしています。
- Q: Easy PortでサポートされるSDKはほかにありますか?
- Easy Portは現在、Google Play Billing Libraryからの移植にのみ対応しています。
関連トピック
Last updated: 2024年5月23日