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 のバージョンをプレリリース版に設定してください(例: io.adapty:adapty-bom:4.0.0-beta.1、または libs.versions.tomladaptyBom = "4.0.0-beta.1")。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の収集と共有を無効にする

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の初期化は一度だけ行ってください。複数回初期化すると、予期しない動作が発生する可能性があります。

別のプロセスで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 のバックアップルールを1つの 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 の launchModestandard または singleTop に設定されていることを確認してください:

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