Android中使用so文件:

做一个PDF阅读的功能,找到一个开源的库,mupdf。下载的是网上编译好的so库,导入到自己项目中的时候一直报错Java.lang.UnsatisfiedLinkError: Couldn't load netplayerlibq: findLibrary returned null,找不到so文件中的方法。找了一个下午,终于知道了原因。

JNI中的方法的命名规范是

1) 前缀: Java_
2) 类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest
3) 方法名:getTestString

方法命名是与包名相关的,所以在用so库的时候,将调用其中方法的类的包名改成so文件中写的包名。这是最简单的办法。当然,最好的办法当然是找到开源项目的源码交叉编译成含有我们项目包名的so文件。

参考http://blog.csdn.NET/jiabailong/article/details/7986350

Android studio中导入so的两种方法:

1、将so文件放在libs目录下,然后在app的build.gradle中加入如下配置

sourceSets {main {jniLibs.srcDirs = ['libs']}
}

整个配置文件如下:

android {compileSdkVersion 23buildToolsVersion '19.1.0'defaultConfig {applicationId "com.hehe.itlms"minSdkVersion 15targetSdkVersion 23versionCode 1versionName "1.0.0"}buildTypes {release {minifyEnabled true//是否混淆proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}sourceSets {main {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

Android如何使用so文件和Android studio中导入so相关推荐

  1. Android Studio中导入第三方库

    之前开发Android都是使用的eclipse,近期因为和外国朋友Timothy一起开发一款应用,他是从WP平台刚切换使用Android的,使用的开发环境时Android Studio,为了便于项目的 ...

  2. 【BLE MIDI】推荐一个 Android 平台开源 MIDI 软件 MidiSheetMusic ( 相关资料 | Android Studio 中导入 Eclipse 源码 )

    文章目录 一. MidiSheetMusic 相关资料 二. Android Studio 中导入 MidiSheetMusic 的 Eclipse 源码 一. MidiSheetMusic 相关资料 ...

  3. 如何在Eclipse和Android Studio中导入library project

    在Eclipse中: 把一个项目作为library 右键点击project选择Properties. 在Properties窗口选则Android. 在右侧视图勾选"Is Library&q ...

  4. android调用 qt so文件路径,Android Java调用Qt写的so库

    有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用.这样人家反编译你的apk,就知道你侵犯了人家的版权.为了达到混淆的目的,我们可以 ...

  5. android 电视安装apk文件损坏,android - 无法在Android电视盒上安装APK - 堆栈内存溢出...

    我正在为Android TV编写应用程序. 它可以在模拟器上正常运行,并在Android电视盒上以调试模式运行. 但是,当我使用Android Studio生成apk并尝试将该apk安装在同一盒子上时 ...

  6. android pdf 插件,Pdf文件查看 android原生插件

    更新记录 1.0.7(2021-05-10) 1.修复若干bug 2.优化用户体验 1.0.6(2021-03-31) 1.全新UI设计 2.增加目录设置功能 3.增加全屏切换功能 4.增加跳转功能 ...

  7. android手机内存创建文件夹,Android在内存问题中创建文件夹

    我在内部存储器中为我的应用程序创建文件夹时遇到了一些问题.我正在使用这段代码: public static void createFoldersInInternalStorage(Context co ...

  8. python如何导入多个文件_在python中导入多个文件

    我正在尝试创建一个脚本,用户可以选择一个文件夹中的1个或所有文件(以"模拟"Matlab中uigetfile的多重选择打开).然后,脚本将询问用户是否要从另一个位置导入数据,imp ...

  9. Android Studio中导入Android项目StepbyStep

    想把在eclipse的项目导入Android studio,有两种方法,但是我喜欢的是不改变项目文件结构的方法,因为这样可以兼容eclipse. 第一步: 导入的项目不能运行,需要配置运行环境.And ...

最新文章

  1. java jersey使用总结_jersey使用指南
  2. python 列表 换行_python基础语法学习——参考Python Crash Course
  3. Android钢琴滑动代码,android 钢琴界面实现
  4. System V IPC之共享内存
  5. 网吧java安装路径,java环境变量配置
  6. You can't specify target table 'TS_AUTH_ADMIN' for update in FROM clause记录
  7. 山东大学 2020级数据库系统 实验五
  8. 史上最通俗分布式锁解读
  9. 【100题】第十三题(输出倒数第k个节点)
  10. easyui(基础布局)
  11. 设置IIS指向另一台机器上的共享目录(动易sw)遇到的问题
  12. 字符串匹配算法 之 Aho-Corasick
  13. Windows NAT端口映射
  14. 点电荷分布matlab仿真,利用Matlab模拟点电荷的电场分布..doc
  15. Halting Problem图灵机问题
  16. html table拓宽,excel拉长单元格_excel调整单元格大小的方法步骤详解
  17. windows10修复引导
  18. 主定理(Master Theorem)推导和理解(1)
  19. HDU2159.FATE-完全背包
  20. 文件服务器拷贝资料需要解锁,如何加密U盘文件防止复制,怎样实现U盘文件防拷贝?...

热门文章

  1. python cookbook 2字符串 (1)
  2. AOP动态代理的实现机制
  3. ECMAScript Query实例
  4. PHP遇到json解决的两个办法,转为数组,直接取值
  5. 第 27 章 Optimization
  6. Git Gitlab 使用指南
  7. 维护人员的VMware日常工作
  8. sql server存储过程中SELECT 与 SET 对变量赋值的区别
  9. acegi,IBM的Acegi Security System(1)
  10. [转]使用 .NET Framework 2.0 在您的应用程序中支持证书