我在c/C++中有一個庫。我已經在一些C++程序中成功地使用了它。Android編譯庫NDK
我想測試,如果它編譯於Android,這將是什麼規模等
有什麼辦法,我編譯這個庫到.so
文件,而無需一個完整的Android的Java項目?我對Android開發一無所知,但有一位朋友想要使用我的庫。我可以給他提供一個編譯好的.so
文件嗎?
我發現的每一個資源都需要編譯出Android項目中的JNI
文件夾。
我在c/C++中有一個庫。我已經在一些C++程序中成功地使用了它。Android編譯庫NDK
我想測試,如果它編譯於Android,這將是什麼規模等
有什麼辦法,我編譯這個庫到.so
文件,而無需一個完整的Android的Java項目?我對Android開發一無所知,但有一位朋友想要使用我的庫。我可以給他提供一個編譯好的.so
文件嗎?
我發現的每一個資源都需要編譯出Android項目中的JNI
文件夾。
我發現要使用build-ndk腳本,我不需要一個真正的項目。我創建了一個文件夾project
,除了另一個文件夾jni
以外沒有任何內容,並將所有資源都放在該文件夾中。然後,我創建了Android.mk
文件並按照ndk文檔中所述運行腳本。
你需要做的是安卓Native Development Kit(NDK)http://developer.android.com/sdk/ndk/index.html和GCC編譯器。
然後,您可以創建一個Makefile,其參數如下所示(謝謝ViTo Brothers Apoyan)並創建您的共享庫。
GCC := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-gcc.exe
GPP := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-g++.exe
AR := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-ar.exe
OPTIONS :=\
-fpic \
-ffunction-sections \
-funwind-tables \
-fstack-protector \
-D__ARM_ARCH_5__ \
-D__ARM_ARCH_5T__ \
-D__ARM_ARCH_5E__ \
-D__ARM_ARCH_5TE__ \
-Wno-psabi \
-march=armv5te \
-mtune=xscale \
-msoft-float \
-mthumb \
-Os \
-fomit-frame-pointer \
-fno-strict-aliasing \
-finline-limit=64 \
-DANDROID \
-Wa, \
-O2 \
-DNDEBUG \
-g \
default: all
all: obj
$(AR) r mysharedlibrary.so *.o
obj:
$(GCC) $(OPTIONS) -c *.c
謝謝,但我最終解決了這個更簡單的方法。 – baruch
「項目」目錄沒有什麼特別之處 - 將其命名爲任何你想要的。源代碼和'Android.mk'應該放在'$(project)/ jni /'中,並且在構建過程中會創建一些目錄:'$(project)/ obj'和'$(project)/ libs'。 – jrr