GCh*_*ppe 5 java android android-studio
我正在开发一个系统应用程序,该应用程序使用我用来制作我自己的 ROM(来自 AOSP)的平台密钥进行签名,但我必须在我的代码中做一些变通方法才能使用平台类和函数,当我尝试直接使用它们 Android Studio 告诉我我正在尝试使用隐藏的 API。
我想编写设置、启动器、框架等代码。我知道他们的来源,这就是我编写自己的方式,但我必须使用反射来调用类,尝试按照它们的编写方式甚至不是在 Android Studio 上构建。
我不想使用 root 命令来存档我的应用程序的功能,这就是我这样做的原因。我正在构建的 ROM 将在没有对用户(用户构建)的 root 访问权限的情况下安装。
例如在设置应用程序中,启用 MTP 存储:
UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);
Run Code Online (Sandbox Code Playgroud)
但是如果我在 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)");
}
Run Code Online (Sandbox Code Playgroud)
我真的需要帮助,也许以前曾在三星/索尼/摩托罗拉等公司工作过的人,并分享一些有关创建系统应用程序的知识。
小智 0
由于您的应用程序将包含在 ROM 中(并且应安装在 /system + 使用平台密钥签名),因此在 AOSP 源代码树本身中编译应用程序可能会更简单。
这样做非常简单:
就是这样:Android 构建系统现在将作为正常构建过程的一部分自动构建您的应用程序,让您可以访问所有系统功能。该应用程序还将自动存储在 /system 中并使用平台密钥进行签名。
请注意,您可以通过运行“mm”来增量构建应用程序。
例子:
$ . build/envsetup.sh
$ lunch <your device config>
$ cd packages/app/UsbWhatever
$ mm # <-- this will rebuild your package
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |