天天看點

Android Frameworks 下,app 的開發。

前言

主要介紹如何在Android Studio 之中使用Frameworks APi 實作開發。

我們如果是開發普通應用那麼很簡單。導入Android SDK就可以了。

但是我們如果是開發系統app,運作在Framework之中。

或者覺得系統固件廠商提供的Launcher不好看,我們要自己定制或者添加一些不一樣的功能在之中。

然後我們在源碼之中進行編譯,那麼效率太低。這個時候我們就需要将項目從源碼之中導出。然後使用Android Studio 進行開發。

1.Frameworks庫API

我們導出進行開發的時候,碰見的第一個檔案,就是很多api接口不存在,在SDK之中沒有,或者是私有了。

這個時候我們就需要Frameworks.jar 庫了。

那麼這個庫檔案在哪呢?

參考下面路徑位址。

Android Frameworks 下,app 的開發。

在源碼路徑之中,可以找到

Android Frameworks 下,app 的開發。

找到這個classes.jar檔案。将這個jar檔案 放到你的Android Studio之中。

如果碰見了錯誤,可以參考https://blog.csdn.net/zy987654zy/article/details/102495501 導入方式。

這個時候你就可以随意的根據api 進行調整和開發了。很多sdk不開放的api,在frameworks之中都可以進行操作。

2.編譯apk

這個時候你就需要将代碼送出到源碼之中,然後編譯mk檔案。使用源碼腳本進行編譯你的apk了。

源碼下編譯你的apk 的腳本可以參考:https://blog.csdn.net/zy987654zy/article/details/106021105

因為我們主要使用的Android Studio 的快速開發。而編譯的話,可能會大量涉及到系統源碼的庫檔案,而這些庫檔案在源碼之中存在,而你的本機可能不會存在,是以才建議使用源碼進行編譯。

3.編譯腳本之中的mk檔案該如何編寫?

可以參考下面

LOCAL_PATH := $(call my-dir)
include $(CALEAR_VARS)
# app的名稱值
LOCAL_PACKAGE_NAME := AppDEMO
#指該子產品在所有版本下都編譯
LOCAL_MODULE_TAGS := optional
#采用系統簽名
LOCAL_CERTIFICATE := platform
#引入src 目錄下的全部檔案代碼。
LOCAL_SRC_FILES := $(call all-java-files-under, src)
#指定依賴的共享java類庫 
LOCAL_JAVA_LIBRARIES := HtvManager
#指定依賴的靜态java類庫
LOCAL_STATIC_JAVA_LIBRARIES := Htv \
                         HSysManager
#指定依賴的靜态java類庫
LOCAL_STATIC_JAVA_LIBRARIES += HDTV

#指定依賴的JNI 庫
LOCAL_JNI_SHARED_LIBRARIES := libhitvjni

#說明不讓platform這個APK編譯到系統。也不會生成到(TARGET_OUT)/priv-app目錄下。 我們需要該apk
#LOCAL_OVERRIDES_PACKAGES := platform

# 編譯代碼的混淆邏輯。
LOCAL_PROGUARD_ENABLED := disabled

# 将apk 打包到img 檔案之中。
# ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_PACKAGE_NAME)

# 設定建構32位
LOCAL_MULTILIB := 32

# 将項目編譯成apk   還有其他選項, 可以編譯成lib庫,或者bin執行檔案等等。
include $(BUILD_PACKAGE)
           

繼續閱讀