当前位置: 首页 > 知识库问答 >
问题:

如何正确定义v7 appcompat依赖关系?

蓝华皓
2023-03-14

我正在尝试构建一个(继承的)Android项目。我正在使用Ant

在样式.xml中,存在无法解析的引用,例如:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">

这是我遇到的最初错误:

[...]/res/values/styles.xml:8: error: Error retrieving parent for item:
No resource found that matches the given name '@style/Theme.AppCompat.Light'.

然后我注意到project.properties有这个appcompat引用,它在我的(OS X)机器上被破坏了:

target=android-18
android.library.reference.1=../../../../adt-bundle-linux-x86_64/sdk/extras/android/support/v7/appcompat

我试图通过相对于${sdk.dir}的引用来解决这个问题:

android.library.reference.1=${sdk.dir}/extras/android/support/v7/appcompat

所以现在这条路应该是正确的。但是现在当我运行蚂蚁调试时

BUILD FAILED
/opt/android-sdk-macosx/tools/ant/build.xml:573: 
  /opt/android-sdk-macosx/extras/android/support/v7/appcompat resolve to a 
  path with no project.properties file for project /Users/joka/devel/project/

有什么想法吗?构建这个项目最简单的方法是什么?

(请注意,针对ecplise的建议对我没用。)

编辑:Android SDK安装如下:

共有3个答案

谢善
2023-03-14

您的路径似乎是错误的(您缺少了“兼容性”部分)。v7 appcompat库位于

{sdkpath}/extras/android/compatibility/v7/appcompat

对于我(SDK 工具版本 22.0.5 在 Max OS X 10.7.5 上)

阎佑运
2023-03-14

我遇到了同样的问题,所以我尝试使用相对路径,这为我解决了这个问题。看起来只有相对路径才能与android.library.reference一起使用。我做了一个快速搜索来验证这一点,并遇到了这个stackoverflow链接,它表明绝对路径可以在Windows上使用android.library.reference,但在Unix或Mac上则不然。

和平。

施俊远
2023-03-14

正如Jay所指出的,只有相对路径才能在Unix/Mac上工作。

为了让Ant构建工作,我还需要使用命令< code>android update project -p为appcompat项目生成< code>build.xml

/opt/android-sdk-macosx/tools/android update project 
    -p /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat

我的确切配置是:

android.library.reference.1=../../../opt/android sdk macosx/extras/‌​android/support/v7/appcompat

(这也适用于<code>local.properties</code>中,我认为这是一个更好的地方,因为相同的路径不适用于所有开发人员。)

我只是将6个月前的评论提升为某人建议的答案。

顺便说一句,现在我对Android开发有所了解,我会敦促任何有机会放弃Ant并研究新的基于Gradle的构建系统的人,这在comprarison中是完全甜蜜的。它是CI友好的,可以很容易地自动执行有用的事情(比如为不同的构建类型使用不同的包名称和应用程序图标)。堆栈溢出将在您遇到问题时提供帮助。

使用Gradle的支持库,您可以跳过上述所有麻烦,只需执行以下操作:

dependencies {
    compile "com.android.support:appcompat-v7:18.0.+"
}
 类似资料:
  • 我想知道下面是否可行以及如何实现。 我正在学习Spring boot的教程,其中提到我们可以有一个父依赖项。 然后定义没有版本号的依赖项。 这将在项目依赖项中添加依赖项版本1.5.6。释放sping-boot-starter和sping-boot-starter-web。 就像那样,我想找到什么是<代码> Spring-上下文 spring-jdbc Spring测试 谢谢!

  • 我有一些代码,其中多个方法使用键盘,并在主方法中连续调用。我正在做的练习特别要求使用4种不同的方法,所以我不能把它们放在一起。最初,我用键盘。在每个方法的末尾关闭(),但当第二个方法运行时,无论调用顺序如何,这都会导致NoTouchElementException。通过卸下键盘。close(),代码现在可以工作了,但是我现在收到了资源泄漏的警告,因为键盘没有关闭。有人能告诉我一种关闭输入而不出错的

  • 我试图为其他gradle项目使用的自定义gradle插件构建一个jar。我使用java编写插件。我有一个问题,包括我的jar中的依赖项。如果我使用下面的代码构建jarbuild.gradle 在一个项目中应用插件时,我得到了一个针对guava类的NoClassDefFound异常。如果我在 它表示未找到Id为“my Plugin”的。如何在gradle插件jar中包含依赖项?

  • 详细信息:IntelliJ 13.1.2,Gradle 1.11

  • 问题内容: 我对使用Spring将对象注入到类中有疑问。我在项目中使用了以下代码: 然后通常在以下方法上使用它: 否则,我在Spring示例中发现了注入构造函数的情况: 所以两者都正确吗?还是每个都有其属性和用法? 问题答案: tl; dr-构造函数注入是执行DI的最佳方法 后者是正确的,并不是因为Spring或任何依赖注入容器,而是面向对象的类设计原则。 细节 应该设计一种类型,以便您只能根据其