7

Archos 43 用 の JNI ( Java Native Interface )を使用する Android アプリケーションを開発しました。

問題はなく、アプリケーションをスムーズに実行できました。その後、 Samsung I9100G Galaxy S II と Samsung I9100 Galaxy S II同じアプリケーションを実行しようとしました。

I9100Gではアプリケーションを実行できましたが、I9100では実行できませんでした。

これは、アプリケーションの JNI 部分が I9100 でサポートされていなかったためです。

この理由を知ろうとしたところ、I9100G が使用していることがわかりましたTi OMAP 4430 chipsetPowerVR SGX540 as GPU whereas I9100 uses Exynos 4210 chipset and Mali-400MP as GPU.

その理由はチップセットの変更にあると思われます (Archos 43 も Ti OMAP を使用しているため)。しかし、それ以上の検索結果は得られませんでした。

更新アプリケーションは Bluetooth を利用します。カスタム ハードウェア (CH) に接続しようとしているときに、I9100 でアプリケーションを実行しているときに、CH から応答を取得できません。Bluetooth 通信部分は jni を使用して記述されています。

私の質問は、チップセットが原因で、I9100で JNI を使用してアプリケーションを実行できないかどうかです。

また、より一般的な質問として、どのデバイスが Android JNI アプリケーションをサポートしているか、Android JNI アプリケーションを実行するためにデバイスに必要な基本機能は何かということです。(私はこれらすべての質問に対する答えを見つけるためにかなりの時間を費やしました。どんな助けも大歓迎です。)

ありがとうございました。

4

2 に答える 2

3

すべての Android デバイスは JNI を「サポート」しています。これは、OS の大部分が実装されている方法です。Java サービスとフレームワークは、JNI を介してネイティブ ライブラリを使用します。ただし、さまざまなアーキテクチャがあり、ネイティブ モジュールがある場合は、サポートするアーキテクチャごとに 1 つをビルドする必要があります。ARM デバイスのみを対象としている場合でも、ARMv5 および ARMv7 のものがあります。ARMv5 はすべてで動作するはずですが、遅くなります。

Galaxy SII デバイスはおそらく同じアーキテクチャを使用しているため、他の問題/バグに遭遇しました。どのようなエラーが発生しましたか? 利用可能な場合は、logcat を投稿します。いずれかのデバイスで利用できないハードウェアにアクセスしようとしている可能性がありますか? または、何らかの理由で欠落しているシステム ライブラリにリンクしますか?

于 2012-10-05T04:55:34.663 に答える
1

問題が 2.3.3 の BT に関連している可能性があることを明らかにしたので、それはすべて理にかなっています。4.0 より前の Android Bluetooth インターフェイスは標準化されていませんでした。コードが TI OMAP 固有である可能性が最も高いです。したがって、他のチップセットをサポートしたい場合は、他のドライバーと通信するか、ICS 以上のデバイスをターゲットにする必要があります。

于 2012-10-05T10:54:13.913 に答える