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

abh*_*bhi 4 android android-source

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

现在问题是应用程序具有Android Studio的文件夹结构,它与Eclipse完全不同,而android_source_code期望它采用Eclipse文件夹结构格式.那我怎么能实现呢?

android_source_code会接受Studio文件夹结构还是我需要编写一个脚本来将Studio文件夹结构转换为Eclipse格式,同时复制到android_source_code?

任何帮助将不胜感激.

谢谢

Dav*_*Lev 5

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

您可能想要研究的方法之一是创建自己的Gradle任务,该任务将根据您Android Studio项目的源结构构建Android.mk文件(即查找JAVA文件,资源,清单的所有相关源集, AIDL等...并创建一个Android.mk文件,它将告诉AOSP构建系统确切地找到每个文件).这种方法可能适用于相对简单的项目,但只要您开始使用更复杂的功能(即模块,清单/资源合并等),您就会发现在没有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)
Run Code Online (Sandbox Code Playgroud)

此外,根据应用程序的需要,您可能希望在清单中声明您的应用程序是系统应用程序:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...
android:sharedUserId="android.uid.system">
Run Code Online (Sandbox Code Playgroud)