android - 如何在 android 源代码中添加 Android Studio 创建的应用程序?

标签 android android-source

我已经在 Android Studio 中创建了一个应用程序。现在我想将该项目添加到 android_source_code/packages/apps/文件夹中并构建整个 AOSP 镜像,以便我的应用程序成为系统应用程序。

现在的问题是应用程序的 Android Studio 文件夹结构与 Eclipse 完全不同,android_source_code 期望它采用 Eclipse 文件夹结构格式。那么我该如何实现呢?

android_source_code 是否接受 Studio 文件夹结构,或者在复制到 android_source_code 时是否需要编写脚本将 Studio 文件夹结构转换为 Eclipse 格式?

我们将不胜感激。

谢谢

最佳答案

将 Android Studio 项目集成到 AOSP 构建中并非易事。据我所知,没有任何专用工具可以将 Android Studio 项目(使用 Gradle 构建系统)转换为 AOSP 项目(使用 make 构建系统)。

您可能想要研究的方法之一是创建您自己的 Gradle 任务,该任务将根据您的 Android Studio 项目的源结构构建 Android.mk 文件(即为您的 JAVA 文件、资源找到所有相关的源集) 、 list 、AIDL 等...并创建一个 Android.mk 文件,该文件将告诉 AOSP 构建系统确切在哪里可以找到每个文件)。 这种方法可能适用于相对简单的项目,但一旦您开始使用更复杂的功能(即模块、 list /资源合并等),您会发现在没有 Gradle 帮助的情况下生成 Android.mk 非常困难构建系统。

我会考虑一种不同的方法:

作为预装的特权应用程序,您可以获得与系统应用程序相同的特权,并可以不受限制地执行您可能希望执行的任何任务。

为此,您可以使用 Android Studio 构建应用程序,并将已构建的 APK 定义为 BUILD_PREBUILT 组件,该组件将放置在设备的 priv-app 文件夹中。

这是 Android.mk 文件的示例,它将采用您预构建的 APK 并将其作为预安装应用程序安装在设备上:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := your_app_name
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := .apk
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

此外,根据您的应用程序需要执行的操作,您可能希望在 list 中声明您的应用程序是系统应用程序:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...
android:sharedUserId="android.uid.system">

关于android - 如何在 android 源代码中添加 Android Studio 创建的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38561068/

相关文章:

java - 如何从 android 中的 arraylist 获取 null

android - 叉AOSP源

java - 如何构建AOSP来获取jar文件?

android - 如何构建 Android AOSP 的一部分?

java - 循环不迭代全长

android - 与 Kotlin : ProcessDataBinding Unable to get public no-arg constructor 的数据绑定(bind)

android - 在 android 中弹出?

android - 如何只下载 AOSP 源代码的工作目录而不下载整个 repo 历史记录?

android - 为 Nexus 5 构建 AOSP,clang 错误

javascript - RN-fetch-blob 错误 base64 - 仅限 android 问题