创建AndroID工程--->完成java函数的编写,添加jni的接口函数(native函数)的添加--->添加jni文件夹,添加AndroID.mk文件和源文件--->在源文件中实现接口函数--->用ndk-build把源文件编译成lib库--->启动AndroID模拟器,安装运行工程。
举例:
1、打开Eclipse,添加一个androID工程。工程的名称为IDETTest,然后根据提示完成Activity名称(IDETest)和java包(com.test.IDETest)的填写。注意java包的名称中最好不要有下划线,可能在以后的jni调用中调用失败,因为jni的接口函数的格式是Java_java包的名称_Activity名称_声明的函数
2、完成java代码的编写,在需要进行jni调用的类中引入ndk交叉编译的调用:
static { System.loadlibrary("IDETest");}
同时在类中声明native函数(在C文件中被创建,用NDK交叉编译)
public native String generateID(String label);
完整的java文件如下所示:
package com.test.IDETest;import androID.app.Activity;import androID.Widget.TextVIEw;import androID.os.Bundle;public class IDETest extends Activity { /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentVIEw(R.layout.main); TextVIEw tv=new TextVIEw(this); tv.setText(generateID("47766")); setContentVIEw(tv); } /*native method implement*/ public native String generateID(String label); /*******************************/ /*import c lib*/ static { System.loadlibrary("IDETest"); }}
3、在IDETest工程中添加文件夹,名称为jni。在jni文件夹下添加c模块的实现文件(.c和.h的文件工程)和AndroID.mk文件
c模块的文件(IDETest.c)的内容
#include <string.h>
#include <jni.h> #include <stdio.h>JstringJava_com_test_IDETest_IDETest_generateID( jnienv* env, jobject thiz, Jstring label){ char *str=(char *)malloc(1024*sizeof(char)); sprintf(str,"Hello everybody! I am from XXX, and my ID is %s",(*env)->GetStringUTFChars(env,label,0)); printf("%s",str); return (*env)->NewStringUTF(env,str);}
AndroID.mk文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODulE := IDETestLOCAL_SRC_fileS := IDETest.cinclude $(BUILD_SHARED_liBRARY)
4、编译源代码为库文件。
进入工程目录
root@XXX-laptop:~/IDETest# ls
AndroIDManifest.xml bin gen libs proguard.cfg srcassets default.propertIEs jni obj resroot@XXX-laptop:~/IDETest# ndk-buildCompile thumb : IDETest <= IDETest.cSharedlibrary : libIDETest.soInstall : libIDETest.so => libs/armeabi/libIDETest.so完成编译后会自动创建obj和libs文件夹编译好的库文件就在这里面。
5、启动AndroID模拟器运行工程。
转载于:https://www.cnblogs.com/imagelab/archive/2011/08/20/2147023.HTML
总结以上是内存溢出为你收集整理的Eclipse NDK开发基本流程全部内容,希望文章能够帮你解决Eclipse NDK开发基本流程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)