あなたの質問を正しく読んでいれば、レベル 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 のメソッドを使用するアプリケーションがあります。
お役に立てれば。