Google已为此处的所有AOSP应用提供a website,其中包括其启动器,联系人等...
我想知道如何导入这些应用。更具体地说,the launcher和contacts应用(虽然我也想了解其他应用)。
事实上,事情并非那么简单。你不能只导入克隆的项目,就是这样。即使您使用Eclipse(这似乎是这些存储库上使用的官方工具,根据文件夹hirerchy),它也不会那么容易。我找到了关于如何导入启动器(版本4.4.x)的old post,但它使用的是Eclipse,我认为需要Linux来构建一些文件。
我尝试使用Eclipse导入,但出于某种原因,我无法使用工作的“protobuf”库。我试过使用来自here的jar,但它没有成功导入它。
还有一个nice third party library有一个导入版本的启动器应用程序,但目前它有点落后,因为它基于Kitkat(4.4)而不是Lollipop(5.0)。
如何导入这些项目?有一个简单的方法吗?它甚至可以在Windows操作系统和Android Studio上运行吗?
答案 0 :(得分:4)
如何导入这些项目?
你只需克隆他们的git存储库。 然而,编译它们的唯一方法是将所有AOSP项目放在一起。
尝试在没有它的情况下编译应用程序是不可能的,因为丑陋的混合:
1.与AOSP其他项目的依赖性
2.使用普通应用无法使用的隐藏API(这些应用是 旨在成为具有额外API的系统应用程序。这些APIS甚至不存在于SDK中。
3.使用Android.mk系统,使用无法与Gradle甚至eclipse插件一起使用的黑客。
有简单的方法吗?
没有。对于Launcher来说,在几天的工作中,对于Contacts来说,它更容易从头开始。
即使在Windows操作系统和Android Studio上也能正常运行?
并非没有多少努力。
还有一件事,您在Nexus设备中看到的应用程序不是编译从Google网站下载的代码的结果。 他们的应用程序经历了许多补丁周期和QA,而您将编译的内容导致需要大量维护的非常错误的产品。
我的建议是寻找真正的开源应用程序,而不是依靠Google的善意。
答案 1 :(得分:4)
这是另一种方法。 AOSP应用程序本来是"原生",首先你应该想一想,这意味着什么? 这实际上意味着它们的目的是通过' mm'在主AOSP目录上执行envsetup和午餐后执行命令。另请注意,每个应用程序的Android.mk(在aosp / packages / apps中找到)会编译该文件,以将它们存储在最终图像上的/ system / app文件夹中。 所以,是的,这种方法很难导入到AndroidStudio,因为这种类型的编辑缺少AndroidStudio的gradle构建系统,它实际上以完全不同的方式工作。
您可能遇到的其他问题: - 由于Native AOSP应用程序在Android上运行/系统并且使用odex优化进行编译,因此在尝试安装任何派生工作时可能会遇到麻烦,除非您更改模块名称和AndroidManifest文件上的应用程序名称。
一个简单的解决方案: 只需启动一个新的Android Studio项目,并将相关的java类和资源从aosp导入到您的项目中。我知道这听起来像是一个懒惰的"解决方案,但仍然,采取这种方法,你应该确保以不同的方式命名你的应用程序(不同的模块名称),以便它不会与本机aosp应用程序(或任何派生的应用程序,如GoogleCamera(从AOSP相机扩展)冲突))。此外,这将设置正常创建Android应用程序所需的gradle环境。 希望这会有所帮助。
答案 2 :(得分:0)
对于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
使用
build.grale
lint
android {
// Other configuration
lintOptions {
abortOnError false
}
}
注意:不要在build.gradle
中更改protobuf版本,否则可能会破坏构建过程。