Android SDKのインストールと設定

Adapty SDK には、モバイルアプリへのシームレスな統合を実現する2つの主要モジュールが含まれています。

  • Core Adapty: アプリで Adapty を正しく動作させるために必要な、必須の SDK です。
  • AdaptyUI: コードなしでクロスプラットフォームのペイウォールを簡単に作成できる Adapty ペイウォールビルダー を使用する場合に必要なモジュールです。AdaptyUI はコアモジュールとともに自動的に有効化されます。

Adapty SDK がモバイルアプリにどのように組み込まれるか、実際の例を見てみませんか?ペイウォールの表示、購入処理など基本的な機能を含むフルセットアップを確認できるサンプルアプリをご覧ください。

要件

最低 SDK 要件: minSdkVersion 21

Adapty は Google Play Billing Library 8.x まで対応しています。デフォルトでは Google Play Billing Library v7.0.0 で動作しますが、より新しいバージョンを使用したい場合は、手動で依存関係を追加できます。

SDKのインストールは、Adaptyセットアップのステップ5です。アプリ内で課金が機能するようにするには、アプリをストアに接続し、Adapty ダッシュボードでプロダクト、ペイウォール、プレースメントを作成する必要があります。クイックスタートガイドでは、必要なすべての手順を説明しています。

Adapty SDK のインストール

依存関係の設定方法を選択してください:

  • 標準の Gradle:モジュールレベルbuild.gradle に依存関係を追加する
  • プロジェクトで .gradle.kts ファイルを使用している場合は、モジュールレベルの build.gradle.kts に依存関係を追加する
  • バージョンカタログを使用している場合は、libs.versions.toml ファイルに依存関係を追加し、build.gradle.kts で参照する

Release

依存関係が解決されない場合は、Gradle スクリプトに mavenCentral() が含まれていることを確認してください。

追加方法の手順

プロジェクトの settings.gradledependencyResolutionManagement がない場合は、トップレベルの build.gradle のリポジトリの末尾に以下を追加してください:

allprojects {
    repositories {
        ...
        mavenCentral()
    }
}

それ以外の場合は、settings.gradledependencyResolutionManagement セクションの repositories に以下を追加してください:

dependencyResolutionManagement {
    ...
    repositories {
        ...
        mavenCentral()
    }
}

Adapty Android SDK 4.0 はプレリリース版です。Gradle は動的バージョン範囲(+latest.release など)でプレリリース版を自動選択しません。そのため、正確なバージョンを明示的に指定する必要があります。adapty-bom のバージョンに 4.0 プレリリース版を設定してください。例: io.adapty:adapty-bom:4.0.0-beta.2、または libs.versions.toml では adaptyBom = "4.0.0-beta.2" のように記述します。BOM が対応する android-sdkandroid-ui のバージョンを自動的に解決します。詳しくは Adapty Android SDK を v4 に移行する をご覧ください。

Adapty SDK の Adapty モジュールを有効化する

基本的なセットアップ

アプリのコードで Adapty SDK を有効化します。

Adapty SDK はアプリで一度だけ有効化する必要があります。

Public SDK Key を取得するには:

  1. Adapty ダッシュボードを開き、App settings → General に移動します。
  2. Api keys セクションで、Public SDK Key(Secret Key ではない)をコピーします。
  3. コード内の "YOUR_PUBLIC_SDK_KEY" を置き換えます。

または、Adapty CLI を使ってプログラムから取得することもできます:

npm install -g adapty
adapty auth login
adapty apps list

あるいは、直接実行する場合:

npx adapty auth login
adapty apps list
  • Adapty の初期化には必ず Public SDK key を使用してください。Secret keyサーバーサイド API 専用です。
  • SDK keys はアプリごとに固有です。複数のアプリがある場合は、正しいキーを選択してください。

他の Adapty SDK メソッドを呼び出す前に、Adapty.activate の完了を待ってください。完全な順序については、Android SDK の呼び出し順序を参照してください。

次に、アプリにペイウォールを設定します。

Adapty SDK の AdaptyUI モジュールを有効化する

ペイウォールビルダーを使用する予定の場合、AdaptyUI モジュールが必要です。コアモジュールを有効化すると自動的に有効化されるため、追加の操作は不要です。

Proguard を設定する

本番環境でアプリを公開する前に、Proguard の設定に -keep class com.adapty.** { *; } を追加してください。

オプションの設定

ログ記録

ログシステムの設定

Adapty はエラーやその他の重要な情報をログに記録し、何が起きているかを把握できるようにします。以下のログレベルが利用可能です:

レベル説明
AdaptyLogLevel.NONE何もログに記録されません。デフォルト値
AdaptyLogLevel.ERRORエラーのみがログに記録されます
AdaptyLogLevel.WARNエラーと、致命的なエラーではないものの注意が必要なSDKからのメッセージがログに記録されます。
AdaptyLogLevel.INFOエラー、警告、および各種情報メッセージがログに記録されます。
AdaptyLogLevel.VERBOSE関数呼び出しやAPIクエリなど、デバッグ時に役立つ可能性のある追加情報がすべてログに記録されます。
Adapty を設定する前に、アプリでログレベルを設定できます。

ログシステムのメッセージをリダイレクトする

何らかの理由で Adapty からのメッセージを自分のシステムに送信したり、ファイルに保存したい場合は、デフォルトの動作を上書きできます。

データポリシー

Adapty は、明示的に送信しない限りユーザーの個人データを保存しません。ただし、ストアや国のガイドラインに準拠するために、追加のデータセキュリティポリシーを実装することもできます。

IPアドレスの収集と共有を無効にする

Adapty モジュールを有効化する際に、ipAddressCollectionDisabledtrue に設定することで、ユーザーの IP アドレスの収集と共有を無効にできます。デフォルト値は false です。 このパラメータを使用すると、ユーザーのプライバシーを保護したり、地域のデータ保護規制(GDPRやCCPAなど)に準拠したり、IPアドレスベースの機能がアプリに不要な場合に不必要なデータ収集を減らすことができます。

広告 ID(Ad ID)の収集と共有を無効にする

Adapty モジュールを有効にする際、adIdCollectionDisabledtrue に設定すると、ユーザーの広告 ID の収集を無効にできます。デフォルト値は false です。 このパラメータは、Play Storeポリシーへの準拠、広告ID権限プロンプトの表示回避、またはアプリが広告IDを使用したアトリビューションや分析を必要としない場合に使用してください。

AdaptyUI のメディアキャッシュ設定をカスタマイズする

デフォルトでは、AdaptyUI はパフォーマンス向上とネットワーク使用量削減のためにメディア(画像や動画など)をキャッシュします。カスタム設定を指定することで、キャッシュの動作を変更できます。 AdaptyUI.configureMediaCache を使用して、デフォルトのキャッシュサイズと有効期間を上書きできます。これはオプションです。このメソッドを呼び出さない場合、デフォルト値(ディスクサイズ 100MB、有効期間 7 日)が使用されます。

パラメーター:

パラメーター必須/任意説明
diskStorageSizeLimit任意ディスク上のキャッシュの合計サイズ(バイト単位)。デフォルトは 100 MB です。
diskCacheValidityTime任意キャッシュされたファイルが有効とみなされる期間。デフォルトは 7 日間です。

ランタイムで AdaptyUI.clearMediaCache(strategy) を使用してメディアキャッシュをクリアできます。strategy には CLEAR_ALL または CLEAR_EXPIRED_ONLY を指定できます。

難読化されたアカウントIDの設定

Google Playでは、ユーザーのプライバシーとセキュリティを強化するために、特定のユースケースで難読化されたアカウントIDが必要です。これらのIDはGoogle Playが購入を識別するのに役立ちながら、ユーザー情報を匿名に保ちます。特に不正防止や分析において重要です。

アプリが機密性の高いユーザーデータを扱う場合、または特定のプライバシー規制への準拠が求められる場合は、これらのIDを設定する必要があります。難読化されたIDを使用することで、Google Playは実際のユーザー識別子を公開することなく購入を追跡できます。

カスタムプロセスでAdaptyを実行する

デフォルトでは、Adaptyはアプリのメインプロセスでのみ動作します。 アプリが複数のプロセスを使用している場合、Adaptyの初期化は1回だけ行ってください。複数回初期化すると、予期しない動作が発生する可能性があります。

別のプロセスでAdaptyを実行する必要がある場合は、設定で指定してください:

この値を設定せずに別のプロセスで Adapty を有効化しようとすると、SDK は警告をログに記録して有効化をスキップします。

ローカルアクセスレベルを有効にする

デフォルトでは、Android でのローカルアクセスレベルは無効になっています。有効にするには、withLocalAccessLevelAllowedtrue に設定してください:

トラブルシューティング

Android バックアップルール(Auto Backup の設定)

一部の SDK(Adapty を含む)は、独自の Android Auto Backup 設定をバンドルしています。バックアップルールを定義する SDK を複数使用している場合、Android マニフェストのマージ処理が android:fullBackupContentandroid:dataExtractionRules、または android:allowBackup に関するエラーで失敗することがあります。

典型的なエラー例: Manifest merger failed: Attribute application@dataExtractionRules value=(@xml/sample_data_extraction_rules) is also present at [com.other.sdk:library:1.0.0] value=(@xml/other_sdk_data_extraction_rules) これを解決するには、以下の対応が必要です。

  • マニフェストマージャーに、バックアップ関連の属性にはアプリの値を使用するよう指示する。

  • AdaptyやほかのSDKのバックアップルールを、単一のXMLファイル(Android 12以降の場合はファイルのペア)にまとめる。

1. マニフェストに tools 名前空間を追加する

まだ追加していない場合は、ルートの <manifest> タグに tools 名前空間を追加します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">

    ...
</manifest>

2. <application> でバックアップ属性を上書きする

アプリの AndroidManifest.xml<application> タグを更新し、アプリが最終的な値を提供し、マニフェストマージャーにライブラリの値を置き換えるよう指示します:

<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/sample_backup_rules"
android:dataExtractionRules="@xml/sample_data_extraction_rules"
tools:replace="android:fullBackupContent,android:dataExtractionRules">

    ...
</application>

いずれかの SDK が android:allowBackup も設定している場合は、tools:replace に追加してください:

tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"

3. マージされたバックアップルールファイルを作成する

app/src/main/res/xml/ 配下に、Adapty のルールと他の SDK のルールを組み合わせた XML ファイルを作成します。Android は OS バージョンによって異なるバックアップルール形式を使用するため、両方のファイルを作成することで、アプリがサポートするすべての Android バージョンとの互換性が確保されます。

以下の例では、サードパーティ SDK のサンプルとして AppsFlyer を使用しています。実際にアプリで使用している他の SDK のルールに置き換えるか、追記してください。

Android 12 以降の場合(新しいデータ抽出ルール形式を使用):

<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
    <cloud-backup>

        <exclude domain="sharedpref" path="appsflyer-data"/>
        <exclude domain="sharedpref" path="appsflyer-purchase-data"/>
        <exclude domain="database" path="afpurchases.db"/>

        <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
    </cloud-backup>

    <device-transfer>

        <exclude domain="sharedpref" path="appsflyer-data"/>
        <exclude domain="sharedpref" path="appsflyer-purchase-data"/>
        <exclude domain="database" path="afpurchases.db"/>
        <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
    </device-transfer>
</data-extraction-rules>

Android 11以下の場合(レガシーのフルバックアップコンテンツ形式を使用):

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>

    <exclude domain="sharedpref" path="appsflyer-data"/>


    <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>



</full-backup-content>

この設定により:

  • Adaptyのバックアップ除外設定(AdaptySDKPrefs.xml)が保持されます。

  • 他のSDKの除外設定(例:appsflyer-data)も適用されます。

  • マニフェストマージャーはアプリの設定を使用し、バックアップ属性の競合によるエラーが発生しなくなります。

別のアプリから戻った後に購入が失敗する

購入フローを開始する Activity が非デフォルトの launchMode を使用している場合、ユーザーが Google Play、銀行アプリ、またはブラウザから戻ったときに Android が Activity を誤って再生成または再利用することがあります。これにより、購入結果が失われたり、キャンセルとして扱われたりする可能性があります。

購入が正しく機能するようにするには、購入フローを開始する Activity に standard または singleTop の起動モードのみを使用し、それ以外のモードは避けてください。

AndroidManifest.xml で、購入フローを開始する Activity が standard または singleTop に設定されていることを確認してください:

<activity
    android:name=".MainActivity"
    android:launchMode="standard" />