- 浏览: 392183 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lalaeye:
学习一下,明天再看。
android框架设计 -
418702610:
...
Collections.synchronizedMap(new LinkedHashMap()) -
mao_lu:
给个代码下载吧,谢谢
在Android中创建和使用数据库 -
lyltiger:
那就是说单纯的android测试还不能进行!
Android单元测试 -
貌似掉线:
貌似是我想要的。。先标记一下,明天起来看。。
Android单元测试
Android的jni实例
android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。
c/c++中调用java程序的方法以后再发。
开发环境
(eclipse + android ADT)
WindowsXP SP3
JDK 1.6.0.12
VMWARE+Ubuntu Linux 8.04
(1) Eclipse中新建android工程
工程名 JNItest
Package名com.ura.test
Activity名 JNItest
应用程序名 JNItest
(2) 编辑main.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. >
7. <TextView
8. android:id="@+id/JNITest"
9. android:layout_width="fill_parent"
10. android:layout_height="wrap_content"
11. android:text="@string/JNITest"
12. />
13. </LinearLayout>
14.
复制代码
(3)编辑java文件
1. package com.ura.test;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.widget.TextView;
6. public class JNITest extends Activity {
7. /** Called when the activity is first created. */
8. static {
9. System.loadLibrary("JNITest");
10. }
11. public native String GetTest();
12. @Override
13. public void onCreate(Bundle savedInstanceState) {
14. super.onCreate(savedInstanceState);
15. setContentView(R.layout.main);
16. String str =GetTest();
17. TextView JNITest = (TextView)findViewById(R.id.JNITest);
18. JNITest.setText(str);
19. }
20. }
复制代码
(4)生成head文件
编译上面工程声称class文件,然后用javah工具生成c/c++头文件。
1. javah -classpath bin -d jni com.ura.test.JNItest
复制代码
生成的头文件如下
1. /* DO NOT EDIT THIS FILE - it is machine generated */
2. #include <jni.h>
3. /* Header for class com_ura_test_JNITest */
4.
5. #ifndef _Included_com_ura_test_JNITest
6. #define _Included_com_ura_test_JNITest
7. #ifdef __cplusplus
8. extern "C" {
9. #endif
10. /*
11. * Class: com_ura_test_JNITest
12. * Method: GetTest
13. * Signature: ()Ljava/lang/String;
14. */
15. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest
16. (JNIEnv *, jobject);
17.
18. #ifdef __cplusplus
19. }
20. #endif
21. #endif
复制代码
(5)编写c/c++文件如下
1. #include "com_ura_test_JNITest.h"
2.
3.
4.
5. #define LOG_TAG "JNITest"
6.
7. #undef LOG
8.
9. #include <utils/Log.h>
10.
11.
12.
13.
14.
15. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest
16. (JNIEnv * env, jobject obj)
17. {
18. return (*env)->NewStringUTF(env, (char *)"JNITest Native String");
19. LOGD("Hello LIB!\n");
20.
21. }
复制代码
(6)编写android.mk文件
1. LOCAL_PATH:= $(call my-dir)
2. include $(CLEAR_VARS)
3. LOCAL_SRC_FILES:= \
4. com_ura_test_JNITest.c
5. LOCAL_C_INCLUDES := \
6. $(JNI_H_INCLUDE)
7. LOCAL_SHARED_LIBRARIES := libutils
8. LOCAL_PRELINK_MODULE := false
9. LOCAL_MODULE := libJNITest
10. include $(BUILD_SHARED_LIBRARY)
复制代码
(7)编译生成动态库
新建文件夹
~/mydroid/external/libJNITest
把上面编写好的头文件,c/c++源文件,make文件拷贝进上面目录中
* 需要注意的是把PRELINK_MOUDULE设置成false
否则需要重新做成img文件再烧入。
在ubuntu中执行
1. cd
2. cd mydroid/build/
3. envsetup.sh
4. cd ~/mydroid
5. cd external/libJNITest/
6. mm
复制代码
编译成功的后会在下面目录中生成libJNITest.so文件
~mydroid/out/target/product/generic/system/lib/
(8)在模拟器中执行程序
首先要把动态库拷进/system/lib中。
启动模拟器
1. adb shell
2. adb remount
3. adb push libJNITest.so /system/lib
复制代码
确认拷贝成功。
1. cd /system/lib
2. ls
复制代码
然后不要关闭模拟器(关掉再开动态库就没了,因为模拟器rom是只读)
执行java程序JNITest
会看到屏幕上打印出
JNITest Native String
android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。
c/c++中调用java程序的方法以后再发。
开发环境
(eclipse + android ADT)
WindowsXP SP3
JDK 1.6.0.12
VMWARE+Ubuntu Linux 8.04
(1) Eclipse中新建android工程
工程名 JNItest
Package名com.ura.test
Activity名 JNItest
应用程序名 JNItest
(2) 编辑main.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. >
7. <TextView
8. android:id="@+id/JNITest"
9. android:layout_width="fill_parent"
10. android:layout_height="wrap_content"
11. android:text="@string/JNITest"
12. />
13. </LinearLayout>
14.
复制代码
(3)编辑java文件
1. package com.ura.test;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.widget.TextView;
6. public class JNITest extends Activity {
7. /** Called when the activity is first created. */
8. static {
9. System.loadLibrary("JNITest");
10. }
11. public native String GetTest();
12. @Override
13. public void onCreate(Bundle savedInstanceState) {
14. super.onCreate(savedInstanceState);
15. setContentView(R.layout.main);
16. String str =GetTest();
17. TextView JNITest = (TextView)findViewById(R.id.JNITest);
18. JNITest.setText(str);
19. }
20. }
复制代码
(4)生成head文件
编译上面工程声称class文件,然后用javah工具生成c/c++头文件。
1. javah -classpath bin -d jni com.ura.test.JNItest
复制代码
生成的头文件如下
1. /* DO NOT EDIT THIS FILE - it is machine generated */
2. #include <jni.h>
3. /* Header for class com_ura_test_JNITest */
4.
5. #ifndef _Included_com_ura_test_JNITest
6. #define _Included_com_ura_test_JNITest
7. #ifdef __cplusplus
8. extern "C" {
9. #endif
10. /*
11. * Class: com_ura_test_JNITest
12. * Method: GetTest
13. * Signature: ()Ljava/lang/String;
14. */
15. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest
16. (JNIEnv *, jobject);
17.
18. #ifdef __cplusplus
19. }
20. #endif
21. #endif
复制代码
(5)编写c/c++文件如下
1. #include "com_ura_test_JNITest.h"
2.
3.
4.
5. #define LOG_TAG "JNITest"
6.
7. #undef LOG
8.
9. #include <utils/Log.h>
10.
11.
12.
13.
14.
15. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest
16. (JNIEnv * env, jobject obj)
17. {
18. return (*env)->NewStringUTF(env, (char *)"JNITest Native String");
19. LOGD("Hello LIB!\n");
20.
21. }
复制代码
(6)编写android.mk文件
1. LOCAL_PATH:= $(call my-dir)
2. include $(CLEAR_VARS)
3. LOCAL_SRC_FILES:= \
4. com_ura_test_JNITest.c
5. LOCAL_C_INCLUDES := \
6. $(JNI_H_INCLUDE)
7. LOCAL_SHARED_LIBRARIES := libutils
8. LOCAL_PRELINK_MODULE := false
9. LOCAL_MODULE := libJNITest
10. include $(BUILD_SHARED_LIBRARY)
复制代码
(7)编译生成动态库
新建文件夹
~/mydroid/external/libJNITest
把上面编写好的头文件,c/c++源文件,make文件拷贝进上面目录中
* 需要注意的是把PRELINK_MOUDULE设置成false
否则需要重新做成img文件再烧入。
在ubuntu中执行
1. cd
2. cd mydroid/build/
3. envsetup.sh
4. cd ~/mydroid
5. cd external/libJNITest/
6. mm
复制代码
编译成功的后会在下面目录中生成libJNITest.so文件
~mydroid/out/target/product/generic/system/lib/
(8)在模拟器中执行程序
首先要把动态库拷进/system/lib中。
启动模拟器
1. adb shell
2. adb remount
3. adb push libJNITest.so /system/lib
复制代码
确认拷贝成功。
1. cd /system/lib
2. ls
复制代码
然后不要关闭模拟器(关掉再开动态库就没了,因为模拟器rom是只读)
执行java程序JNITest
会看到屏幕上打印出
JNITest Native String
发表评论
-
自制android1.5源码包
2009-09-11 13:48 1609具体参考如下: http://www.williamhua.c ... -
Git和Repo扫盲——如何取得Android源代码
2009-09-11 13:46 8245Git 是 Linux Torvalds 为了帮助管理 Lin ... -
Eclipse中android插件的安装
2009-09-11 10:37 19860首先需要下载android的SDK ... -
JUnit基本教程
2009-09-09 16:01 6845使用目的 junit是java中书写unit ... -
android源代码下载
2009-09-08 18:30 160341 Android Source Code Download ... -
android源代码编译
2009-09-08 18:27 4233编译Android过程 建立编译环境, Ubuntu版本Li ... -
使用AIDL(Android接口描述语言)设计和使用远程接口
2009-09-04 10:14 7080目录 1 使用AIDL(AndRoid接口描述语言)设计和 ... -
android外国教材书
2009-09-03 10:25 4180一本不错的Android教程书~~ android bluet ... -
AndroidManifest.xml解析
2009-09-03 09:09 11449AndroidManifest.xml 是每个android程 ... -
Android单元测试
2009-09-02 17:01 20235android源代码中每个app下中都自带了一个test用例, ... -
视频与图像RGB/YUV格式详解
2009-09-02 15:59 3483计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(R ... -
yuv420 转换成RGB565函数
2009-09-02 15:17 8003做ADNROID CAMERA时.发现很多朋友都在找YUV R ... -
android框架设计
2009-08-31 15:21 7173这是对框架设计应用的一个小的总结 package com.mi ... -
Android API :SMS短信服务处理和获取联系人
2009-08-31 15:08 5435许多新的应用程序会考虑使用SMS作为数据分发平台。现实一点的场 ... -
在Android中创建和使用数据库
2009-08-27 22:32 4121每个应用程序都要使用数据,Android应用程序也不例外,An ... -
Android模拟器入门
2009-08-27 15:41 2021要玩google 手机 G1的模拟器,当然需要先去googl ... -
Android内核的简单分析
2009-08-27 15:36 4584Android内核的简单分析 mintelong (vkafe ... -
Android横竖屏切换的解决方法
2009-08-27 15:25 15715package com.cn; import android ... -
Android的IPC机制Binder的详解汇总
2009-08-27 15:16 8402第一部分 Binder的组成 1.1 驱动程序部分驱动程序的部 ... -
Android的Camera架构介绍
2009-08-27 15:12 2381第一部分 Camera概述 Android的Camer ...
相关推荐
该app为android系统下简单的jni示例,是学习JNI的好例子,为入门者提供简单的JNI环境配置示例
Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例Android NDK JNI 经典实例
android studio 中 进行 JNI 开发的一个简单实例,入门demo
Android JNI Android JNI 用C函数写本地库读写文件,底层调用小例子用C函数写本地库读写文件,底层调用小例子
android JNI学习三的最后代码实例
android JNI调用实例
Android JNI应用实例
这是一个简单的android studio中jni编程实例,包括生成.so和.jar方法,并且用test进行验证。
Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互实例代码详细介绍。Android JNI中C++层与Java层的对象交互...
Android JNI 实例,包括动态注册JNI ,静态注册JNI
Android Jni调用实例,NDK程序开发的demo。
Android JNI应用实例02
Android调用JNI的简单实例(附详细步骤)请参考我的博客:http://blog.csdn.net/ericfantastic/article/details/49300131
Android JNI实例01
这是我自己写的android jni调用java static属性的例子
这是一个jni开发的小例子,具体 的实现步骤在博客:Android关于JNI开发(1)-----eclipse工具开发。里面写的有。需要的朋友可以搜出来看一下。
Android调用JNI的简单实例(附详细步骤).zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
转载几篇介绍android jni开发方法的文章,有介绍基础的,有介绍方法的,也有实例可参考。
这是一个Android Studio的jni编程入门实例,配置方式简单易懂,本人有相应的博客说明,欢迎交流。
Android JNI串口通讯【实战例子】 学习NDK开发很好的例子,也可以直接用在项目中