关于android studio包冲突 so文件 冲突 怎么解决

glblong 的BLOG
用户名:glblong
文章数:210
评论数:40
访问量:457945
注册日期:
阅读量:5863
阅读量:12276
阅读量:424398
阅读量:1112865
51CTO推荐博文
方法一:将libs文件夹下的so文件,通过gradle配置任务编译成jar文件。apply&plugin:&'com.android.library'
&&&&compileSdkVersion&pileSdkVersion
&&&&buildToolsVersion&rootProject.ext.buildToolsVersion
&&&&defaultConfig&{
&&&&&&&&minSdkVersion&rootProject.ext.minSdkVersion
&&&&&&&&targetSdkVersion&rootProject.ext.targetSdkVersion
&&&&/**&导入so文件&*/
&&&&task&nativeLibsToJar(type:&Zip,&description:&"create&a&jar&archive&of&the&native&libs")&{
&&&&&&&&destinationDir&file("$projectDir/libs")
&&&&&&&&baseName&"Native_Libs2"
&&&&&&&&extension&"jar"
&&&&&&&&from&fileTree(dir:&"libs",&include:&"**/*.so")
&&&&&&&&into&"lib"
&&&&tasks.withType(JavaCompile)&{
&&&&&&&&compileTask&-&&compileTask.dependsOn(nativeLibsToJar)
dependencies&{
&&&&provided&fileTree(dir:&'libs',&include:&['*.jar'])
}参考资料:http://blog.csdn.net/wulianghuan/article/details/方法二:通过插件将so文件依赖到jniLibs文件夹。参考资料:/a/anzhuokaifa/Android_Studio/56.html插件/开源项目 :/nhachicha/android-native-dependencies方法三:最佳方法。android&{
&&&&sourceSets.main.jniLibs.srcDirs&=&['libs']
&&&&compileSdkVersion&pileSdkVersion
&&&&buildToolsVersion&rootProject.ext.buildToolsVersion
&&&&defaultConfig&{
&&&&&&&&minSdkVersion&rootProject.ext.minSdkVersion
&&&&&&&&targetSdkVersion&rootProject.ext.targetSdkVersion
}本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)中使用so文件:
做一个PDF阅读的功能,找到一个开源的库,mupdf。下载的是网上编译好的so库,导入到自己项目中的时候一直报错.lang.UnsatisfiedLinkError: Couldn't load netplayerlibq: findLibrary returned null,找不到so文件中的方法。找了一个下午,终于知道了原因。
JNI中的方法的命名规范是
1) 前缀: Java_2) 类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest3) 方法名:getTestString&
方法命名是与包名相关的,所以在用so库的时候,将调用其中方法的类的包名改成so文件中写的包名。这是最简单的办法。当然,最好的办法当然是找到开源项目的源码交叉编译成含有我们项目包名的so文件。
参考/jiabailong/article/details/7986350&
Android studio中导入so的两种方法:
1、将so文件放在libs目录下,然后在app的build.gradle中加入如下配置&
sourceSets {
jniLibs.srcDirs = ['libs']
整个配置文件如下:
compileSdkVersion 23
buildToolsVersion '19.1.0'
defaultConfig {
applicationId "com.hehe.itlms"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0.0"
buildTypes {
minifyEnabled true//是否混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
sourceSets {
jniLibs.srcDirs = ['libs']
2、将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为: lib/armeabi/*.so)注意,一定要是这样的路径,lib不要写成libs啊!然后将这个.zip文件重命名为armeabi.jar文件(我用的是so.jar),将该jar包添加到项目的libs文件下,然后Add isLibrary。
最后的目录结构&
libs&^---|xxx.jar&^---|armeabi.jar&& & & & ^---|lib&& & & & & & & ^---|armeabi&& & & & & & & & & & &^---|xxx.so
阅读(...) 评论()4479人阅读
Android-St(2)
今天搞jpush,以前都是eclipse编写,这次换成了AS,但是运行的时候说.so文件找不到,然后没有办法初始化成功。百度了很多方法,很多都是copy,然后估计都没有自己测试,
他们说创建jniLibs文件夹,然后把.so文件copy过去,然后在 app的 build.gradle里面添加如下代码sourceSets {
jniLibs.srcDirs = ['libs']
}连续N个都是这个,但是,我想说,不知道是因为你们的AS版本低还是你们就是单纯的copy,这个方法我用了,根本没有用好吗。我的AS版本是2.1 preview5.
创建单独的jniLibs文件夹这个是正确的,关键是下面那句代码,我觉得编程的人仔细看一遍应该都可以明白,他的意思是,我引用的路径或者是我引用的文件夹是['名称'],所以我们创建了jniLibs文件夹那么,我们后面那个根本就不是libs,而是jniLibs。所以正确的代码片段应该是
sourceSets {
jniLibs.srcDirs = ['jniLibs']
还有就是如果你不想创建单独的文件夹,使用eclipse使用习惯了,那么你可以吧.jar和.so文件统统放到libs里面,然后代码片段就可以是第一个了。
吐槽结束。真心希望测试过代码后再来发博客,很误导人的好不好,尤其是误导新人。但是这个好像还是普遍的通病。烦
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9142次
排名:千里之外
原创:14篇
(1)(2)(2)(2)(4)(1)(1)(2)Android Studio:正确引入so文件的方法 -
- ITeye技术网站
方法一:
将libs文件夹下的so文件,通过gradle配置任务编译成jar文件。
apply plugin: 'com.android.library'
compileSdkVersion pileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
/** 导入so文件 */
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
tasks.withType(JavaCompile) {
compileTask -& compileTask.dependsOn(nativeLibsToJar)
dependencies {
provided fileTree(dir: 'libs', include: ['*.jar'])
方法二:
通过插件将so文件依赖到jniLibs文件夹。
方法三:
最佳方法。
android {
sourceSets.main.jniLibs.srcDirs = ['libs']
compileSdkVersion pileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
当然,开发完APP也是需要进行全方位的检测:
浏览: 1791 次
因为一个在UI线程,一个不在。

我要回帖

更多关于 androidstudio 类冲突 的文章

 

随机推荐