2012-03-07 21 views
5

現在のところ、私のAndroidシステムでは、 をLinuxドライバ経由で接続されたメディアデバイスと通信するためのネイティブライブラリを開発しており、Javaネイティブインタフェース経由で apkアプリケーションからアクセスしています。これは現在 まで正常に動作しています。2つのアプリケーション間でネイティブライブラリを共有

しかし、同じネイティブライブラリ に最初のアプリケーションと並行してアクセスする必要がある別のアプリケーションもあります。期待どおり、新しいアプリケーションのリンクされたネイティブライブラリの異なるデータ セクションのために、このアプローチは ではありません。

これを元に戻すには、 とネイティブライブラリをリンクする新しいサービス/アプリケーションを作成します。他のアプリケーションは この新しいサービス/アプリケーションへのバインダー呼び出しを使用してAPIにアクセスします。

私の質問は:

  1. この新しいアプローチが可能ですか?誰かがより良いアプローチで私を助けることができますか?
  2. はいの場合は、APIでバッファを返す必要があり、APIの一部は コールバックです。これらのタイプの関数は、バインダーインターフェースを使用して処理できますか?

おかげで、 アッシュートッシュ

答えて

0

は、順番に、ネイティブライブラリにアクセスし、より高いレベルのAPIを提供して瓶に外部のライブラリを構築します。次に、このjarライブラリを他のlibとして使用します。 .soファイルをjarファイルに入れて1つのライブラリファイルを作成する方法を確認する必要があります。

+0

複数のアプリケーションで.soファイルを共有できますか?たとえば、外部ストレージを使用せずに共通の.soファイルを共有するアプリケーションを作成するにはどうすればよいですか?あなたの答えに詳細を記入できますか? – trusktr

+0

これは新しい質問の価値があります。投稿する!今のところ:いいえ、デバイス上のアプリケーションのデータフォルダに.soファイルを置くだけではありません。 – Bondax

0

私は、サービスアプローチは、opencvがこれを実現する方法と正確には信じています。具体的には、OpenCVは、アプリケーションストアにマネージャーを持っています。このマネージャから.soライブラリを取得するBaseLoaderCallbackを実装するアプリケーションを開発することができます。背後では、これはService、ServiveConnection、およびaidlを使用してライブラリを取得します。

更新...

今私はそれについて考えることを、私はOpenCVのマネージャーだけでライブラリパスを受け入れ、その後は、System.loadコマンドでロードできるライブラリ、パスを渡すかもしれないと思います。

関連する問題