[英]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源代碼樹本身中編譯應用程序可能更簡單。
這樣做非常簡單:
就是這樣: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.