繁体   English   中英

如何将AOSP应用程序(启动器,联系人......)导入Android-Studio?

[英]How to import the AOSP apps (launcher, contacts,…) into Android-Studio?

背景

Google在这里有一个适用于所有AOSP应用的网站 ,其中包括其启动器,联系人等...

问题

我想知道如何导入这些应用程序。 更具体地说, 发射器联系人应用程序(虽然我也想了解其他人)。

事情是,它不是那么简单。 你不能只导入克隆的项目,就是这样。 即使您使用Eclipse(这似乎是这些存储库中使用的官方工具,根据文件夹hirerchy),它也不会那么容易。

我发现了什么

我发现了一篇关于如何导入启动器(版本4.4.x)的旧文章 ,但它使用的是Eclipse,我认为需要Linux来构建一些文件。

我试图使用Eclipse导入,但由于某种原因,我无法使用工作的“protobuf”库。 我试过从这里使用一个jar,但它没有成功导入它。

还有一个不错的第三方库 ,它有一个导入版本的启动器应用程序,但目前它有点落后,因为它基于Kitkat(4.4)而不是Lollipop(5.0)。

这个问题

你如何进口这些项目? 有一个简单的方法吗? 它甚至可以在Windows操作系统和Android Studio上运行吗?

你如何进口这些项目?

你只需克隆他们的git存储库。 然而,编译它们的唯一方法是将所有AOSP项目放在一起。

试图在没有它的情况下编译应用程序是不可能的,因为丑陋的混合:

1.与AOSP其他项目的依赖关系

2.使用常规应用程序无法使用的隐藏API(这些应用程序设计为具有其他API的系统应用程序)。 这些APIS甚至不存在于SDK中。

3.使用不能与Gradle甚至eclipse插件一起使用的黑客Android.mk系统。

有一个简单的方法吗?

不是。对于Launcher来说,它的几天工作,对于Contacts来说,它更容易从头开始。

它甚至可以在Windows操作系统和Android Studio上运行吗?

不是没有很多努力。

还有一件事,您在Nexus设备中看到的应用程序不是编译从Google网站下载的代码的结果。 他们的应用程序经历了许多补丁周期和QA,而您将编译的内容导致需要大量维护的非常错误的产品。

我的建议是寻找真正的开源应用程序,而不是依赖谷歌的善意。

这是另一种方法。 AOSP应用程序旨在“本机”,首先你应该想一想,这意味着什么? 这实际上意味着它们是在主要AOSP目录上进行envsetup和午餐后通过'mm'命令编译的。 另请注意,每个应用程序的Android.mk(在aosp / packages / apps中找到)会编译该文件,以将它们存储在最终图像上的/ system / app文件夹中。 所以,是的,这种方法很难导入到AndroidStudio,因为这种类型的编译缺少AndroidStudio的gradle构建系统,它实际上以完全不同的方式工作。

您可能遇到的其他问题: - 由于Native AOSP应用程序在Android上运行/系统并且使用odex优化进行编译,因此在尝试安装任何派生工作时可能会遇到麻烦,除非您更改模块名称和AndroidManifest文件上的应用程序名称。

一个简单的解决方案:只需启动一个新的Android Studio项目,并将相关的Java类和资源从aosp导入到您的项目中。 我知道这听起来像是一个“懒惰”的解决方案但仍然采用这种方法,您应该确保以不同的方式命名您的应用程序(不同的模块名称),而不是AOSP应用程序,因此它不会与本机aosp应用程序(或任何派生的应用程序)冲突例如GoogleCamera(从AOSP Camera扩展))。 此外,这将设置正常创建Android应用程序所需的gradle环境。 希望这可以帮助。

对于Launcher3,您可以访问https://android.googlesource.com/platform/packages/apps/Launcher3/+/android-6.0.1_r9

aosp Launcher3现在添加了build.gradle文件,您可以将总目录复制到工作目录,并更改gradlew文件模式以使其可以执行,然后使用./gradlew clean && ./gradlew build来构建Launcher3。 您还需要在abortOnError中关闭lint的build.grale

android {
    // Other configuration
    lintOptions {
        abortOnError false
    }
}

注意:不要在build.gradle更改protobuf版本,否则可能会破坏构建过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM