【问题标题】:If I use new " V7 Appcompat library ", do I still need " V4 Support Library " for a minimum SDK = 7?如果我使用新的“V7 Appcompat 库”,我是否还需要“V4 支持库”以获得最低 SDK = 7?
【发布时间】:2013-08-06 15:50:03
【问题描述】:

我正在从 Action Bar Sherlock 迁移到 Action Bar compat。我删除了 ABS,并且里面有 support-v4-google 地图,但出现了错误。我现在直接把v4加到项目里看看能不能解决,不过我想知道:

如果库是多余的还是互补的,我并不能从文档中真正理解?

感谢您的建议、指点等。

编辑:这是使我使用“外部 jar...”添加 v4 的错误,它解决了它。

The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved. 
It is indirectly referenced from required .class files

但是如果你说如果已经有 v7 我不应该添加 v4,我该如何向 Eclipse 解释它?

相关帖子,解决方案是在此处添加 v4。 The hierarchy of the type activity is inconsistent when extending ActionBarActivity

编辑 2:如果按照以下步骤逐点完成,v4 jar 将包含在 v7 库项目中:http://developer.android.com/tools/support-library/setup.html#add-library 我的设置是:

  • Android 4.3:未选中
  • Aprivate Lib:未选中
  • v7-app.../src:已检查
  • v7-app.../gen : 检查
  • 依赖关系:未选中
  • 原始 v7 jar:检查
  • 原始 v4 jar:检查

【问题讨论】:

    标签: android android-support-library android-appcompat


    【解决方案1】:

    v7 包含 v4 支持库,因此无需再次添加它

    如果您查看 v7 支持库的 libs 文件夹,您会看到库中已经引用了 v4 jar

    【讨论】:

    • 所以当我有一个错误要求 v4 类时,我解决了再次添加 v4 库它是无用的,我应该去每个错误并让对象将其依赖关系更改为 android v7 ?那么为什么这两个库之间有区别,而不仅仅是一个呢?
    • 您确定您正确导入了 v7 库吗? v7 是一个库项目,这意味着它具有与事物相关的资源,因此您不能只复制听起来像您所做的 jar 文件。如果您查看支持库所在的 SDK,您会看到 v7 包含 v4 jar 文件,因此当您导入 v7 时,您也拥有 v4
    • 我按照文档导入它,但你是对的,我可能未能检查“订单和导出”。我有: Android 4.3:未选中 Aprivate Lib:未选中 v7-app.../src:已选中 v7-app.../gen:已选中 ADependencie:未选中 raw v7 jar:查看 raww v4 jar:查看你有什么?为什么文档要求取消选中 Dependencies 但检查 jars ?我们不检查 Android 4.3,因为它是一个库项目,对吧? (天哪,我有这么多问题!)
    • 太棒了!它似乎工作:) 如果你有时间,我仍然很乐意学习更多
    • 这里stackoverflow.com/questions/18271429/… 他们说如果我理解正确的话,你需要同时包含两者
    【解决方案2】:

    V7 是android-support 库的新版本,只是在V4 支持库的V7 中实现的一些新东西。所以 v4 的 all 方法和类在 v7 中都是可用的。

    所以如果你添加 v7 库,则无需添加 v4 库。

    【讨论】:

    • 说V7依赖并引用V4会更准确。 V7 不会取代 V4。
    • V7 不是 V4 的替代品,而是依赖于 V4 developer.android.com/tools/support-library/features.html 注意:这个库(V7)依赖于 v4 支持库。如果您使用的是 Ant 或 Eclipse,请确保将 v4 支持库作为该库的类路径的一部分。
    • widget.DrawerLayout 怎么样?我应该如何在没有 v4 的情况下导入这个包?
    【解决方案3】:

    如果您使用的是 Android Studio,则包含 v7 支持库的默认方式是在 build.gradle 文件中定义的 maven 依赖项。

    dependencies {
        compile 'com.android.support:appcompat-v7:18.0.0'
    }
    

    appcompat-v7 .aar 文件不包含 v4 类。您可以通过查看您的 build/exploded-bundles/ComAndroidSupportAppcompatV71800.aar 文件夹来查看这一点。我发现如果您创建一个新项目,它还将包含 SDK 文件夹中 v4 的 .jar 文件。

    【讨论】:

      【解决方案4】:

      在我的情况下(Eclipse),这取决于您在项目中导入的 v4 和 v7 jar。

      我的建议是同时使用此文件夹中存在的文件 jar: C:\adt-bundle-windows-x86_64-aaaammgg\sdk\extras\android\support\v7\appcompat\libs

      【讨论】:

        【解决方案5】:

        就我而言,当我在 Eclipse 中使用 public class MainActivity extends AppCompatActivity 时,单独使用“android-support-v7-appcompat.jar”是不够的。我还需要添加android-support-v4.jar(构建路径-> 库-> 添加 JAR)。只有AppCompatActivity 才被接受。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-04
          • 2015-05-16
          • 1970-01-01
          • 2014-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-20
          相关资源
          最近更新 更多