eclipse下修改android包,含jni

来源:互联网 发布:windows网络指令和用途 编辑:程序博客网 时间:2024/06/01 09:43
在原有apk(v1.0)基础上,安装相同名字的apk(v2.0),可以同时存在新旧apk
(同样用于在原有工程基础上建立其它工程,例如ledtest->buzzer)
不使用jni,so库的直接前两步就可以了。
在此使用topeet4412 android4.03 led工程做范例。
1、

ledtest->com.topeet.myled (rename F2)-> com.topeet.myled

2、
根目录AndroidMainfest.xml
<mainfest:
package="com.topeet.myled">

application label(卸载时图标)、activity label(app图标)android:versionName="1.0" >可以根据需要修改





3、libs -> armeabi -> : libled.so改为libmyled.so(需要使用NDK根据jni重新生成.so库,方法见附录)


4、修改.so库引用名称
public class MainActivity extends Activity{
static {
       System.loadLibrary("myled");
}

}


5、NDK使用方法:
JNI是Java软件开发工具箱(JavaSoftwareDevelopmentKit(SDK))的一部分,JNI它提供了若干的API,实
现了和Java和其他语言的通信(主要是C&C++)。
适用情况:
1、用户需要直接调用开发板底层中的驱动实现特定功能
2、用户有现成的应用,但是都是基于C写的,那么想要尽快的完成任务
调用处:
MainActivity.java->System.loadLibrary("led");”这个代码就是包含了led库,也就是C的库。
生成方法:
需要文件:
jni.h→com.topeet.ledtest.h
jni.c→com.topeet.ledtest.c
Makefile->Android.mk
LOCAL_PATH:= $(callmy-dir)
(Makefile内容)
include$(CLEAR_VARS) //指定包含目录为源文件目录
LOCAL_MODULE :=led   //生成的.so名称 例如:led->libled.so
LOCAL_SRC_FILES:= com_topeet_ledtest_led.c//需要编译的c文件
LOCAL_LDLIBS+=-llog
LOCAL_LDLIBS+=-lm
include$(BUILD_SHARED_LIBRARY)
lib.so→libled.so
NDK安装:
tar-vxfandroid-ndk-r8b-linux-x86.tar.bz2
vi .bashrc
exportPATH=$PATH:/usr/local/ndk/android-ndk-r8b //根据自己解压NDK目录填写
source .bashrc
ndk-tab测试是否生效
编译生成.so文件
建立jni文件夹内有 com_topeet_ledtest.h com_topeet_ledtest.c Android.mk
然后进入jni,执行ndk-build,然后和jni同一目录下就生成了lib、obj文件夹,lib内.so就是需要生成的文件
0 0
原创粉丝点击