[置顶] android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so

本文档详细介绍了如何在Android应用中直接调用C++的第三方库libhello.so,并提供了具体的步骤和代码示例。从环境搭建到库文件集成,再到实际调用方法,全面覆盖开发过程中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[置顶] android调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so

分类: android 解决方案 eclipse ubuntu 嵌入式 1301人阅读 评论(1) 收藏 举报

0:前言

1:本文主要作为丙方android公司的身份来写

2:作者有不对的地方,请指出,谢谢

[第一篇:android调用第三方库——编写库libhello.so]

[第二篇:android调用第三方库——编写库android程序直接调用第三方库libhello.so]

[第三篇:android调用第三方库——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so]

[第四篇:android调用第三方库——调用多个第三方库的写法]

1:场景:公司接到任务,说配合乙方C++公司开发android识别程序,项目布置到项目经理,然后经理把任务交给你来做,你自然是先抱怨一番,活多钱少让我这新人来干,哎没办法啊,干吧!

2:东西:乙方C++公司交给我的东西有

  1. libhello.so库文件  
  2. com_hello_hello_HelloActivity.h头文件(有可能没有这个,我是死命要来的)  
  3. 库的接口说明文档  
3:搞起:
  1. 看了看给的接口说明文档,哎呦,不错哦,文档说明很详细,里面的函数接口定义的完美,而且他的库定义符合jni的规范,不需要在添加什么东西了,直接在android程序中调用就行,good啊
  2. 新建项目helloword2,在根目录下新建libs/armeabi文件夹,然后把库libhello.so放进去,然后重头戏来了-》新建包com.hello.hello,原来的包叫com.hello.word,之所以这样做,是我经历了一个痛苦的过程总结出来的,他给的头文件
    1. com_hello_hello_HelloActivity.h   //符合jni的规范,前面com_hello_hello是包名,后面HelloActivity是类名,注意在丙方这里叫类名,在乙方那里叫Activity的名字  
    能够看出来他的包结构,然后就建立一个和他一样的包,在这个包中新建一个和他一样的类,类中的方法按照jni规范能够得出来是什么,比如
    1. JNIEXPORT jstring JNICALL Java_com_hello_hello_HelloActivity_sayHello(JNIEnv *, jclass);//其中有一个方法是无参数函数sayHello  
    结构如图
  3. 类HelloActiviry.java的代码
    1. package com.hello.hello;  
    2. import android.app.Activity;  
    3. import android.app.AlertDialog;  
    4. import android.os.Bundle;  
    5.   
    6. public class HelloActivity  {  
    7. //  static  
    8. //    {    
    9. //        System.loadLibrary("hello");  //实验证明在这里不需要引入包名也是可以的  
    10. //    }  
    11.     public static native String sayHello(); // <span style="color:#FF0000;">第三方库函数</span>  
    12.     
    13. }  

  4. android主程序Helloword2Acitiviry.java的代码
    1. package com.hello.word;  
    2. import com.hello.hello.HelloActivity;  
    3. import android.app.Activity;  
    4. import android.app.AlertDialog;  
    5. import android.os.Bundle;  
    6. public class Helloword2Activity extends Activity {  
    7.     static  
    8.     {     
    9.         System.loadLibrary("hello");  //引入包名  
    10.     }  
    11.     @Override  
    12.     public void onCreate(Bundle savedInstanceState) {  
    13.         super.onCreate(savedInstanceState);  
    14.         setContentView(R.layout.main);  
    15.         new AlertDialog.Builder( this ).setMessage(<span style="color:#FF0000;"> </span>new HelloActivity().sayHello()).show();//实例化类方法直接调用  
    16.     }  
    17. }  
  5. 运行android程序,注意你写的是android程序,不需要修改编译选项,运行如图,实验证明,利用android直接调用库是可以的
  6. 但是这种直接调用也是有弊端的,在第三篇中会介绍-》》》[第三篇:android利用jni调用第三方库——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so

4:下载demo[ 猛戳这里下载demo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值