Android SDK - 基本統合

動画ガイド利用可能

統合プロセスの詳しいウォークスルーについては、この動画をご覧ください。 最良の結果を得るために、動画と以下のガイドの両方を活用してください。


前提条件

この統合を進める前に、 Singular SDK の統合: 計画と前提条件 の手順を完了してください。

重要: これらの前提条件の手順は、いかなる Singular SDK の統合にも必要です。


インストール

インストール方法

注: Android Studio は新規プロジェクトに対して、デフォルトで Kotlin DSL (build.gradle.kts) を使用するようになりました。 以下のすべてのコード例では、 Kotlin DSL (推奨) Groovy DSL の両方の形式を示しています。

方法 1: Gradle (推奨)

方法 1: Gradle (推奨)

SDK リポジトリを追加

プロジェクトの依存関係管理で Singular Maven リポジトリを設定してください。

注: Gradle 7 以降、Android はプロジェクトまたはモジュールレベルの build.gradle での宣言よりも、 settings.gradle または settings.gradle.kts での集中型リポジトリ宣言を使用することを推奨しています。

Gradle 7+ の設定

settings ファイルに Singular SDK リポジトリを追加してください:

settings.gradle.kts (Kotlin DSL - 推奨) settings.gradle (Groovy DSL)
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://maven.singular.net/")
        }
    }
}

古い Gradle バージョン

古い Gradle バージョンの場合、プロジェクトレベルのビルドファイルにリポジトリを追加してください:

build.gradle.kts (Kotlin DSL - 推奨) build.gradle (Groovy DSL)
repositories {
    mavenCentral()
    maven {
        url = uri("https://maven.singular.net/")
    }
}

Singular ライブラリの依存関係を追加

アプリモジュールの依存関係に Singular ライブラリを追加してください。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.singular.sdk:singular_sdk:12.14.0")
}

トラブルシューティング: クラスの重複問題

複数の依存関係に同じライブラリが含まれている場合、クラスの重複エラーが発生する可能性があります。 これは古いバージョンの Google Play Services ライブラリを使用しているときによく発生します。

よくあるエラーの例:

Duplicate class com.google.android.gms.common.api.ResultCallback found in modules play-services-6.5.87.aar and play-services-basement-17.6.0.aar

解決方法: 競合する依存関係を除外

クラスの重複問題を解決するには、Singular SDK または競合の原因となっている他の依存関係から、 競合する推移的依存関係を除外してください。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
dependencies {
    // Exclude specific Google Play Services modules from Singular SDK
    implementation("com.singular.sdk:singular_sdk:12.14.0") {
        exclude(group = "com.google.android.gms", module = "play-services")
    }

    // Add the specific Google Play Services libraries your app needs
    implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
    implementation("com.google.android.gms:play-services-appset:16.0.2")
}

グローバル除外ルール

クラスの重複の競合がプロジェクト全体の複数の依存関係に影響する場合、 グローバル除外ルールを適用できます。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
configurations.all {
    exclude(group = "com.google.android.gms", module = "play-services")
}

依存関係解決の検証

除外ルールを適用した後、依存関係ツリーを確認して 競合が解決されていることを検証してください。

ターミナルコマンド
./gradlew app:dependencies --configuration debugRuntimeClasspath

このコマンドはアプリの完全な依存関係ツリーを表示し、 どのライブラリが含まれているか、どれが除外されているかを示します。


Samsung Galaxy Store のサポート

アプリが Samsung Galaxy Store 経由で配信される場合は、 Samsung Galaxy Store install referrer の依存関係を追加してください。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
dependencies {
    implementation("store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0")
}

推移的依存関係

Singular SDK の推移的依存関係を無効にしている場合は、 以下の必須ライブラリをアプリモジュールの依存関係に手動で追加してください。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.android.installreferrer:installreferrer:2.2")
    implementation("com.google.android.gms:play-services-appset:16.0.2")
}

Google Play Services の依存関係

アプリが Google Play Services API 17.0.0 以上を実装していない場合は、 以下の依存関係を追加してください。

app/build.gradle.kts (Kotlin DSL - 推奨) app/build.gradle (Groovy DSL)
dependencies {
    implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
}
方法 2: 手動インストール

代替インストール方法

手動ダウンロード

SDK AAR ファイルをダウンロードし、プロジェクトに手動で統合してください。

  1. SDK のダウンロード: このページ上部のリンクから SDK をダウンロードしてください
  2. 展開して libs に追加: SDK パッケージを解凍し、 Singular.aar を Android プロジェクトの libs ディレクトリに追加してください
  3. libs ディレクトリの作成: 存在しない場合は、プロジェクトフォルダ内に libs というディレクトリを作成してください (通常は <project>/app/libs )
方法 3: Maven インストール

Maven インストール

プロジェクトの pom.xml ファイルに Singular Maven リポジトリを追加してください。

pom.xml
<project ...>
    <repositories>
        <repository>
            <id>singular.net</id>
            <url>http://maven.singular.net/</url>
        </repository>
    </repositories>
</project>

依存関係を追加してください:

pom.xml
<dependency>
    <groupId>com.singular.sdk</groupId>
    <artifactId>singular_sdk</artifactId>
    <version>12.14.0</version>
</dependency>
方法 4: Eclipse インストール

Eclipse インストール

次の手順に従って Eclipse を使用して SDK を統合してください。

Eclipse AAR プラグインを使用できます: gradle-eclipse-aar-plugin

プラグインを使用しない場合は、次の手順に従ってください:

  1. AAR の解凍: singular_sdk-12.14.0.aar を解凍してください
  2. JAR ファイル名の変更: classes.jar の名前を singular_sdk-12.14.0.jar に変更してください (これがメインの SDK jar です)
  3. install referrer の追加: com.android.installreferrer:installreferrer:2.2 ライブラリをプロジェクトに追加してください
  4. 権限のコピー: AAR に含まれる AndroidManifest.xml BIND_GET_INSTALL_REFERRER_SERVICE 権限を、ご自身の AndroidManifest.xml にコピーしてください
  5. ライセンス権限のコピー: AAR に含まれる AndroidManifest.xml CHECK_LICENSE 権限を、ご自身の AndroidManifest.xml にコピーしてください

ProGuard の設定

ProGuard ルール

コード難読化の問題を防ぐため、 proguard.config ファイルに以下のルールを追加してください。

proguard.config
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
# Uncomment this line in case your are calling the 'revenue' function using the Google billing library
#-keep public class com.android.billingclient.** { *; }

必要な権限

AndroidManifest の設定

以下の権限を、 AndroidManifest.xml ファイルの <manifest> タグの下に追加してください。

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

Kids SDK を統合する場合は、 com.google.android.gms.permission.AD_ID 権限を除外してください。


Samsung Galaxy Store クエリ

Samsung Galaxy Store の install referrer をサポートするには、 AndroidManifest.xml に以下を追加してください。

AndroidManifest.xml
<queries>
    <package android:name="com.sec.android.app.samsungapps" />
</queries>

SDK 統合

プライバシーコンプライアンス: Singular SDK を実装する際は、GDPR、CCPA、COPPA を含む、 ビジネスを展開する地域で施行されているプライバシー法を遵守してください。詳細は、 SDK のオプトインとオプトアウトの実践 を参照してください。

Singular SDK のインポート

インポート文を追加

MainActivity ファイルで Singular ライブラリをインポートしてください。

Kotlin Java
import com.singular.sdk.*

SDK の初期化

初期化関数の作成

セッショントラッキングとアトリビューションを有効にするため、private メソッドを作成し、 MainActivity の onCreate() メソッドから呼び出して、アプリの起動ごとに Singular SDK を初期化してください。

次の手順に従ってください:

  1. 関数の追加: 初期化メソッドを MainActivity クラス (またはエントリーポイントとなる Activity) 内に配置してください
  2. 認証情報の挿入: SDK KEY SDK SECRET を、ダッシュボードの Singular SDK キーとシークレットに置き換えてください
  3. SingularConfig の更新: SDK を初期化する前に、SingularConfig オブジェクトを作成し、 SDK の設定を行ってください (以下の構成オプションを参照)
  4. 関数の呼び出し: UI のセットアップ後、イベントの記録前に、 onCreate() 内で initSingularSDK() を呼び出してください

基本的な実装

基本構成で初期化メソッドを作成してください。

Kotlin Java
private fun initSingularSDK() {
    // Configure Singular with SDK key and secret
    val config = SingularConfig("SDK KEY", "SDK SECRET")

    try {
        Singular.init(applicationContext, config)
        Log.d("Singular", "SDK initialized successfully")
    } catch (e: Exception) {
        Log.e("Singular", "SDK initialization failed: ${e.message}")
    }
}

MainActivity onCreate から呼び出す

MainActivity の onCreate() メソッドで初期化メソッドを呼び出してください。

Kotlin Java
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // Initialize Singular SDK
    initSingularSDK()

    // Proceed with your app setup (e.g., UI initialization)
}

実装ガイドライン

SDK の初期化を実装する際は、以下の主要なガイドラインに従ってください。

  • 配置場所: 適切なセッショントラッキングを保証するため、Application クラスではなく MainActivity に初期化メソッドを追加してください
  • エラー処理: try-catch ブロックは、アプリをクラッシュさせることなく初期化エラー (例: 無効な認証情報) を記録します
  • ディープリンク: ディープリンク (アプリを起動する URL) を処理するには、 ディープリンクのサポート で拡張セットアップを参照してください
  • META Install Referrer: config.withFacebookAppId("FacebookAppID") を追加して、 Meta Install Referrer によるアトリビューション を有効にしてください

2025年6月18日時点 で、Meta の Advanced Mobile Measurement Reporting (AMM) によって Meta Install Referrer を実装する必要性がなくなりました。AMM レポートが 有効になっている場合は、Meta Install Referrer を実装しないことを 推奨します。

プロのヒント: アプリが複数のエントリーポイント (例: ディープリンク) をサポートする場合、 一貫した動作を保証するため、関連する各 Activity の onCreate() 内で initSingularSDK() が呼び出されるようにしてください。


構成オプション

SingularConfig メソッド

SingularConfig オブジェクトを使用すると、チェーン可能な構成メソッドで SDK の動作をカスタマイズできます。利用可能なすべてのオプションは、以下の表を 参照してください。

メソッド 説明
.withFacebookAppId(String facebookAppID) Facebook App ID を設定します。 Meta Install Referrer によるアトリビューション に必要です。 アプリの Facebook App ID はどこで見つかりますか? を参照してください。

2025年6月18日時点 で、Meta の Advanced Mobile Measurement Reporting (AMM) によって Meta Install Referrer を実装する必要性がなくなりました。 AMM レポートが有効になっている場合は、Meta Install Referrer を 実装しないことを推奨します。

.withCustomUserId(String customId) ユーザー ID を Singular に送信します
.withSingularLink(Intent intent, SingularLinkHandler handler)
.withSingularLink(Intent intent, SingularLinkHandler handler, long shortlinkTimeoutSec)
Singular Links でディープリンクを有効にします。引数 1 つのオーバーロードは デフォルトで 10 秒の短縮リンク解決タイムアウトを使用します。これを上書きするには、 引数 3 つのオーバーロードを使用してください。この呼び出しはディファード ディープリンクも 処理するため、別途 withDDLHandler / withDDLTimeoutInSec の設定は不要になりました。
.withOpenURI(URI openURI) intent から URI を取得します (Singular 由来でないリンクを通じて アプリが開かれた場合に、ディープリンクを処理するため)
.withGlobalProperty(String key, String value, boolean overrideExisting) グローバルプロパティを指定された値に設定します。キーと値は、 アプリから送信されるあらゆるイベント / セッションとともに Singular へ送信されます
.withSessionTimeoutInSec(long timeout) セッションタイムアウトを設定します
.withFCMDeviceToken(String token) 最初のセッションで送信される FCM トークンを設定します
.withLoggingEnabled() ロギングを有効にします
.withLogLevel(int level) ロギングレベルを設定します (デフォルトは Log.ERROR)