赞
踩
## 编译
一般将需要一直的第三方库下载解压到 external中
本文以 作者添加 libiconv库来举例
下载 libiconv库https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
解压到 external/libiconv中
在external/libiconv 运行此库的 ./configure -host=arm(不要看其它博客所说host指向 arm-XXX 等等之类的,那些都是为了jni用的(ndk编译使用),我们这里要做的是Android底层支持库
生成好makefile之后(其实这里主要是转译.in文件成正常的h文件或c/cpp文件)
编写Android.mk或者Android.bp,强烈建议使用bp文件,编译内容参数结构明显
bp编译选项不再赘述,参数根据自己需求改写,包括生成binary或者static_library
- cc_defaults {
- name: "libiconv_defaults",
-
- srcs: [
- "libcharset/lib/localcharset.c",
- "lib/iconv.c",
- "lib/relocatable.c",
- ],
-
- local_include_dirs: [
- "include",
- "libcharset",
- "lib",
- "libcharset/include",
- ],
-
- export_include_dirs: ["include"],
-
- cflags: [
- "-Wno-multichar",
- "-Wno-unused-const-variable",
- "-Wno-unused-variable",
- "-Wno-unused-parameter",
- "-Wno-sign-compare",
- "-Wno-parentheses-equality",
- "-Wno-missing-field-initializers",
- "-Wno-static-in-inline",
- "-DAndroid",
- "-DBUILDING_LIBICONV",
- "-DIN_LIBRARY",
- "-DLIBDIR=\"c\"",
- ],
- }
-
- cc_library_shared {
- name: "libiconv",
- defaults: ["libiconv_defaults"],
- vendor_available: true,
- host_supported: true,
- }

此时运行配置好源码编译环境后,在此目录下 mm即可单模块编译此动态库
要想源码整编带入此模块编译,参照自己源码工程的.mk文件,适当加入该模块,即可整编带入
## 引用
在你需要引用此库的工程mk或者bp文件中
Android.mk 中
LOCAL_SHARED_LIBRARY := libiconv
Android.bp 中
以下是我用到的地方 新增的 libiconv
代码中你要引用的头文件参见 编译库bp的 export_include_dirs
- // Build blkid
-
- cc_binary {
- name: "blkid",
- defaults: ["e2fsprogs-defaults"],
-
- srcs: ["blkid.c"],
- cflags: ["-Wno-unused-variable"],
- shared_libs: [
- "libext2fs",
- "libext2_blkid",
- "libext2_com_err",
- "libext2_e2p",
- "libiconv",
- ],
- system_shared_libs: ["libc", "libdl"],
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。