Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 從源碼編譯Android系統的Java類庫和JNI動態庫的方法

從源碼編譯Android系統的Java類庫和JNI動態庫的方法

編輯:關於Android編程

利用源碼編譯Android系統Java類庫
1、編寫Java項目和Android.mk文件

  ├── Android.mk
  └── src
   └── com
     └── lhw
       └── framework
         └── led
           └── Led.java

Led.java文件

package com.lhw.framework.led; 
 
/** 
 * LED操作庫 
 * @author Micky Liu 
 */ 
public class Led { 
   
  public boolean turnOn() { 
    return true; 
  }   
   
  public boolean turnOff() { 
    return true; 
  }   
} 

 

Android.mk文件

LOCAL_PATH := $(call my-dir) 
 
LOCAL_SRC_FILES   := $(call all-java-files-under, src) 
LOCAL_MODULE    := framework_led 
LOCAL_MODULE_TAGS  := framework_led 
 
LOCAL_JAVA_LIBRARIES    := 
LOCAL_STATIC_JAVA_LIBRARIES := 
 
include $(BUILD_JAVA_LIBRARY) 

2、編譯

   mmm /home/administrator/workspace/android_test/framework_led

    編譯結果:

   Install: out/target/product/generic/system/framework/framework_led.jar    


利用源碼編譯Android系統JNI動態庫
1、代碼和Android.mk編寫

├── jni
│  ├── Android.mk
│  └── led.c


led.c

#include <jni.h> 
#include <stdio.h> 
 
jboolean Java_com_lhw_led_Led_turnOn(JNIEnv *env, jclass thiz) 
{ 
  return JNI_TRUE; 
} 
 
jboolean Java_com_lhw_led_LED_trunOff(JNIEnv *env, jclass thiz) 
{ 
  return JNI_TRUE; 
} 

注:方法名命名規則為:Java_包名_類名_方法名,可以用javah 命令根據java文件生成所需要的.h頭文件。當然更好的辦法是通過JNI_OnLoad和AndroidRuntime::registerNativeMethods實現動態注冊,這樣可以不用理會方法名規則。這裡只是做個簡單的例子,在後面會用一個例子實現動態注冊。

Android.mk

LOCAL_PATH := $(call my-dir) 
 
LOCAL_SRC_FILES := led.c 
LOCAL_MODULE  := led_jni 
LOCAL_MODULE_TAGS    := led_jni 
 
LOCAL_PRELINK_MODULE  := false 
LOCAL_SHARED_LIBRARIES := libc 
 
include $(BUILD_SHARED_LIBRARY) 

2、編譯

  mmm /home/administrator/workspace/android_test/jni

    編譯結果:

  Install: out/target/product/generic/system/lib/led_jni.so

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved