如何开发安卓系统/平台应用

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 源代码树本身中编译应用程序可能会更简单。

这样做非常简单:

  • 将应用程序的源代码复制到“$BUILD_ROOT/packages/apps/”中(或将对其的引用添加到您自己的 local_manifest 中以让“reposync”处理它)
  • 将 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
Run Code Online (Sandbox Code Playgroud)

  • 您好,感谢您的回复,我已经知道,我正在询问使用 Android Studio(或者可能是 Eclipse 或其他?)进行平台应用程序开发,因为正常设置(我所知道的唯一一个)上的 Android Studio 不允许访问平台 API(函数/类/常量被隐藏并在构建时给出错误)快速调试应用程序我当前构建 APK 并使用我的 ROM 的平台密钥对其进行签名,然后替换应用程序(使用具有 root 访问权限的 Eng 构建) 。我想要澄清的是一个有用的 IDE 来开发此类应用程序(系统/平台应用程序)。 (3认同)