4

SDKバージョン2.0を超えるすべてのAndroid画面サイズ(小さいものを除く)と密度で動作するリリースするアプリがあります。

また、特大画面でも動作します。現在、私はこれを追加しました:

<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="false"
        android:anyDensity="true" 
    />

ただしandroid:xlargeScreens="true"、デフォルトではfalseであるため、Androidマーケットで特大画面のデバイスに表示できるように、を追加する必要もあります。

ただしandroid:xlargeScreens、この属性はAPIレベル9から追加されたため、追加するには、Eclipseのターゲット設定を2.3に変更する必要があります。

では、このシナリオのターゲットコンパイル設定をどうすればよいですか?コンパイル中は2.3にする必要がありますか?はいの場合、2.0バージョンのデバイスで実行しているときにアプリで問題が発生することはありませんか?

4

7 に答える 7

2

はい、uses sdkを2.3に変更する必要がありますが、2.0にない新しいAPIや、サポートされている最小のsdkバージョンを使用していないことを確認してください。または、それらを使用する場合は、リフレクションを使用する必要があります。

ただし、SDKバージョンの使用方法の詳細はここにあり、uses-sdkの詳細はここにあります

私は自分のアプリケーションでも同じことを行い、リリースする前に両方の[すべての]バージョンでアプリケーションをテストするようにしてください。

最高、アチエ。

于 2011-02-01T05:44:59.063 に答える
2

これをコメントから移動して、将来この質問を検討している他の人にとってより明確にします。

Androidの新旧両方のバージョンをサポートする場合、新しいリリースごとにフレームワークで多くの変更が行われるにもかかわらず、アプリケーションの実行方法が混乱する可能性があるため、ここでこれを明確にしてみます。

1.5 SDK用に作成されたアプリケーションは、そのAPIレベルに存在する関数のみを呼び出すことができるため、たとえば、マルチタッチAPIは1.5には存在せず、存在しません。「わかりました。ただし、新しいAPIを呼び出す必要はありません。アプリを2.3で動作させ、a2sdをサポートしたいだけです」と言います。「OK、マニフェストでtargetApiを変更し、minSDKを設定してコンパイルします。 2.3に対して、あなたは行ってもいいです。」

なぜそれが機能するのですか?のonMeasure()メソッドListViewが2.2で変更され、onMeasure()内でbetterCalculateFunction()を呼び出す場合はどうなりますか?アプリがまだ機能するのはなぜですか?

これは、Javaでの遅延バインディングの利点です。ご覧のとおり、Javaはデバイスに到達して実行されるまでコンパイルされません。Eclipseで実行しているのは、後でデバイスによって解釈される一連のバイトコード命令を含むバイトコードに変換することです。ただし、バイトコードにbetterCalculateFunction()への参照が含まれることはありません(直接呼び出さない限り、onMeasure()の呼び出しは間接的です)。これは、コードがデバイスで実行されているときに、デバイスのAndroidフレームワークに対してリンクされ、コードがonMeasure()を直接呼び出すために発生する可能性があります。これは、外向きのパブリックAPIであるためです。実行パスはフレームワークに入り、必要なものをすべて呼び出します。実行が完了すると、コードに戻ります。

したがって、1.5では表示される可能性があります

doStuff(コード)-> onMeasure(パブリックAPI)->完了

および2.2

doStuff(コード)-> onMeasure(パブリックAPI)-> betterCalculateFunction(プライベート関数)->完了

APIレベルに応じて存在する場合と存在しない場合がある関数を呼び出す必要がある場合は、ここで私の関連する回答を確認することをお勧めします。stackoverflow:アプリを適切にダウングレードします

それがいくつかのことをクリアすることを願っています。

于 2011-02-01T06:54:34.230 に答える
0

私は2.3を試していませんが、それが2.2で行っていることです。

2.2用にコンパイルし、1.6でテストして、すべてが期待どおりに機能することを確認します。私はそれに関する問題に遭遇していません。

再確認するには、ターゲットを2.3に設定してから、低回転バージョンのエミュレーターをセットアップして、すべてが機能することを確認します。

于 2011-02-01T05:44:08.480 に答える
0

android:xlargeScreensのデフォルト値はtrueであるため、何も変更する必要はありません。minSdkVersionまたはtargetSdkVersionが4より大きい限り、デフォルトでオンになっています。http: //developer.android.com/guide/topics /manifest/supports-screens-element.html

于 2011-04-05T16:43:19.323 に答える
0

これがどのように機能するかについての公式のAndroid開発者ブログの説明は次のとおりです

要約すると、下位互換性のある方法で古いOSバージョンをサポートしながら、最新のXMLを使用できます。

于 2011-05-24T19:40:30.827 に答える
0

このブログ投稿を読んでいる間、私は私の古い質問に対する答えがあると思います。以下の抜粋(3.2から導入された別のマニフェスト属性「requiresSmallestWidthDp」用):

「問題は、requiresSmallestWidthDp属性を使用するために、Android 3.2以降に対してアプリケーションをコンパイルする必要があることです。古いバージョンはこの属性を理解せず、コンパイル時エラーが発生します。最も安全な方法は、 minSdkVersionに設定したAPIレベルに一致するプラットフォーム。リリース候補をビルドするための最終的な準備をするときは、ビルドターゲットをAndroid 3.2に変更し、requiresSmallestWidthDp属性を追加します。3.2より古いAndroidバージョンは、そのXML属性を単に無視します。 、したがって、ランタイム障害のリスクはありません。」

于 2011-09-20T06:13:12.323 に答える
-1

画面ごとに複数のapkを作成する必要があり、アプリケーションのサイズが小さくなります。各アプリケーションのマニフェストでは、次のリンクに従って定義する必要があります。 http://developer.android.com/guide/practices/screens-distribution.html

于 2011-12-21T10:39:47.587 に答える