1

自作の Android ディストリビューションに単純な C++ 共有ライブラリを含めようとしています。エラーや警告なしで g++ でコンパイルされています。

今のところ、この .so ライブラリを自作の Android に含める必要があります。

ソースを「$(Android Source)/ndk/source/android/libmd5/jni」にコピーし、次のコンテンツで Android.mk ファイルを作成しました。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_CFLAGS := 

LOCAL_MODULE     := libmd5
LOCAL_LDLIBS     := -L$(SYSROOT)/usr/lib
LOCAL_SRC_FILES  := md5.h md5.cc

include $(BUILD_SHARED_LIBRARY) 

次に、 ~/.bashrc の最後に次の行を追加しました

    export PATH=$PATH:$HOME/AndroidSources/ndk:$HOME/bin/android-sdk-linux/tools

それぞれ NDK と SDK-tools のパスがあります。

ndk-build を起動すると、次のようになります。

andrey@andrey-desktop:~/AndroidSources/ndk/sources/android/libmd5$ ndk-build
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5    
Android NDK:   md5.h md5.cc    
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found
SharedLibrary  : libmd5.so
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: Command not found
make: *** [obj/local/armeabi/libmd5.so] Error 127

~/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/
をたどると、ビルド済みのディレクトリが見つかりませんでした。config.mk と setup.mk の 2 つのファイルのみが含まれます。

ただし、いくつかダウンロードした ndk-r8e から ndk-build を起動すると、非常に異なる出力が得られます。

$ ndk-build
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5    
Android NDK:   md5.h   
Compile++ thumb  : md5 <= md5.cc
StaticLibrary  : libstdc++.a
SharedLibrary  : libmd5.so
Install        : libmd5.so => libs/armeabi/libmd5.so

警告は理解しています - .h ファイルは .mk ファイルにあってはなりません。ただし、 libs/armeabi/ に必要なライブラリを取得しました(上記のように)

私はubuntu 12.10ですべてを行い、android sourceからndkを使用しようとしました。

私が間違っていることは何ですか?自作のアンドロイドに含まれる共有ライブラリを取得するには? 十分に詳細な情報を提供できたことを願っています。そうでない場合は、お尋ねください。

4

1 に答える 1