WEB开发网
开发学院手机开发Android 开发 Android 远程调试 JNI 实现 阅读

Android 远程调试 JNI 实现

 2010-04-05 18:27:00 来源:WEB开发网   
核心提示:1. 添加Android JNI 接口到Android 代码树1.1 假定需要被测试Jni 接口是TestNativeApi.java, 将其添加到Android的代码树下 frameworks/base/core/jni/TestNativeApi.java这个Native程序,Android 远程调试 JNI 实现

1. 添加Android JNI 接口到Android 代码树

1.1 假定需要被测试Jni 接口是TestNativeApi.java, 将其添加到Android的代码树下 frameworks/base/core/jni/TestNativeApi.java

这个Native程序,在Android中被编译成jar包形式,可以被上层Android java应用调用。

而其static 函数中调用 android System.loadLibrary() 来调用下层C++ 的 .so 库,并且loadLibrary()会判断 .so库的类型,

如果是C++ 的jni库,则会调用 .so库中的 JNI_OnLoad()函数来注册jni interface. Native 程序 实现了 JAVA 到 C++ 代码的Bridge 功能。

TestNativeApi.java 的代码如下:

package com.me.test;

import android.util.Log;

public final class TestNativeApi {

static {

try {

System.loadLibrary("itest_jni");

} catch (UnsatisfiedLinkError e) {

Log.d("itest_jni", "itest jni library not found!");

}

}

/**

* This class is uninstantiable.

*/

private TestNativeApi() {

// This space intentionally left blank.

}

public native static int apiFunction();

}

1.2 修改Android 的Makefile(frameworks/base/core/jni/Android.mk), 通过Makefile 函数 BUILD_JAVA_LIBRARY 将TestNativeApi.java编译成jar.

# Build com.me.test.jar

# ============================================================

test_dirs :=

./test/java/com/me/test

test_src_files := $(call all-java-files-under,$(cm_dirs))

# ==== the library =========================================

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(test_src_files)

LOCAL_NO_STANDARD_LIBRARIES := true

LOCAL_JAVA_LIBRARIES := core framework

LOCAL_MODULE := com.me.test

include $(BUILD_JAVA_LIBRARY)

1.3 此外还需要修改 framework/base/data/etc/platform.xml 添加.

<>

1 2 3 4 5  下一页

Tags:Android 远程 调试

编辑录入:coldstar [复制链接] [打 印]
赞助商链接