【问题标题】:What is the correct way of developing an Android platform application using Android Studio (or other IDE)使用 Android Studio(或其他 IDE)开发 Android 平台应用程序的正确方法是什么
【发布时间】:2021-09-23 20:28:04
【问题描述】:

我目前正在处理一个 Android AOSP 项目,我正在为此开发一个 java 模块,该模块将成为核心服务(例如电话应用程序)的一部分。

我使用的一些框架默认情况下不会暴露给“常规”应用程序(位于私有 framework.jar)。

例如:有些地方我直接使用android.app.IActivityManager的Binder API。

确实拥有平台密钥,但我不喜欢每次想要进行更改时都编译整个 AOSP 框架。

我也更喜欢使用 Android Studio,但如果不可能的话,我会在通过终端编译应用程序时妥协。

从事此类项目的正确方法是什么?

AOSP 的开发者如何在不每次都重新编译整个框架的情况下开发自己的代码?

更新:

到目前为止,我发现的最佳方法是简单地创建一个 android studio 项目,从设备 (adb pull /system/framework/framework.jar) 或 AOSP 源代码中获取 framework.jar,并将其添加为 compileOnlyruntimeOnly 应用程序的 gradle.build 文件中的依赖项。

dependencies {
    compileOnly files('libs/framework.jar')
    implementation 'com.android.support:recyclerview-v7:28.0.0'
}

然后只需将android:sharedUserId="android.uid.system" 添加到 Android Manifest 并使用平台键编译它。

它应该可以按原样安装。

这篇文章似乎总结得很好: https://kwagjj.wordpress.com/2017/10/27/building-custom-android-sdk-from-aosp-and-adding-it-to-android-studio/comment-page-1/

还有其他方法吗?

【问题讨论】:

标签: android android-studio android-source


【解决方案1】:

您可以将这些 API 调用包装到新的管理器和服务中。例如,您有一个名为CustomManager 的管理器,它将直接调用IActivityManager 或其他私有/隐藏API。然后你可以为你创建一个模块CustomManager,并为它构建jar/aar。每次更改后,您可以将生成的 jar/aar 文件复制到您的 AndroidStudio 项目中。您可以将其用作普通库。其实AOSP源码中有一些例子,比如SystemUISharedLibSystemUI内部API的封装,被Launcher3使用。

【讨论】:

  • 这不是我的意思,我不想仅仅公开一个 API,我想使用 Android Studio 处理 AOSP 框架本身。
  • 您可以添加您的系统服务,它可以使用AOSP框架隐藏/系统API或与AMSWMS等系统服务通信。然后你可以用上面提到的方法用管理器包装你的服务,并把它打包成一个jar/aar库,然后你可以用它来开发你的应用程序来实现一些官方Android SDK不支持的功能.
  • 所以和我在问题中写的差不多吧?
  • 是的。您可以直接将所有东西修改为AOSP框架源代码,并使用您提到的方法编译您的应用程序和修改的framework.jar,但不建议这样做。在我看来,添加一个中间层来抽象你的修改会更好。
猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
相关资源
最近更新 更多