删除appcompat_v7项目而不影响其功能

时间:2014-09-09 22:11:11

标签: android eclipse

在eclipse中创建一个Android项目时,它创建了2个项目。

  1. appcompat_v7
  2. MasterCopy< - 这是我项目的名称
  3. 我知道appcompat_v7是一个android自动为我创建的库项目。

    创建上述项目后,我收到一条错误消息'容器'Android Dependencies'引用了非现有库'。为了解决这个问题,我只需构建appcompat_v7项目并清除错误。

    基本上我不希望appcompat_v7作为单独的项目。这是看起来像。

    appcompat_v7 project folder structure MasterCopy project folder structure

    如果我删除了appcompat_v7项目,我收到了'错误检索项目的父项:找不到与styles.xml文件中给定名称'Theme.AppCompat.Light.DarkActionBar'匹配的资源。

    有没有办法将appcompat作为外部库或JAR文件添加到MasterCopy项目中并保持一个项目整体而不失去功能?

    我不确定我在这里是否有任何意义......但这就是我要求创建项目的方式。

1 个答案:

答案 0 :(得分:1)

解释

您将遇到的问题是资源(例如Theme.AppCompat.Light.DarkActionBar等样式)无法简单地打包在jar文件中。正如Google的文档所述:

  

某些支持库包含编译代码类之外的资源,   例如图像或XML文件。例如,v7 appcompat和v7   gridlayout库包括资源。

Google提供了有关如何包含包含资源的库的特定文档,您似乎已经遵循这些文档: https://developer.android.com/tools/support-library/setup.html#libs-with-res

将这个保存在一个单独的项目中是一个好主意的原因是,它允许您在兼容性库更改时轻松地升级,构建和以其他方式管理与您自己的项目。

(不推荐)解决方案

也就是说,如果真的希望拥有一个项目,您可以手动将app compat库(位于<sdk>/extras/android/support/v7/appcompat/的示例项目中的所有内容复制到您的项目。值得注意的是,您需要复制res/文件夹中的所有内容并将其与您自己的资源合并,或将Google的XML文件重命名为res/values/strings.xmlstrings-appcompat.xml,当然还有appcompat jar文件本身。

但是,每次您想要更新所使用的兼容性库的版本时,您都必须完成此过程。

(好)替代解决方案

Google专门创建了AAR格式,该格式将资源与jar文件捆绑在一起。如果您转换到Gradle构建系统(如果您正在使用Android Studio,则很容易),那么您所要做的就是参考这个app-compat-v7 aar工件(也在上面的链接中解释) ,你可以维护一个项目。