打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ndk 构建注意事项

ndk 构建注意事项

ndk 构建注意事项

1, Android.mk 和 Application.mk 的默认位置放在 jni,最还不要改这个位置不然很蛋疼

2, 生成一个静态库(.a)一定要在 Application.mk 中加入 APP_MODULES := libxxmod, 不然执行 ndk-build 没一点儿反应

3, LOCAL_C_INCLUDES 中的目录最好这样写 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../xxlib/include, 不然不在 jni 目录下 启动 ndk-build,则找不到那些 .h

4, 为了支持 exceptions 和 rtti 特性 Application.mk 中要加入 APP_STL := gnustl_static 或者 APP_STL := gnustl_shared
5, 编译 Lua 5.2 需要定义宏 LOCAL_CFLAGS += -D"getlocaledecpoint()='.'" 不然 llex.c:214 会编译失败, 原因是 ndk 自带的 Bionic C 库 localeconv 函数返回的 struct lconv 是个空结构
6, 编译 Freetype 需要定义宏 LOCAL_CFLAGS += -DFT2_BUILD_LIBRARY, 不然不会 #include <freetype/internal/internal.h> 导致编译失败

7, 多个静态库链接成一个动态库时 LOCAL_STATIC_LIBRARIES 中的顺序和库之间的依赖顺序有关系, 不然会链接不成功, 而且在 include xx-prebuilt.mk 是不要用 $(LOCAL_PATH), 因为可能这个被修改, 导致莫名其名的找不到 .mk, 应该这样

CONST_PATH := $(call my-dir)
...
include $(BUILD_SHARED_LIBRARY)
...
include $(CONST_PATH)/../../xx/jni/xx-prebuilt.mk

include $(CONST_PATH)/../../yy/jni/yy-prebuilt.mk

ps: LOCAL_STATIC_LIBRARIES 中的顺序和那个和依赖关系有关系真心潜规则,还好折腾过程中想起以前写 gcc 原生 Makefile 也遇到此问题,估计习惯用 VS 的同学会抓狂的:-D, 但愿你能通过度娘或谷哥找到这篇文章少浪费你点儿青春, :-D。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
FFMPEG移植到Android(ubuntu环境下)
androidNDK编译中文版2
Please define the NDK_PROJECT_PATH variable to point to it
Android 源代码中增加新apk
在android studio中集成javah, ndk
Using C++ OpenCV code with Android binary package
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服