欢迎来到天天文库
浏览记录
ID:57861456
大小:365.93 KB
页数:7页
时间:2020-09-02
《Android下引用系统库(.so文件)的方法及问题.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、我们看一下如何在Android环境下引用/system/lib下的.so文件(若您也对此有所了解,还望不吝赐教后面的问题,先谢!)。为避免讲得混淆,先将我的代码的结构贴出来。首先,新建Android工程:AndroidJniTest,在AndroidJniTestActivity.java中的代码如下:[java]viewplaincopyprint?1.packagemars.com;2.importandroid.app.Activity;3.importandroid.os.Bundle;4.publicclassAndroidJniTes
2、tActivityextendsActivity{5./**Calledwhentheactivityisfirstcreated.*/6.@Override7.publicvoidonCreate(BundlesavedInstanceState){8.super.onCreate(savedInstanceState);9.setContentView(R.layout.main);1.System.loadLibrary("test");2.CallNativecallnative=newCallNative();3.byte[]cmd={
3、(byte)'u004c'};4.inta=callnative.writeCmd(cmd,"/system/lib");5.6.}7.}packagemars.com;importandroid.app.Activity;importandroid.os.Bundle;publicclassAndroidJniTestActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceSt
4、ate){super.onCreate(savedInstanceState);setContentView(R.layout.main);System.loadLibrary("test");CallNativecallnative=newCallNative();byte[]cmd={(byte)'u004c'};inta=callnative.writeCmd(cmd,"/system/lib");}}再在包mars.com下建立文件:CallNative.java代码:[java]viewplaincopyprint?1.package
5、mars.com;2.publicclassCallNative{3.publicnativebyte[]readCmd(Stringpath);4.publicnativeintwriteCmd(byte[]cmd,Stringpath);5.}packagemars.com;publicclassCallNative{publicnativebyte[]readCmd(Stringpath);publicnativeintwriteCmd(byte[]cmd,Stringpath);}利用javah工具创建本地库文件的头文件mars_com_
6、CallNative.h代码:[cpp]viewplaincopyprint?1./*DONOTEDITTHISFILE-itismachinegenerated*/2.#include3./*Headerforclassmars_com_CallNative*/4.#ifndef_Included_mars_com_CallNative5.#define_Included_mars_com_CallNative6.#ifdef__cplusplus7.extern"C"{8.#endif9./*10.*Class:mars_com
7、_CallNative11.*Method:readCmd1.*Signature:(Ljava/lang/String;)[B2.*/3.JNIEXPORTjbyteArrayJNICALLJava_mars_com_CallNative_readCmd4.(JNIEnv*,jobject,jstring);5./*6.*Class:mars_com_CallNative7.*Method:writeCmd8.*Signature:([BLjava/lang/String;)I9.*/10.JNIEXPORTjintJNICALLJava_ma
8、rs_com_CallNative_writeCmd11.(JNIEnv*,jobject,jbyteArray,jstring);12
此文档下载收益归作者所有