2011-10-28 12 views
7

私は共有ライブラリlibfoo.soを所有しており、アンドロイドアプリで使用する必要があります。apkで事前ビルドされた共有ライブラリをEclipseに組み込む方法

私の最初の試みはAndroid.mkに持っていた:私の活動の

include $(CLEAR_VARS) 
LOCAL_MODULE := test 
LOCAL_SRC_FILES := test.cpp 
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo 
include $(BUILD_SHARED_LIBRARY) 

は、私が持っている:これは正しく構築さ

statis 
{ 
    System.loadLibrary("foo"); 
} 

、しかし私が作成したAPKのdoesntのは、今libfooが含まれていることに気づきました。だから(私もlibs/armeabiにコピーされていない参照してください)。私は私のアプリを実行するときUnsatisfiedLinkErrorを持っている理由を推測する。

私は$(PREBUILD_SHARED_LIBRARY)を追加する必要があるいくつかの他の記事で見たので、私は私のAndroid.mkに次の行を追加します。

include $(CLEAR_VARS) 
LOCAL_MODULE:= foo 
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 
include $(PREBUILD_SHARED_LIBRARY) 

しかし、今私は、ビルドエラー取得しています:

foo: LOCAL_SRC_FILES points to a missing file. 

パスが正しいと確信しています。 libfoo.soは最後にバージョン番号を持っていたことに注意してください.ndk-buildが不平を言ってから削除しなければなりませんでした。

私は間違っていますか?

答えて

5

は、つづりの間違っているように見える:

include $(PREBUILD_SHARED_LIBRARY) 

これは(ADT22、インディゴ、NDK-R9)私のために動作しません

include $(PREBUILT_SHARED_LIBRARY) 
1

eclipseでは、パスproject/libs/armeabi /にファイルをコピーして静的ライブラリを追加し、プロジェクトをクリーニングした後にプロジェクトを再構築します。これにはapkの.soも含まれます。

+0

でなければなりません。 libはビルド時に削除されます。 – WindRider

5

解決策を見つけました! LOCAL_SRC_FILESには絶対パスまたは相対パスは使用できません。ファイル名のみです。パスはLOCAL_PATHに設定する必要があります。

だから私の場合には、代わりの:

LOCAL_PATH := $(FOO_PATH) 
LOCAL_SRC_FILES := libfoo.so 

そして、これはうまく動作:

LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 

私が今持っています。ザ・が含ま

+0

ちょっと..あなたはそれにいくつかの光を置くことができます。同じ問題に直面している。私は3つの.soファイルを読み込み、何を.mkファイルに書き込むべきですか? –

+2

Downvote。 LOCAL_SRC_FILESには絶対に相対パスを含めることができます。 –

+0

はい、それは相対的なパスを持つことができることに同意しました。 – pauld

関連する問題