gpt4 book ai didi

java - 如何开发Android系统/平台应用

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:02 25 4
gpt4 key购买 nike

我正在开发一个系统应用程序,该应用程序使用我用来制作我自己的 ROM(来自 AOSP)的平台 key 进行签名,但我必须在我的代码中做一些变通方法才能使用平台类和函数,当我尝试直接使用它们时,Android Studio 告诉我我正在尝试使用隐藏的 API。

我想编写设置、启动器、框架等代码。我知道它们的来源,这就是我自己编写的方式,但我必须使用反射调用类,尝试按照它们编写的方式进行操作,甚至不在 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 中并使用平台 key 签名),因此在 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 中并使用平台 key 进行签名。

请注意,您可以通过运行“mm”来增量构建您的应用。

例子:

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

关于java - 如何开发Android系统/平台应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com