android jni调用
2013-11-09 22:16
253 查看
1. 写java代码
2. 利用javah生成头文件
javah -classpath A -d B C
javah -classpath bin/classes -d jni/src com.example.test.MainActivity
-classpath A A表示类路径
-d B B表示头文件生成目录
C表示包名.类名
注:在这一步里在win7下怎么都生成不了,一直报有错
错误: 无法访问android.app.Activity
找不到android.app.Activity的类文件
javah路径是指向jdk路径的,不可能有什么问题,命令行就这些,直接在linux下执行了一次,没问题,真不知问题出在哪?
补充:
对于这个错,可以通过增加android.jar来解决
javah -classpath "D:\Download\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-17\android.jar;bin/classes" -d jni/src com.example.audiotest.MainActivity
3. 建立jni文件夹,根据头文件写c代码,写Android.mk
目录树结构如下
audiotest.c
Android.mk
4. 执行结果可以在eclipse里看到
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); testHello("testHello"); } static{ System.loadLibrary("testjni"); } private native void testHello(String str);
2. 利用javah生成头文件
javah -classpath A -d B C
javah -classpath bin/classes -d jni/src com.example.test.MainActivity
-classpath A A表示类路径
-d B B表示头文件生成目录
C表示包名.类名
注:在这一步里在win7下怎么都生成不了,一直报有错
错误: 无法访问android.app.Activity
找不到android.app.Activity的类文件
javah路径是指向jdk路径的,不可能有什么问题,命令行就这些,直接在linux下执行了一次,没问题,真不知问题出在哪?
补充:
对于这个错,可以通过增加android.jar来解决
javah -classpath "D:\Download\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-17\android.jar;bin/classes" -d jni/src com.example.audiotest.MainActivity
3. 建立jni文件夹,根据头文件写c代码,写Android.mk
目录树结构如下
audiotest.c
#include <stdio.h> #include <android/log.h> #include "com_example_audiojnitest_MainActivity.h" JNIEXPORT void JNICALL Java_com_example_audiojnitest_MainActivity_testHello (JNIEnv *env, jobject obj, jstring str) { char *p = (char *)(*env)->GetStringUTFChars(env, str, JNI_FALSE); __android_log_print(ANDROID_LOG_ERROR, "audiotest", p) ; return ; }
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := testjni LOCAL_SRC_FILES := src/audiotest.c LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)
4. 执行结果可以在eclipse里看到
相关文章推荐
- android JNI 调用
- android调用jni使用ffmeg把h264转yuv数据
- 编译代码在Android中使用JNI调用Opencv本地代码 配置方式 边缘检测 范例代码
- Android 调用Jni的全过程
- Android Jni调用浅述
- android JNI 调用第三方动态库
- Android与JNI(三) ---- c++调用java(转载)
- android中通过JNI读取Bitmap文件,并调用opencv进行处理
- 在Android中,通过JNI实现C++与Java相互调用
- Android通过JNI调用驱动程序(完全解析实例)
- Android studio JNI NDK 开发(opencv,opencl 调用等等,更新中)
- Android的NDK开发(1)————Android JNI简介与调用流程
- JNI基础实验一:调用.so文件--友善之臂Tiny210 android 串口/pwm/ADC/LED
- Android通过JNI调用驱动程序(完全解析实例)
- free pascal(lazarus)版的android JNI进阶篇:反向调用java的方法并传递复杂参数
- Android JNI调用c语言加密程序
- Android SurfaceFligner Vsync信号 Jni/C++调用实现
- 用于Android ART虚拟机JNI调用的NativeBridge介绍
- Android JNI 调用常见问题汇总
- Android JNI简单实例(android 调用C/C++代码)