1

eclipse を使用してプロジェクトを作成している間、Android 2.2(Froyo) として必要な最小 SDK と Android 4.2(Jelly Bean) として Android 4.3 でコンパイルするターゲット SDK があります。データベースの作成には sqlitebrowser v2.ob1 を使用しました。私のアプリはエラーなしで実行され (logcat では赤で数行ですが)、エミュレーターで実行すると要件を満たします。3つの異なるエミュレーターを試しましたが、問題なく動作します。しかし、モバイルデバイスでこのアプリを試してみると、データベースに関係があるときはいつでも強制終了が表示されます。データベースから取得するか、データベースに接続する必要がある場合は、強制的に閉じることを示しています。検索すると、外部で作成されたデータベースが使用されている場合でも、アプリを実行するには .apk ファイルだけで十分であることがわかりました (アセットフォルダーにコピーしてから、デフォルトの場所にコピーします)。私の質問は

  1. 私のアプリは、Android 2.2 から 4.2 までのどのデバイスでも正常に動作するはずですか?

  2. 代わりに Android 4.2 でアプリをコンパイルしてみてください。

  3. 試したデバイスのバージョンについてはわかりませんが、 2.2 と 4.2 の範囲内であることは確かです。(おそらくジンジャーブレッド)。デバイスを USB 経由で PC に接続し、logcat (bcoz 私は Android 携帯電話を所有していません) を表示する以外に、これを解決するにはどうすればよいですか?

  4. アプリのバージョン、エミュレーター、およびモバイルまたはその他のデバイスのバージョンはどのように関連していますか?

  5. アプリはどのバージョンのデバイスで実行できますか?

これは私の最初のAndroidアプリなので、助けていただければ幸いです。よろしくお願いします

4

1 に答える 1

4

下位バージョンの SDK ではサポートされていない機能をアプリケーションで使用している可能性があります。ソースコードやスタックトレースなしでそれが何であるかを正確に伝えることは困難ですが、minSdkVersiontargetSdkVersion.

Android SDK の新しいバージョンごとに、以前のバージョンには存在しなかった追加の機能と API が導入されることを考慮してください。明らかに、古いバージョンの Android はこれらの機能をサポートしていません。

を指定するtargetSdkVersionと、その特定のバージョンの Android で導入された機能を使用していることを指定します。また、その特定の API レベルでアプリケーションをテストし、正常に動作することを暗示しています。

minSdkVersionよりも低いを指定すると、実行前に現在の API レベルが機能と互換性があることを確認するためにコード内でテストまたはチェックを手動でプログラムしたためtargetSdkVersion、アプリケーションがより低い API レベルで適切に動作することを暗示しています。.

たとえば、Jelly Bean で導入された機能を実行したいが、下位の API レベル (Gingerbread など) のサポートを保持したい場合は、機能を実行する前に次のチェックを追加できます (他のバージョン コードはこちらを参照)。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    // run some code specific to API level 16
}

Android SDK は、下位の API レベルで導入されたコードを自動的に処理できますが、上位の API レベルに固有のコードを自動的に処理することはできません。

それを念頭に置いて、あなたの質問に答えるために:

  1. いいえ、アプリが Android 4.2 で正しく動作することが保証されているだけです。サポートしたい以前のバージョンとの下位互換性を維持するかどうかは、開発者次第です。

  2. それは問題ではありません。代わりに、ターゲットとしているのと同じ API レベル (Android 4.2、API レベル 17) を実行しているデバイス/エミュレーターでアプリケーションが実行されているかどうかを最初に判断し、それよりも低いバージョンを実行しているデバイス/エミュレーターで実行してみてください。クラッシュの原因となっているコードを特定します (logcat が役立ちます)。

  3. デバイスの Android バージョンは、[設定] > [端末情報] > [Android バージョン] で確認できます。Gingerbread を実行している場合は、それ以降に多くの新機能が導入されており、アプリケーションがそれらの機能の一部を使用している可能性があることに注意してください。エミュレーターの場合、エミュレーターを作成するときに API レベルを指定できます (使用する他のバージョンを SDK Manager からダウンロードできます)。

  4. これまでの私の答えは、この関係を明確にしたと思います。

  5. 繰り返しますが、アプリケーションは Android 2.2 以降を実行しているすべてのデバイスで実行されますが、デバイスが実行している API レベルよりも高い API レベルの機能を使用すると、アプリケーションがクラッシュする可能性があります。

これでも不明な場合は、Android のドキュメントで複数のプラットフォーム バージョンのサポートについて詳しく読む必要があります:こちら

于 2013-11-04T06:56:21.710 に答える