1

私はこの種の質問が以前に尋ねられたことを知っています、例えばここで:Android:APIのバージョンに応じてコーディングする方法は?

そこでは、最新のAndroidレベルにコンパイルする必要があることも言及されています。私の基本的なアプリのバージョンは、レベル12以降の7以降で利用できるはずです。

つまり、プロジェクトのターゲット設定は12であり、マニフェストのmin-sdkである必要があります。

しかし、Android市場のアプリは、レベル12のデバイスでのみ利用可能になりますか?アプリは7から実行する必要がありますが、機能が制限されています。

また、レベル12では、12からのみ利用可能な特定のパッケージをインポートする必要があります。そのため、Androidのターゲットを低く設定することもできません。そうしないと、コンパイラエラーが発生します。

要約すると:

  1. アプリはレベル7から利用可能になるはずです
  2. ユーザーがレベル12以上の場合、アプリは特定のレベル12以上のパッケージをインポートし、これらの機能を利用できるようにする必要があります
  3. ユーザーの数が12未満の場合、パッケージはインポートしないでください

どうもありがとう!

4

1 に答える 1

1

あなたの質問を正しく読んでいれば、レベル 7 のデバイスにアプリケーションをインストールできるようになります。

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="12" />

開発では、任意のターゲットに設定できます。つまり、プロジェクト ターゲットは SDK 4.0 ですが、マニフェスト ターゲットは 1.5 (android:targetSdkVersion="3") にすることも、その逆にすることもできます。Eclipse は警告を出しますが、結果を考慮に入れる限り、任意のターゲット向けに開発し、マニフェストを任意のターゲットに設定できます。

レベル 7 に存在しないメソッドを呼び出そうとした場合にアプリケーションがクラッシュしないようにするために、コードで少し作業を行う必要があることはおそらくご存じでしょう。例。

編集:

私のために働く例。

/**
 * Get the current SDK version as an integer. If we are using 1.5 the SDK is
 * returned as a String so using the Build.VERSION.SDK_INT method will cause
 * the application to crash. This method will return 3 if the version is 1.5
 * and will return the proper result for Build.VERSION.SDK_INT if that
 * method is available.
 * 
 * @return
 */
public static int getSdkInt() {
    if (Build.VERSION.RELEASE.startsWith("1.5"))
        return 3;

    try {
        return YourInternalClass.getSdkIntInternal();
    } catch (VerifyError e) {
            Log.e(TAG, e.toString());
        return 3;
    }
}

メソッドが呼び出されるまでロードされないように、内部クラスに存在しない可能性のあるメソッドを呼び出す必要があります。

private static class YourInternalClass {
    private static int getSdkIntInternal() {
        return Build.VERSION.SDK_INT;
    }
}

これで、SDK のバージョンを確認できます。7 以降のパッケージにのみ存在するメソッドがある場合は、それらのメソッドを内部クラスに配置します。それからあなたはすることができます

if(TheClassYouPutThisMethodIn.getSDKInt() >= 12)
YourInternalClass.yourLevel12Method();

おそらくこれを行うためのより良い方法があると確信しています(誰かが投稿できることを願っています)が、私にとってはうまく機能します。レベル 3 の電話で安全に実行される SDK 13 のメソッドを使用するアプリケーションがあります。

お役に立てれば。

于 2011-12-17T22:39:28.503 に答える