gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:39:23 24 4
gpt4 key购买 nike

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

  1. appcompat_v7
  2. MasterCopy <- 这是我的项目的名称

我知道 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 项目中,并在不丢失功能的情况下保持一个项目完整?

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

最佳答案

说明

您将遇到的问题是资源,例如 Theme.AppCompat.Light.DarkActionBar 这样的样式,不能简单地打包成一个jar文件。正如 Google 的文档所解释的那样:

Some Support Libraries contain resources beyond compiled code classes, such as images or XML files. For example, the v7 appcompat and v7 gridlayout libraries include resources.

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.xmlstrings-appcompat.xml ,当然还有 appcompat jar 文件本身。

同样,每次您想要更新您使用的兼容性库的版本时,您都必须执行此过程。

(好)替代解决方案

Google 专门创建了 AAR格式,它将资源与 jar 文件 bundle 在一起。如果您过渡到 Gradle 构建系统(如果您使用的是 Android Studio,则很容易),那么您所要做的就是引用此 app-compat-v7 aar Artifact (也在上面的链接中进行了解释),并且您可以维护单个项目。

关于android - 删除 appcompat_v7 项目而不影响其功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com