從源碼編譯Android系統(tǒng)的Java類庫和JNI動態(tài)庫的方法
利用源碼編譯Android系統(tǒng)Java類庫
1、編寫Java項(xiàng)目和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
編譯結(jié)果:
Install: out/target/product/generic/system/framework/framework_led.jar
利用源碼編譯Android系統(tǒng)JNI動態(tài)庫
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;
}
注:方法名命名規(guī)則為:Java_包名_類名_方法名,可以用javah 命令根據(jù)java文件生成所需要的.h頭文件。當(dāng)然更好的辦法是通過JNI_OnLoad和AndroidRuntime::registerNativeMethods實(shí)現(xiàn)動態(tài)注冊,這樣可以不用理會方法名規(guī)則。這里只是做個簡單的例子,在后面會用一個例子實(shí)現(xiàn)動態(tài)注冊。
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
編譯結(jié)果:
Install: out/target/product/generic/system/lib/led_jni.so
相關(guān)文章
Android Path繪制貝塞爾曲線實(shí)現(xiàn)QQ拖拽泡泡
本文主要介紹Android Path繪制貝塞爾曲線,這里整理相關(guān)資料并運(yùn)用貝塞爾曲線實(shí)現(xiàn)QQ拖拽泡泡的示例,有興趣的小伙伴可以參考下2016-09-09
Android實(shí)現(xiàn)幾種推送方式解決方案
推送功能在手機(jī)開發(fā)中應(yīng)用的場景是越來起來了,本篇文章主要介紹了Android實(shí)現(xiàn)幾種推送方式解決方案 ,具有一定的參考價值,有興趣的可以了解一下。2016-12-12
Android 判斷某個Activity 是否在前臺運(yùn)行的實(shí)例
下面小編就為大家分享一篇Android 判斷某個Activity 是否在前臺運(yùn)行的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Android使用原生組件WebView加載網(wǎng)頁和數(shù)據(jù)的方法
這篇文章主要介紹了Android使用原生組件WebView加載網(wǎng)頁和數(shù)據(jù)的方法的相關(guān)資料,需要的朋友可以參考下2016-09-09
解決Android Studio Design界面不顯示layout控件的問題
這篇文章主要介紹了解決Android Studio Design界面不顯示layout控件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android編程實(shí)現(xiàn)使用Intent傳輸包含自定義類的ArrayList示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)使用Intent傳輸包含自定義類的ArrayList,涉及Android對象序列化、反序列化、Intent數(shù)據(jù)傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下2017-08-08
Android 日常開發(fā)總結(jié)的60條技術(shù)經(jīng)驗(yàn)
這篇文章主要介紹了Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條,需要的朋友可以參考下2016-03-03

