【问题标题】:Remove appcompat_v7 project without affecting its functionality删除 appcompat_v7 项目而不影响其功能
【发布时间】:2014-09-09 22:11:10
【问题描述】:

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

  1. appcompat_v7
  2. MasterCopy

我了解 appcompat_v7 是 android 自动为我创建的库项目。

创建上述项目后,我收到一条错误消息“容器 'Android 依赖项' 引用不存在的库”。为了解决这个问题,我只构建了 appcompat_v7 项目并清除了错误。

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

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

有没有一种方法可以将 appcompat 作为外部库或 JAR 文件添加到 MasterCopy 项目中,并在不丢失功能的情况下保留一个项目?

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

【问题讨论】:

    标签: android eclipse


    【解决方案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

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

    (不推荐)解决方案

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

    不过,每次您想要更新所使用的兼容性库的版本时,您都必须经历这个过程。

    (好)替代解决方案

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

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2019-09-06
      • 2017-03-13
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多