46 lines
1.3 KiB
Makefile
46 lines
1.3 KiB
Makefile
# Package a shared library into an APK
|
|
|
|
NDK_BASE := ../..
|
|
|
|
# Assume ANDROID_SDK_BASE is defined to point to the base of the Android SDK
|
|
# Assumes PREBUILT is defined to point to the prebuilt directory of the Android source
|
|
|
|
include $(NDK_BASE)/config/config.mk
|
|
|
|
SOURCES := native.cpp
|
|
OBJECTS := $(SOURCES:.cpp=.o)
|
|
LIBS := -lc -lm
|
|
ALIB := $(PREBUILT)/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a
|
|
|
|
APKBUILDER := $(ANDROID_SDK_BASE)/tools/apkbuilder
|
|
|
|
APK_INPUT_DIR := bin
|
|
APK_OUTPUT_DIR := bin/full
|
|
|
|
APK_NAME := JNIExample.apk
|
|
INPUT_APK := $(APK_INPUT_DIR)/$(APK_NAME)
|
|
OUTPUT_APK := $(APK_OUTPUT_DIR)/$(APK_NAME)
|
|
APK_STAGE := $(APK_OUTPUT_DIR)/temp
|
|
|
|
JNI_LIBS := libnative.so
|
|
|
|
all: $(OUTPUT_APK)
|
|
|
|
$(OUTPUT_APK) : $(INPUT_APK) $(JNI_LIBS)
|
|
rm -rf $(APK_STAGE)
|
|
mkdir -p $(APK_STAGE)
|
|
unzip $(INPUT_APK) -d $(APK_STAGE)
|
|
mkdir -p $(APK_STAGE)/lib/armeabi
|
|
cp $(JNI_LIBS) $(APK_STAGE)/lib/armeabi
|
|
$(APKBUILDER) $(OUTPUT_APK) -v -rf $(APK_STAGE)
|
|
rm -rf $(APK_STAGE)
|
|
|
|
libnative.so: native.o
|
|
$(CC) -nostdlib -Wl,-soname,libhello-shared.so -Wl,-shared,-Bsymbolic -L$(NDK_BASE)/lib $^ $(LIBS) -o $@ -Wl,--no-undefined $(ALIB)
|
|
|
|
native.o: native.cpp
|
|
$(CC) -c -fpic $(INC) -I$(NDK_BASE)/include/nativehelper -o $@ $^
|
|
|
|
clean:
|
|
rm -rf *.o libnative.so $(APK_OUTPUT_DIR)
|