Ndk之C/C++静态库生成及使用 for Android sutio 3.x

Ndk之C/C++静态库生成及使用 for Android sutio 3.x

重要说明 本文是参照上面的资料得来的。感谢大神的资料。

涉及到的参考资料如下:

大神的博客

大神的github

静态库和动态库的编译

lib module工程结构如下

lib module 编译环境配置

静态库的编译

动态库的编译

lib CMakeLists.txt

build.gradle配置
android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-13',
                        '-DANDROID_TOOLCHAIN=clang'
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64', 'x86'
                targets 'nannan', 'haohao'
            }
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}
make module 或 进入模块目录,执行 gradle clean build 即生成.a和.so 到指定目录

第三方静态库和动态库的使用

环境配置

第三方库的.h头文件需要复制到include目录下

动态库和静态库的调用

当前工程的CMakeLists.txt配置

当前工程的 build.gradle配置

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-15',
                        '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
                abiFilters 'armeabi-v7a','x86_64', 'arm64-v8a','x86'
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

    /*解决More than one file was found with OS independent path 'lib/x86/libnative.so'*/
    packagingOptions {
        pickFirst 'lib/armeabi-v7a/libnative.so'
        pickFirst 'lib/x86_64/libnative.so'
        pickFirst 'lib/x86/libnative.so'
        pickFirst 'lib/arm64-v8a/libnative.so'
    }
}

packagingOptions这里面可是重点哦。More than one file was found with OS independent path 'lib/x86/libnative.so这个破玩意儿,整了一下午才解决。是看到了这个兄弟的博客才解决的,感谢一下!

再次声明,由于本篇文章的由来,是基于大神的博客,是看了大神的github的源码工程得来的,不敢居功,相同的内容不列出,只大概的介绍一下重点部分。需要详细了解的。查看大神的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值