4

私のカスタム ビューでは、drawTextOnPath(...)4.1 までのハードウェア アクセラレーションではサポートされていない方法を使用しています。

ifそのため、実行時に現在の Android バージョンをチェックし、このバージョンが 4.1 以上の場合にハードウェア アクセラレーションをオンにするステートメントを追加したいと考えました。私の問題は、プロジェクトを Android 4.0 SDK (私の最小バージョン) でコンパイルしているBuild.VERSION_CODESため、Android 4.1 用の を持っていないことです。

最小バージョンは 4.0 ですが、プロジェクトを 4.1 でコンパイルする必要がありますか?

4

2 に答える 2

5

私は一度それを書いた: Android ターゲティング システム

重要な部分:

Java 7 コンパイラーで Java アプリケーションをコンパイルする場合、Java 6 インタープリターでは使用できません。インタプリタは、Java 7 言語機能を使用していなくても、生成されたバイトコードを解釈できないことを通知します。最新のコンパイラでコンパイルしたいが、バイトコードを古い JVM インスタンスで実行できるようにする場合は、コンパイラにそうするように指示する必要があります (-target-flag を使用)。

Android では、<uses-sdk>マニフェスト ファイルでサポートするプラットフォーム バージョンを宣言できます。android:minSdkVersionandroid:targetSdkVersionこれらの「ターゲティング メカニズム」の違いは、Android はアプリケーションがコンパイルされたプラットフォームのバージョンを気にしないことです。

アプリケーションが API レベル 4 と互換性があると宣言すると、Android 4.1 (API レベル 16) に対してコンパイルした場合でも、Android は問題なくアプリケーションをインストールします。

要するに:

  • アプリケーションを最新の Android プラットフォームで動作させたい場合は、それに対してビルドします。
  • minSdkVersion を使用して、アプリケーションでサポートされている最も低い API レベルを宣言します。
  • targetSdkVersion として、アプリケーションをコンパイルした API レベルを使用します。
  • [Android] Lintを使用して、(おそらく) サポートされていない API 呼び出しを確認します。
  • 条件付き実行と @TargetApi アノテーションを使用して、利用可能な場合は新しい API を使用します。

最新の SDK を使用してアプリケーションを構築している場合、利用可能なすべてのものがBuild.VERSION_CODESあります。

于 2013-04-13T10:05:43.053 に答える
0

はい、4.1 の機能を使用する場合は、4.1 に対してコンパイルする必要があります。条件付きで実行する場合でも、そうしないと、4.1 のすべての機能が無効 (存在しない) と見なされるため、コンパイラはアプリをビルドできません。

于 2013-04-13T10:05:26.743 に答える