3

Android用のアプリを作っていますが、最低限4.0.3の機能を使えるようにしたいです。現在、4.0 以下を使用しているユーザー向けにこれをリリースすることについて心配していません。

基本的に、私の質問は次のとおりです。

  • Eclipse の基本最小 SDK を 4.0.3 に設定し、最大値を同じに設定したプロジェクトが既にある場合、最大値を変更できますか? もしそうなら、どのように?

  • 4.0.3 アプリは 4.1 アプリとまったく互換性がありますか? そうでない場合、これに対する良い回避策は何ですか? これを C/C++ で行っていた場合、答えはプリプロセッサ ディレクティブ (例: #ifdef ANDROID_OS_4_1 //do stuff for 4.1 only #endif) になります。ただし、Android はおろか、Java にもそのような同等のものはありません。

4

2 に答える 2

4

JellyBean に対してビルドするに<uses-sdk />は、AndroidManifest (タグのすぐ上<application />)でタグを使用できます。

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="16"/>

16 (JellyBean) の targetSdkVersion を使用すると、すべての新しい API にアクセスできます。

実行時に、アプリが実行されている Android のバージョンを確認し、それに基づいてアクションを実行できます。これを行うために、アプリでユーティリティ クラスを使用します。

public class Api {
    public static final int LEVEL = Build.VERSION.SDK_INT;
    public static final int FROYO = Build.VERSION_CODES.FROYO;
    public static final int GINGERBREAD = Build.VERSION_CODES.GINGERBREAD;
    public static final int GINGERBREAD_MR1 = Build.VERSION_CODES.GINGERBREAD_MR1;
    public static final int HONEYCOMB = Build.VERSION_CODES.HONEYCOMB;
    public static final int ICS = Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    public static final int JELLYBEAN = Build.VERSION_CODES.JELLY_BEAN;

    public static boolean isMin(int level) {
        return LEVEL >= level;
    }
}

次に、コードで次のようなことができます。

if(Api.isMin(Api.JELLYBEAN) )
    doJellybeanStuff();
else if(Api.isMin(Api.ICS) )
    doIcsStuff();
else
    doOldStuff();
于 2012-09-13T23:56:52.113 に答える
1

を使用してバージョンを取得できます

int SDK_INT = android.os.Build.VERSION.SDK_INT;

パラメータを設定する前にバージョンを確認できます

if(SDK_INT < 16) {
  someAPIInLowerVersions();
} else {
  someJBApi();
}
于 2012-09-13T23:22:15.013 に答える