6

マーケットプレイス固有のAPIを提供するAndroidアプリストアで、ベンダー固有のライブラリを条件付きで使用するAndroidアプリを構築するにはどうすればよいですか?たとえば、Amazonは独自のアプリ内購入APIと「GameCircle」APIを提供しています。Googleには独自のライセンスAPIがあり、OuyaにはIAPおよびハードウェアコントローラー用の独自のAPIがあります。

これらのベンダー固有のSDKの急増に伴い、Androidゲームのいくつかの個別のビルドを維持することが難しくなっています。コードが実行時にさまざまなAPIをチェックし、利用可能な場合はそれらを使用できるように、プロジェクトをビルドする方法を知りたいです。何かのようなもの

if (amazon api is available)
  // Do some amazon-specific stuff

ビルド時に、すべてのライブラリとリンクしてから、同じユニバーサルアプリを各ストアにアップロードします。

4

1 に答える 1

5

現在これを使用しています。

private boolean isAmazonInstall()
{
    PackageManager pm = getPackageManager();
    String installationSource = pm.getInstallerPackageName(getPackageName());
    if (installationSource != null && installationSource.startsWith("com.amazon"))
    {
                    return true;
    }
            return false;
}

伝えられるところでは、Amazon インストールの場合、getInstallerPackageName の戻り値は「com.amazon.venezia」です。Google Play からインストールされたアプリケーションの場合、結果は「com.android.vending」になります (以前は「com.google.android.feedback」でした。手動で APK をインストールすると、null が返されます。

このアプローチが有効であるという公式の確認を見つけることができませんでした。しかし、私はより良いアプローチを見つけることができませんでした。

于 2013-01-06T01:09:57.957 に答える