我希望我的原生可执行文件为auto-populated到/data/data/.../lib/
。为此,它的名称为lib*.so
。但是,如果我尝试设置此名称,Android NDK会抱怨:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libhello.so
LOCAL_SRC_FILES := hello.c
include $(BUILD_EXECUTABLE)
Android NDK: jni/Android.mk:hello.so: LOCAL_MODULE_FILENAME must not contain a file extension
答案 0 :(得分:2)
解决方法:使用Android NDK想要的名称安装,然后在安装后重命名:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_EXECUTABLE)
all:
mv ${NDK_APP_DST_DIR}/hello ${NDK_APP_DST_DIR}/libhello.so
您的应用程序无需任何准备步骤即可调用可执行文件/data/data/<package>/lib/libhello.so
。
答案 1 :(得分:-1)
您正在尝试构建可执行文件而不是共享库。你想改变这个:
include $(BUILD_EXECUTABLE)
到此:
include $(BUILD_SHARED_LIBRARY)