Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android修改Framework的Jni

Android修改Framework的Jni

編輯:初級開發

1. JNI層 
在 /Android/android-1.6_r2/frameworks/base/core/jni 路徑下創建例子 android_mytest_hellojni.cpp 文件,這個文件就是在 JNI 層實現接口。文件內容如下:(可參考同一目錄下的 android_debug_JNITest.cpp 文件編寫) 
  #define LOG_TAG "HelloJNI" #include "jni.h" #include "nativehelper/JNIHelp.h" #include "utils/Log.h" #include "utils/misc.h"   namespace android { static JString android_mytest_hellojni_displayString(JNIEnv *env, jclass clazz) {  return env->NewStringUTF("Hello from JNI!"); }  /*  * JNI registration. */ static JNINativeMethod gMethods[] = {     /* name, signature, funcPtr */    { "displayString",      "()Ljava/lang/String;",           (void*) android_mytest_hellojni_displayString },      }; int register_android_mytest_hellojni(JNIEnv* env) { //此處的目錄結構就是在Javaframework層的文件目錄,且必須一致 return jniRegisterNativeMethods(env, "android/mytest/hellojni",             gMethods, NELEM(gMethods)); } }; 2. JNI 層:對編譯的修改配置 
2.1修改/Android/android-1.6_r2/frameworks/base/core/jni目錄下的android.mk 文件,在LOCAL_SRC_FILES:= \ 下面加上 
android_mytest_hellojni.cpp \ 
2.2修改/Android/android-1.6_r2/frameworks/base/core/jni目錄下的androidRuntime.cpp 文件在extern int 後面添加 
extern int register_android_mytest_hellojni(JNIEnv* env); 
然後在static const RegJNIRec gRegJNI[] = {下面添加 
REG_JNI(register_android_mytest_hellojni), 
這樣,JNI層的修改就到此為止了。 3. Javaframework 層 
在 /Android/android-1.6_r2/frameworks/base/core/java/android/ 新建文件目錄 mytest ,在該目錄下新建文件 hellojni.java 聲明接口。內容如下:(可以參考 android-1.6_r2/frameworks/base/core/java/android/debug 目錄下的 JNITest.Java 文件編寫) 4 .下面我們要對我們做過更改的 libandroid_runtime.so 和 framework.jar 進行重新編譯。 
在源代碼工程目錄下輸入 make libandroid_runtime 重新編譯生成 libandroid_runtime.so 
… 
target thumb C++: libandroid_runtime <= frameworks/base/core/jni/android_mytest_hellojni.cpp 
target thumb C++: libandroid_runtime <= frameworks/base/core/jni/androidRuntime.cpp 
target SharedLib: libandroid_runtime (out/target/product/generic/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/LINKED/libandroid_runtime.so) 
target Prelink: libandroid_runtime (out/target/product/generic/symbols/system/lib/libandroid_runtime.so) 
target Strip: libandroid_runtime (out/target/product/generic/obj/lib/libandroid_runtime.so) 
Install: out/target/product/generic/system/lib/libandroid_runtime.so 
然後再輸入 make framework 重新編譯生成 framework.jar 
… 
Install: out/target/product/generic/system/framework/framework.jar
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved