從源碼編譯Android系統(tǒng)的Java類(lèi)庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法
利用源碼編譯Android系統(tǒng)Java類(lèi)庫(kù)
1、編寫(xiě)Java項(xiàng)目和Android.mk文件
├── Android.mk
└── src
└── com
└── lhw
└── framework
└── led
└── Led.java
Led.java文件
package com.lhw.framework.led;
/**
* LED操作庫(kù)
* @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動(dòng)態(tài)庫(kù)
1、代碼和Android.mk編寫(xiě)
├── 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_包名_類(lèi)名_方法名,可以用javah 命令根據(jù)java文件生成所需要的.h頭文件。當(dāng)然更好的辦法是通過(guò)JNI_OnLoad和AndroidRuntime::registerNativeMethods實(shí)現(xiàn)動(dòng)態(tài)注冊(cè),這樣可以不用理會(huì)方法名規(guī)則。這里只是做個(gè)簡(jiǎn)單的例子,在后面會(huì)用一個(gè)例子實(shí)現(xiàn)動(dòng)態(tài)注冊(cè)。
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ī)開(kāi)發(fā)中應(yīng)用的場(chǎng)景是越來(lái)起來(lái)了,本篇文章主要介紹了Android實(shí)現(xiàn)幾種推送方式解決方案 ,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12
Android 判斷某個(gè)Activity 是否在前臺(tái)運(yùn)行的實(shí)例
下面小編就為大家分享一篇Android 判斷某個(gè)Activity 是否在前臺(tái)運(yùn)行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Android使用原生組件WebView加載網(wǎng)頁(yè)和數(shù)據(jù)的方法
這篇文章主要介紹了Android使用原生組件WebView加載網(wǎng)頁(yè)和數(shù)據(jù)的方法的相關(guān)資料,需要的朋友可以參考下2016-09-09
解決Android Studio Design界面不顯示layout控件的問(wèn)題
這篇文章主要介紹了解決Android Studio Design界面不顯示layout控件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Android編程實(shí)現(xiàn)使用Intent傳輸包含自定義類(lèi)的ArrayList示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)使用Intent傳輸包含自定義類(lèi)的ArrayList,涉及Android對(duì)象序列化、反序列化、Intent數(shù)據(jù)傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下2017-08-08
Android開(kāi)發(fā)中的9個(gè)常見(jiàn)錯(cuò)誤和解決方法
這篇文章主要介紹了Android開(kāi)發(fā)中的9個(gè)常見(jiàn)錯(cuò)誤和解決方法,這是Android開(kāi)發(fā)中最常見(jiàn)的9個(gè)錯(cuò)誤,經(jīng)過(guò)各種各樣的整理,以及和熱心網(wǎng)友討論總結(jié)而來(lái),需要的朋友可以參考下2015-01-01
Android 日常開(kāi)發(fā)總結(jié)的60條技術(shù)經(jīng)驗(yàn)
這篇文章主要介紹了Android日常開(kāi)發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條,需要的朋友可以參考下2016-03-03

