如何在Android Studio中android5.0导入jniI生成的.so库

如何在Android Studio中导入JNI生成的.so库_百度知道
如何在Android Studio中导入JNI生成的.so库
我有更好的答案
由于在原来的ADT的Eclipse环境中,用ndk_build工具生成了相应的各个.so库文件之后,eclipse工具就会自动把这些库导入到apk中。而Android Studio目前为止(0.86版本)还无法做到那么自动,但是我们可以通过以下方式进行。
首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk、Application.mk以及各类C/C++和汇编源文件。然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构的so文件。
完成之后,编辑app目录下的build.gradle文件,为其添加以下代码:
sourceSets {
jniLibs.srcDirs = ['libs']
完整的build.gradle文件如下所示:
其他类似问题
为您推荐:
jni的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何在Android Studio中导入JNI生成的.so库_百度知道
如何在Android Studio中导入JNI生成的.so库
提问者采纳
baidu.baidu在src/main目录中新建名为jniLibs的目录。
其他类似问题
为您推荐:
jni的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁收藏,274 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
so文件已经编译完成,好像就是不能调用,然后再app上也是闪退。
08-20 10:50:26.094
/com.jour.st.use_dsf E/AndroidRuntime﹕
FATAL EXCEPTION: main
Process: com.jour.st.use_dsf, PID: 32261
java.lang.UnsatisfiedLinkError: Couldn't load test from loader
dalvik.system.PathClassLoader[DexPathList[[zip file
"/data/app/com.jour.st.use_dsf-2.apk"],nativeLibraryDirectories=
findLibrary returned null
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
8月20日 回答
解决了,MD,困扰了一天一夜!!
还有几个问题可以帮忙解决吗
我把so文件放在src/main/jinLibs 里面了,找了好多网页,尽然可以用!!!
还有就是那么libs文件,我都搞混了,红色是自己生成的,蓝色是ndk-build生成的,黄色是最后加的,到底什么和什么关系啊
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
8月20日 回答
第一个问题:从错误信息看,是.so文件找不到,load失败,还没到jni调用那一步。所以,确保你的.so文件已经放在libs目录下,并编译进了apk。你可以用压缩软件打开apk文件,看看里面是不是已经包含了.so文件。把apk改名为zip打开也可以,不改直接unzip它或用图形压缩软件打开也可以,看里面的libs里有没有你说的libeigen.so。
另外,你的出错信息中说:
Couldn't load test from loader
貌似是Load一个叫libtest.so的库,而不是你说的eigen,请检查一下java中是不是这样的:
System.loadLibrary("eigen");
这才是指定要加载libeigen.so,如果这个文件也在apk/libs下,应该是没问题的。
第二个问题:使用Android studio的话,你直接把libxxxx.so放入jniLibs/armxxxxx/下就可以了,编译后就会自动帮你打包在apk里面,另外我看你app下有jni这个目录,应该是你自己创建的,这样在jni里执行了ndk-build后,会在app目录下产生两个临时文件夹libs和obj,这两个文件夹在Android Studio里面没用,因为Android studio不像eclipse那样把libs里的so打包到apk,而是默认使用了jniLibs目录。如果你非要让Android studio把app/libs的库打包到apk里,也是可以做到的,要自己编辑build.gradle文件来完成,怎么写build.gradle?这个已经超出本问题的范围了。
同步到新浪微博
分享到微博?
与我们一起探索更多的未知
专业的开发者技术社区,为用户提供多样化的线上知识交流,丰富的线下活动及给力的工作机会
加入只需一步
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
不友善内容
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:
扫扫下载 App
SegmentFault
一起探索更多未知如何在Android Studio中导入JNI生成的.so库_百度知道
如何在Android Studio中导入JNI生成的.so库
提问者采纳
pro&#39.jar&#39  由于在原来的ADT的Eclipse环境中;com.mk里所指定处理器架构的so文件: [&#39,然后工具会自动生成libs目录.0&]  }  }  完整的1;libs&#39.gradle文件.0:20:appcompat-v7,编辑app目录下的build.86版本)还无法做到那么自动;com.C++和汇编源文件.0&quot.txt&#39.support.mk以及各类C&#47,但是我们可以通过以下方式进行;);;libs&#39.android、Application.mk。  首先在Android Studio工程的app目录下创建整个jni目录;])  compile &#39.com, &#39:  sourceSets {  main {  jniLibs.application&#39: 'proguard-20;*, include,jni目录里写Android。然后跟原来一样.so库文件之后: &#39,里面还有每个你在A  }  buildTypes {  release {  runProguard false  proguardFiles getDefaultProguardFile(']  }  }  }  dependencies {  compile fileTree(dir.srcDirs = [&#39.srcDirs = [&#39。  完成之后.0;  }  }  sourceSets {  main {  jniLibs,eclipse工具就会自动把这些库导入到apk中;proguard-libs'  minSdkVersion 9  targetSdkVersion 20  versionCode 1  versionName &quot:  复制代码    android {  compileSdkVersion 20  buildToolsVersion &quot.gradle文件如下所示.civetcoffeegamecenter&  defaultConfig {  applicationId &quot.android。而Android Studio目前为止(0,为其添加以下代码,用ndk_build工具去编,用ndk_build工具生成了相应的各个.0&#39
资深电脑人
其他类似问题
为您推荐:
jni的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 android studio jni 的文章

 

随机推荐