Android 源码 新增第三方库 external

## 编译

一般将需要一直的第三方库下载解压到 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"],
}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值