Android frameworks中引用aar包

在frameworks中引用aar包的步驟(以我需要在PKMS中調用爲例):

1.在相應的目錄中新建一個文件夾,存放test-debug.aar及Android.bp文件。
如我在\frameworks\base\services目錄下新建一個文件夾:data_test,裏面放test-debug.aar及Android.bp.

2.Android.bp中的內容
android_library_import {
    name: "services.data_test",
    aars: ["test-debug.aar"],
    sdk_version: "current",
}

3.在\frameworks\base\services\Android.bp中添加services.data_test
 // The convention is to name each service module 'services.$(module_name)'
    static_libs: [
        "services.core",
        "services.accessibility",
        "services.appwidget",
        "services.autofill",
        "services.backup",
        "services.companion",
        "services.coverage",
        "services.devicepolicy",
        "services.midi",
        "services.net",
        "services.print",
        "services.restrictions",
        "services.usage",
        "services.usb",
        "services.voiceinteraction",
        "android.hidl.base-V1.0-java",
        "services.data_test",
    ],

4.在需要引用的模塊的Android.bp中添加services.data_test
如我需要在PackageManagerService.java中引用test-debug.aar,則需要在frameworks\base\services\core\Android.bp中添加:
    libs: [
        "services.net",
        "android.hardware.light-V2.0-java",
        "android.hardware.power-V1.0-java",
        "android.hardware.tv.cec-V1.0-java",
        "android.hidl.manager-V1.0-java",
        "services.data_test",
    ],
(因爲PackageManagerService.java在frameworks\base\services\core\java\com\android\server\pm目錄下,離其最近的Android.bp中添加)

5.在PackageManagerService.java正常import及使用即可
import com.xxx.datatest.Mytest;//aar包中的包名
private void processPendingInstall(final InstallArgs args, final int currentStatus) {
        // Queue up an async operation since the package installation may take a little while.
        Log.d(TAG, "processPendingInstall ");

        Mytest.initForFramework(mContext);
        Mytest.hook("安裝應用+1");
        ......
}

PS,也可以把test-debug.aar直接放置在\frameworks\base目錄下。
步驟1需要做的修改是:在\frameworks\base目錄下新建一個文件夾data_test,裏面放test-debug.aar及Android.bp。
步驟2不需要修改,即Android.bp內容跟上面一樣。
步驟3需要修改爲在\frameworks\base\Android.bp中添加services.data_test:
    static_libs: [
        "framework-protos",
        "android.hidl.base-V1.0-java",
        "android.hardware.cas-V1.0-java",
        "android.hardware.contexthub-V1.0-java",
        "android.hardware.health-V1.0-java-constants",
        "android.hardware.thermal-V1.0-java-constants",
        "android.hardware.tv.input-V1.0-java-constants",
        "android.hardware.usb-V1.0-java-constants",
        "android.hardware.usb-V1.1-java-constants",
        "android.hardware.vibrator-V1.0-java",
        "android.hardware.vibrator-V1.1-java",
        "android.hardware.vibrator-V1.2-java",
        "android.hardware.wifi-V1.0-java-constants",
        "android.hardware.radio-V1.0-java",
        "android.hardware.usb.gadget-V1.0-java",
        "services.data_test",
    ],
步驟4及步驟5不需要修改。

 
 

 

 

 

 

 

 

 

 

 

發佈了121 篇原創文章 · 獲贊 24 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章