NDK开发sourceSet配置

  1. 首先明确两点:Android Studio默认识别的jni目录在app下(此时生成的so在libs目录,所以需要在build.gradle中指明jniLibs.srcDir=['libs']),默认识别的so文件在src/main/jniLibs(这种情况,需要在main下面建立jni目录,但是AS识别不到,所以需要在build.gradle中指定jni目录)
       externalNativeBuild {
               ndkBuild {
                   path file("src/main/jni/Android.mk")
               }
           }
       
       ```
    
总结如下:
  1. NDK配置的方式:将jni目录放在app目录下,jni目录里写Android.mk、Application.mk以及各类C/C++和汇编源文件。然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构的so文件。然后在Build.gradle中添加配置

    sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
    
  2. 如果是生成的jni目录在src/main/jni下,需要添加配置:

    externalNativeBuild {
            ndkBuild {
                path file("src/main/jni/Android.mk")
            }
        }
    
    
  3. 如果so包放在libs下面,则需要在顶级的Project build.gradle中配置

    sourceSets{
        main{
            jniLibs.srcDirs=['libs']
        }
    }
    
  4. 程序默认会去找,新建一个 在src/main文件中新建 jniLibs文件夹,将.so文件都拷贝进去

  5. 自己定制目录

task copyJniLibs(type: Copy) {
    from 'libs/armeabi'
    into 'src/main/jniLibs/armeabi'
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(copyJniLibs)
}
clean.dependsOn 'cleanCopyJniLibs'

总之,你要是添加了

externalNativeBuild {
    ndkBuild {
        path file("src/main/jni/Android.mk")
    }
}
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

那么jni文件夹和生成的.so文件, 你爱放哪就放哪 !

不然就老老实实把jni文件夹放在app目录下面 , 把.so文件放在src/main/jniLibs目录下面(as默认在这个目录找)。

比较推荐的做法是上面的红字后面的步骤,该做法是把jni文件夹放在app目录下面,把.so文件放在app/libs下面(as默认的jar包也是放在该位置)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值