欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于android studio中libs文件夹的放置

程序员文章站 2022-05-18 10:53:15
...

由于项目关系,需要视频功能,我使用了jni生成的so包,可是问题来了,本来项目中没看到libs文件夹的,然后我新建了一个libs,注意我是在Project目录下新建了一个与app目录同级的libs文件夹。 

关于android studio中libs文件夹的放置

 然后这样疑问就出来了:这样的话,我的android项目是否可以访问到里面的类呢?应该说这样是可以访问到那些类的,因为在这样放置libs文件夹的情况下,我在开发中所用到的环信sdk里的类编译通过了。可是你让程序跑起来,它会告诉你UnSatisfieldLinkError:Couldn't load,因为它找不到jar包所依赖的so文件。
    但是环信sdk除了jar包之外,还有so库,对于so文件,android studio理论上是要求放置在一个jniLibs文件夹下

那么网上查到有两个解决办法: 
1.在app->src->main文件夹下直接生成一个jniLibs文件夹,然后把so文件都转移到这个jniLibs下 
2.在app目录下的build.gradle的Android结点中,填写上以下代码:

sourceSets {
    main {
        //jni库的调用会到资源文件夹下libs里面找so文件
        jniLibs.srcDirs = ['libs']
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这样切换到android视图在app目录下会自动创建一个jniLibs文件夹 

那么网上查到有两个解决办法: 
1.在app->src->main文件夹下直接生成一个jniLibs文件夹,然后把so文件都转移到这个jniLibs下 
2.在app目录下的build.gradle的Android结点中,填写上以下代码:

sourceSets {
    main {
        //jni库的调用会到资源文件夹下libs里面找so文件
        jniLibs.srcDirs = ['libs']
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这样切换到android视图在app目录下会自动创建一个jniLibs文件夹 

关于android studio中libs文件夹的放置

我用的是第二种,这也是我要说的libs文件夹所放的位置问题: 
我这样把程序跑起来,结果还是会崩掉,原因还是说找不到so文件,上面的代码是把jni库的调用会自动去libs中去找so文件,那么这里所指的libs文件夹真的是我创建的在Project中和app目录同级的libs文件夹吗?其实从build.gradle的位置我们应该看出点眉目,这个build.gradle是指app目录下的build.gradle,那么应该说这里的libs也应该在app目录里面才对。

然后我把libs文件夹转移到app目录与src同级 ,就行了!