0

私は方法minSdkVersiontargetSdkVersion作業を知っていますが、この具体的なケースでは確認が必要です (うっかり何かを見落としたくありません)。

私のアプリ (ゲーム) は、Android 2.2 以降のすべてのデバイスをサポートしています。これまでは8 に設定されminSdkVersiontargetSdkVersionいました (つまり、Android 2.2 に対応する API レベル 8)。

Viewsハードウェアアクセラレーションがオンになっていると、私の作品の 1 つが大幅にスムーズになりますが、 API レベル 11が必要なため、プロジェクトで設定できません。(どうやって気づいたのでしょうか? 私のテスト デバイスの 1 つは、開発者設定で [GPU マッピングを強制する] チェックボックスを提供していたので、アプリを実行したときに違いに気付きました。)

解決策はtargetSdkVersion11 に設定することだと思います (ただし、8 のままにしておきminSdkVersionます)。コードから、API レベル 11 以上で実行しているかどうかを確認し、ビュー (ウィンドウ) の HW アクセラレーションを有効にします。FLAG_HARDWARE_ACCELERATED最後のステップは、ソース コードで認識されないため、より高い API レベルを必要とするものです。

すべてのコードがminSdkVersionAPI のみを使用すると仮定すると (ハードウェア アクセラレーションなど、実行時に例外的な呼び出しについてプラットフォーム バージョンをチェックする場合を除くtargetSdkVersion)、以下のデバイスで問題が発生しないことが保証されますか? (上記の解決策により、ということです。)ハニカム以前のデバイスでアプリが正しく動作しないことを避けたいと思います。(プラットフォームのバージョンに関しても、幅広いデバイスでアプリをテストしているため、テストは問題ではないことに注意してください。)

4

1 に答える 1

1

Activityウィンドウが API レベル 11 以上の場合、 で次の行を使用してウィンドウのハードウェア アクセラレーションを設定します。

if( Build.VERSION.SDK_INT >= Build.HONEYCOMB ) {
    getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}

EDIT : 編集に対する回答として、Android Lint は TargetSDK 向けではないというエラーをスローする場合がありますが、古いバージョンでは機能し、例外はスローされません。もしそうなら、バージョンはどういうわけか> 10であり、それは不可能です。

ただし、ハードウェア アクセラレーションを使用することで、より高い API ターゲットを目指しているため、TargetSDK を更新する必要があります。

于 2012-10-07T11:24:47.423 に答える