簡體   English   中英

如何開發Android系統/平台應用程序

[英]How to develop Android System/Platform Apps

我正在使用我用來制作我自己的ROM(來自AOSP)的平台密鑰進行簽名的系統應用程序,但我必須在我的代碼中做一些變通方法才能使用平台類和函數,我嘗試直接使用它們Android Studio告訴我,我正在嘗試使用隱藏的API。

我想編寫像Settings,Launcher,框架這樣的代碼。 我知道他們的來源是我自己編寫的,但是我必須使用反射調用類,嘗試按照Android Studio上的編寫方式進行操作。

我不想使用root命令來存檔我的應​​用程序的功能,這就是我這樣做的原因。 我正在構建的ROM將在沒有root用戶訪問權限的情況下安裝(用戶構建)。

例如,在“設置”應用中,要啟用MTP存儲:

UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);

但是如果我在Android Studio中使用該代碼,它甚至不被認為是有效的:

http://i.stack.imgur.com/R86OW.png (截圖)

我必須這樣做才能存檔(它目前以這種方式工作):

UsbManager UsbManagerP = (UsbManager)getSystemService(Context.USB_SERVICE);
String setCurrentFunctionMethodName = "setCurrentFunction";
Method setCurrentFunctionMethod = null;
try {
    setCurrentFunctionMethod = UsbManagerP.getClass().getMethod(setCurrentFunctionMethodName, String.class, boolean.class);
    setCurrentFunctionMethod.invoke(UsbManagerP, "mtp",true);
    Log.d("OBS", "MTP ACTIVO");
} catch (NoSuchMethodException e) {
    Log.d("OBS", "Error No Existe Metodo");
} catch (InvocationTargetException e) {
    Log.d("OBS", "Error No Existe Objetivo");
} catch (IllegalAccessException e) {
    Log.d("OBS", "Error No Se puede acceder al metodo (illegal access)");
}

我真的需要幫助,可能是之前曾在三星/索尼/摩托羅拉等公司工作的人,並分享了一些有關創建系統應用程序的知識。

由於您的應用程序將包含在ROM中(並且應該使用平台密鑰安裝在/ system + signed中),因此在AOSP源代碼樹本身中編譯應用程序可能更簡單。

這樣做非常簡單:

  • 將您的應用程序的源復制到'$ BUILD_ROOT / packages / apps /'(或將其引用添加到您自己的local_manifest中以使'repo sync'處理它)
  • 將Android.mk文件添加到您的應用程序。 可以在這里找到一個例子: https//github.com/adrian-bl/android_jpolly
  • 將您應用的名稱(Android.mk:LOCAL_PACKAGE_NAME)包含在您的構建$ PRODUCT_PACKAGES中(例如:device.mk - > PRODUCT_PACKAGES + = UsbWhatever)

就是這樣:Android構建系統現在將自動構建您的應用程序,作為正常構建過程的一部分,使您可以訪問所有系統功能。 該應用程序還將自動存儲在/ system +使用平台密鑰簽名。

請注意,您可以通過運行'mm'來執行應用的增量構建。

例:

$ . build/envsetup.sh
$ lunch <your device config>
$ cd packages/app/UsbWhatever
$ mm  # <-- this will rebuild your package

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM