java安卓⼿机开发⽰例_Android系列之Android开发教程代码
实例
在Android模拟器中可以对Android⼿机操作系统进⾏适当的修改,增加各种功能,以满⾜⽤户的需求。那么今天我们会为⼤家带来Android JNI的相关使⽤⽅法,以⽅便⼤家对这⼀系统的解读。Android的应⽤程序(Dalvik VM)中使⽤JNI(Java Native Interface)调⽤
C/C++开发的共享库。
⼀、    开发环境
1.        Eclipse + Android SDK + ADT
2.        JDK 1.6或1.5
3.        VMWARE+Ubuntu Linux
4.        Android源代码
⼆、    在Eclipse中新建Android⼯程
Ø  ⼯程名 JNITest
Ø  Package名Test.powerise.JNITest
Ø  Activity名 JNItest
Ø  应⽤程序名 JNItest
三、编辑res/l内容如下
注:Test_powerise_JNITest_JNITest.c前⾯有⼀个tab,$(JNI_H_INCLUDE)前⾯有⼀个tab
⼋、    编译⽣成动态库
1.        打开Ubuntu虚拟机
2.        新建⽂件夹    路径:~/mydroid/external/libJNITest(mydroid的为android的源码根⽂件夹)
3.        把上⾯编写好的头⽂件、c/c++源⽂件、make⽂件拷贝进上⾯⽬录中
4.        执⾏如下命令:
1 cd mydroid/external/libJNITest
2 . ../../build/envsetup.sh (注:.和../之间有⼀个空格)
3 mm 注:如果上⾯的命令不成功或没有加最前⾯的点,这个命令将⽆效
编译成功的后会在下⾯⽬录中⽣成libJNITest.so⽂件
mydroid/out/target/product/generic/system/lib/
九、在模拟器中执⾏程序
⾸先要把so⽂件拷到/system/lib⽬录下
1.启动模拟器
2.设置android sdk的环境变量
3.运⾏cmd,执⾏如下命令:
adb remount
adb push libJNITest.so/system/lib
不要关闭模拟器,运⾏java程序JNITest,屏幕会出现“JNITest Native String”这段字符串。代码执⾏成功!
代码
四、编辑Test.poserise.JNITest下的java⽂件JNITest.java
代码
1 packageTest.powerise.JNITest;
2
3 importandroid.app.Activity;
4 importandroid.os.Bundle;5
importandroid.widget.TexTestiew;6 7 publicclassJNITestextendsActivity {8 static{9 System.loadLibrary("JNITest");10 }11 12 publicnativeString GetTest();13 14 publicvoidonCreate(Bundle savedInstanceState) {15
五、⽤javah命令⽣成head⽂件
1.设置好jdk环境变量
2.运⾏cmd进⼊⼯程的根⽬录下
3.运⾏javah -classpath bin -d jni Test.powerise.JNITest.JNITest
4.会在根⽬录下⽣成⼀个.h的头⽂件
内容如下:
代码
1 /*DO NOT EDIT THIS FILE - it is machine generated*/
2 #include
3 /*Header for class Test_powerise_JNITest_JNITest*/
4
5 #ifndef _Included_Test_powerise_JNITest_JNITest
6 #define_Included_Test_powerise_JNITest_JNITest
7 #ifdef __cplusplus
8 extern"C"{
9 #endif10 /*11 * Class
android学习教程: Test_powerise_JNITest_JNITest12 * Method: GetTest13 * Signature:
()Ljava/lang/String;14 */15 JNIEXPORT jstring JNICALL Java_Test_powerise_JNITest_JNITest_GetTest16 (JNIEnv*, jobject);17 18 #ifdef __cplusplus19 }20 #endif21 #endif22
六、编写C/C++⽂件如下
代码
#include"Test_powerise_JNITest_JNITest.h"JNIEXPORT jstring JNICALL Java_Test_powerise_JNITest_JNITest_GetTest (JNIEnv*env, jobject obj)
{return(*env)->NewStringUTF(env, (char*)"JNITest Native String");
}
七、编写Android.mk⽂件
代码
1 LOCAL_PATH :=$(call my-dir)
2 include $(CLEAR_VARS)
3 LOCAL_SRC_FILES:=\
4 Test_powerise_JNITest_JNITest.c
5 LOCAL_C_INCLUDES :=\
6 $(JNI_H_INCLUDE)
7 LOCAL_SHARED_LIBRARIES :=libutils
8 LOCAL_PRELINK_MODULE :=false
9 LOCAL_MODULE :=libJNITest10 include $(BUILD_SHARED_LIBRARY)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。