4

サードパーティの .so ライブラリを自分のアプリと共にカスタム Android システムに構築しようとして、ここで 1 週間立ち往生していました。http://www.maxters.net/2012/05/adding-prebuilt-shared-library-to-android-build-system/に従い、ビルド済みの共有ライブラリとして .so lib を Android Build System に正常に追加しました。これで、.so lib が ../out/target/product/crespo4g/obj/lib/ に表示されます。

ただし、このディレクトリ内のライブラリは、フラッシュ時にデバイスに移行されません。また、私の .so lib も /data/data/my_app_name/lib に表示されません。そのため、 System.loadLibrary()を実行するとUnsatisfiedLinkErrorが発生します。

これを解決するには3つの方法があると思いましたが、実装方法がわかりません:

  1. 私のアプリは、私の.soが私のアプリ全体と一緒であることをコンパイラーに示すことができなかったので、.so libは私のアプリでシステムイメージにコンパイルされません. しかし、「LOCAL_STATIC_LIBRARIES := libXX」で宣言しましたが、何か問題がありますか?
  2. .so lib を /system/lib/ にビルドする方法はありますか? /system/lib/ の下にある so libs はどこから派生したものですか?

私はAndroidの構築に慣れていないので、助けてください..

ありがとう!

4

1 に答える 1

1

この回答この回答のアドバイス、およびこのグループスレッドのアドバイスに対してmakefileを確認することをお勧めします

更新 元のメイクファイルは正しくありませんでしたが、これはICSを構築するのに役立ちます:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libmozglue
LOCAL_SRC_FILES := libmozglue.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := libplugin-container
LOCAL_SRC_FILES := libplugin-container.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

上記は、カスタム システム ビルドにシステム アプリとして含める Android 用の firefox に必要なネイティブ ライブラリです。

于 2013-07-15T04:33:51.347 に答える