关于mk的资料网上都很多,但是那是别人的,自己写代码还是会遇到这种那种问题!我就拿我编译时
遇到坑人的问题来说;
写一个jni,也要写相应的Android.mk,但是菜鸟啊,怎么写?反正我是不会自己写,所以只能模仿咯,模仿
也是一个学习的过程,比如下面的(xxx代表自己给so文件起的名)
include $(CLEAR_VARS)
LOCAL_MODULE := libxxx_jni
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := \
com_厂商_android_tvapi_common_xxx.cpp
LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE) \
frameworks/base/core/jni \
device/厂商/common/libraries/resourcemanager/include \
$(TARGET_TVAPI_LIBS_DIR)/include \
$(TARGET_TVAPI_LIBS_DIR)/../msrv/common/inc \
$(TARGET_TVAPI_LIBS_DIR)/../../core/muf/tvos/include
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
libnativehelper \
libcutils \
libutils \
libbinder \
libtvresholder \
xxx
LOCAL_REQUIRED_MODULES := xxx
LOCAL_CFLAGS += $(local_tvjni_cflags)
include $(BUILD_SHARED_LIBRARY)
以上全是照搬,但是照搬是会出错,就像我现在就遇到的make: *** No rule to make target `out/target/product/arbutus/obj/SHARED_LIBRARIES/xxx_intermediates/export_includes', needed by `out/target/product/arbutus/obj/SHARED_LIBRARIES/xxx_jni_intermediates/import_includes'. Stop.,编译xxx它需要编译xxx_jni啊,这样的问题怎么解决呢,就是把LOCAL_SHARED_LIBRARIES 和LOCAL_REQUIRED_MODULES 的xxx去掉;拨开云雾见日月,搞定;整完之后就像知道我改其他之后会出现什么问题,比如我注释 $(TARGET_TVAPI_LIBS_DIR)/../msrv/common/inc \
$(TARGET_TVAPI_LIBS_DIR)/../../core/muf/tvos/include,之后出现一些导包错误,说什么头文件里面没有定义所使用的方法,这个就有点不理解了!请看下回分解
|