android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so
来源:互联网 发布:搜索引擎seo基本理念 编辑:程序博客网 时间:2024/04/30 23:14
0:前言
1:本文主要作为丙方android公司的身份来写
2:作者有不对的地方,请指出,谢谢
[第一篇:android调用第三方库——编写库libhello.so]
[第二篇:android调用第三方库——编写库android程序直接调用第三方库libhello.so]
[第三篇:android调用第三方库——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so]
[第四篇:android调用第三方库——调用多个第三方库的写法]
1:场景:公司接到任务,说配合乙方C++公司开发android识别程序,项目布置到项目经理,然后经理把任务交给你来做,你自然是先抱怨一番,活多钱少让我这新人来干,哎没办法啊,干吧!
2:东西:乙方C++公司交给我的东西有
libhello.so库文件com_hello_hello_HelloActivity.h头文件(有可能没有这个,我是死命要来的)库的接口说明文档3:搞起:
- 看了看给的接口说明文档,哎呦,不错哦,文档说明很详细,里面的函数接口定义的完美,而且他的库定义符合jni的规范,不需要在添加什么东西了,直接在android程序中调用就行,good啊
- 新建项目helloword2,在根目录下新建libs/armeabi文件夹,然后把库libhello.so放进去,然后重头戏来了-》新建包com.hello.hello,原来的包叫com.hello.word,之所以这样做,是我经历了一个痛苦的过程总结出来的,他给的头文件
com_hello_hello_HelloActivity.h //符合jni的规范,前面com_hello_hello是包名,后面HelloActivity是类名,注意在丙方这里叫类名,在乙方那里叫Activity的名字
能够看出来他的包结构,然后就建立一个和他一样的包,在这个包中新建一个和他一样的类,类中的方法按照jni规范能够得出来是什么,比如JNIEXPORT jstring JNICALL Java_com_hello_hello_HelloActivity_sayHello(JNIEnv *, jclass);//其中有一个方法是无参数函数sayHello
结构如图 - 类HelloActiviry.java的代码
package com.hello.hello;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;public class HelloActivity {//static// { // System.loadLibrary("hello"); //实验证明在这里不需要引入包名也是可以的// }public static native String sayHello(); // 第三方库函数 }
- android主程序Helloword2Acitiviry.java的代码
package com.hello.word;import com.hello.hello.HelloActivity;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;public class Helloword2Activity extends Activity {static{ System.loadLibrary("hello"); //引入包名} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new AlertDialog.Builder( this ).setMessage( new HelloActivity().sayHello()).show();//实例化类方法直接调用 }}
- 运行android程序,注意你写的是android程序,不需要修改编译选项,运行如图,实验证明,利用android直接调用库是可以的
- 但是这种直接调用也是有弊端的,在第三篇中会介绍-》》》[第三篇:android利用jni调用第三方库——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so]
4:下载demo[猛戳这里下载demo]
- android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so
- [置顶] android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so
- android利用jni调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so
- android调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
- android调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
- android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- Android如何调用第三方SO库
- android调用第三方so库文件
- Android程序调用第三方库lib***.so
- android调用第三方库——第四篇——调用多个第三方库
- android调用第三方库——第四篇——调用多个第三方库
- 线段树入门 理解
- android 的线程模型和AsyncTask
- Spring MVC 思想的讲解
- Three Rules for Effective Exception Handling
- Activity跳转页面切换漂亮效果(转)
- android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so
- js获取文件域完整路径
- 从零开始配置mutt-fetchmail-procmail-msmtp
- 提高你的Java代码质量吧:优先使用整形池
- 第一个Objective-C 程序
- linux系统的性能问题排除分析
- android 进程和线程
- 2013-07-24 Chapter2 UIApplication、UIWindow、 UIViewController、 UIView
- 使用PostThreadMessage在Win32线程间传递消息