注意该.so库指的是android平台的,非一般linux、unix平台;

1、现有库libcom_ycan_testLib.so

2、新建android项目TestLib2

3、添加新类:

类名:testLib

包路径:参考现有库名,应为com.ycan

4、在新类中声明库的本地方法,如下:

package com.ycan;  public class PDFLib {  public native int add (int a, int b);  public native int sub (int a, int b);
}  

这些接口函数,应该由库的提供者告诉你吧,我目前是这样认为的。

5、然后把库文件拷贝到如下目录:

\workspace\TestLib2\libs\armeabi

似乎必须是这个路径吧,我刚开始没有armeabi目录,结果运行出错,最后自己新建了一个这样的目录,才ok了。

6、在主类中调用库接口,我的库是做加减法的,基本调用代码如下:

package com.testlib2;  import com.ycan.testLib;  import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;  public class MainActivity extends Activity {  private Button btnAdd;  private Button btnSub;  private EditText num1;  private EditText num2;  private EditText result;  private int a,b,rlt;  private testLib lib = new testLib();  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btnAdd = (Button)findViewById(R.id.button_add);  btnSub = (Button)findViewById(R.id.button_sub);  num1 = (EditText)findViewById(R.id.num1);  num2 = (EditText)findViewById(R.id.num2);  result = (EditText)findViewById(R.id.num3);  btnAdd.setOnClickListener(new OnClickListener(){  @Override  public void onClick(View v) {  // TODO Auto-generated method stub  String strnum1 = num1.getText().toString();  a = Integer.parseInt(strnum1);  String strnum2 = num2.getText().toString();  b = Integer.parseInt(strnum2);  rlt = lib.add(a,b);  Dostop(rlt);  }  });  btnSub.setOnClickListener(new OnClickListener()  {  @Override  public void onClick(View v) {  // TODO Auto-generated method stub  String strnum1 = num1.getText().toString();  a = Integer.parseInt(strnum1);  String strnum2 = num2.getText().toString();  b = Integer.parseInt(strnum2);  rlt = lib.sub(a,b);  Dostop(rlt);  }  }  );  }  static {          System.loadLibrary("com_ycan_testLib");      }  private void Dostop(int number){  Toast.makeText(this, ""+number, 8).show();//显示8秒  String x=Integer.toString(rlt);   result.setText(x);  }  @Override  public boolean onCreateOptionsMenu(Menu menu) {  getMenuInflater().inflate(R.menu.activity_main, menu);  return true;  }
}  

最后运行效果:

Android之项目中调用已有.so库相关推荐

  1. java批量处理数据库语句_Java项目中调用bat批处理进行多用户数据库备份

    Java项目中调用bat批处理配合使用BCP进行多用户数据的备份 一.项目需求 最近项目中需要对数据库(Sql Server系列数据库)进行备份.项目中的需求不是简单的整个数据库的备份,而是根据用户来 ...

  2. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  3. 如何在项目中加入已存在的文件夹, 注意是文件夹而不是文件

    如何在项目中加入已存在的文件夹, 注意是文件夹而不是文件 1.在 Solution Explorer 中点击相关的 Project 2.点击Solution Explorer 下面的工具栏中的 Sho ...

  4. Android:Android NDK项目中C++文件中打印日志

    Android NDK项目中C++文件中打印日志 工作需要,在NDK项目中的C++文件中打印日志,还是费了点劲查找 才达到自己 想要的效果了. 步骤 添加头文件 添加头文件 定义宏函数 #includ ...

  5. ios项目中调用百度地图iphone版与百度地图HDipad版的坑

    最近在写项目的时候发现了项目中调用百度地图的一个坑,iphone版与ipad版的不同. 一.首先百度地图在ipad上叫百度地图HD,要区分有GPS和没GPS版,也就是说没GPS的没有导航功能,在使用项 ...

  6. html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...

    vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...

  7. 网页中调用matlab,在C#的Web项目中调用Matlab代码的步骤

    在C#的Web项目中调用Matlab代码的方法 为了毕设的图形检索方向的研究,本人需要在信科的师兄师姐们已经完成的C#界面中,调用现在研究的算法的Matlab代码,以便看到实验的效果.前段时间已经拖延 ...

  8. 如何从 Android 内部存储中恢复已删除的照片?

    我们使用手机录制的照片和视频通常存储在手机的内存中.我们存储它们以记住我们生活的美丽.然而,在管理这些照片的过程中,一些用户却发现自己不小心删除了这些照片,这很尴尬. 如果您的 Android 设备遇 ...

  9. java和matlab的交互实践--在java项目中调用matlab程序

    本文主要解决了java项目中调用matlab程序过程中遇到的问题,下文主要分matlab的jar包部署以及java项目配置两个方面来分析. 1.matlab项目的部署 -- 生成jar包 保存matl ...

最新文章

  1. .net web部署(IIS Express Nancy Self-Hosting)
  2. Windows PE导出表编程4(重构导出表实现私有函数导出)
  3. 深入浅出设计模式原则之里氏代换原则(Liskov Substitution Principle)
  4. mysql 后10条_Mysql 保留最新的10条数据
  5. Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
  6. bzoj 1024 [SCOI2009]生日快乐
  7. QT 5.3 VS2010 中文
  8. 数据结构实验 7.兔子与樱花
  9. 需要编写支持英特尔 x86 的 Android* 游戏应用? 此处的样本可为您提供帮助!
  10. 与roc的区别_2020斯柯达柯珞克Karoq对比大众T-ROC,你会选哪个?
  11. 谷歌浏览器chrome安装Hackbar插件方式
  12. Android加密算法之AES加密和解密实现
  13. fgets和fgetl有什么区别
  14. ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具
  15. oracle公共同义词查找,[Oracle]同义词(synonym)
  16. 最新版CATIA,让您快速创造完整高级机械项目
  17. IOS根据屏幕尺寸判断是否为iphone6plus尺寸
  18. 使用飞信SDK开发短信收发程序
  19. H1B政策大变,要集体涨工资了吗?
  20. 看完,如果你不分享,是我的失败!

热门文章

  1. 终于来了!微软正式推出 VS Code 测试 API
  2. EF Core 异步编程注意要点
  3. 在VS Code中执行SQL查询,是怎样一种体验?
  4. EFCore之命令行工具
  5. ASP.NET Core 依赖注入-集成 Autofac
  6. 如何在Windows上使用Git创建一个可执行脚本?
  7. 【译】使用Blazor构建桌面应用
  8. 微软重组变两大事业部:Windows主管离职
  9. Orleans稍微复杂的例子—互动
  10. C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码