android - 如何正确定义 v7 appcompat 依赖?

标签 android ant android-support-library android-build

我正在尝试构建一个(继承的)Android 项目。我正在使用 Ant & command line tools (和想法)。

在styles.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

所以现在这条路径应该是正确的。但是现在当我运行 ant debug 时:

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 安装如下所示:

enter image description here

最佳答案

As Jay indicated ,只有相对路径才能在 Unix/Mac 上工作。

为了让 Ant 构建正常工作,我还需要 generate build.xml 对于 appcompat 项目,使用命令 android update project -p <dir> ,就我而言:

/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

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


我只是宣传了我的 comment从 6 个月前到有人建议的答案。

顺便说一下,既然我实际上对 Android 开发有所了解,我会敦促任何有机会放弃 Ant 并研究 new Gradle-based build system 的人。这在比较中是非常甜蜜的。它是 CI 友好的,可以很容易地自动化有用的东西(比如为不同的构建类型使用不同的包名称和应用程序图标)。 Stack Overflow will help当你遇到问题时。

在 Gradle 中使用支持库,您将跳过所有上述麻烦和 simply do :

dependencies {
    compile "com.android.support:appcompat-v7:18.0.+"
}

关于android - 如何正确定义 v7 appcompat 依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209041/

相关文章:

java - junit日志杂乱,为什么会重复语句?

android - Android Studio:Gradle Sync的v4支持库失败

android - Android注解中Main Thread、Ui Thread、WorkerThread、Binder Thread的区别

android - 在带有 Windows 的 Android NDK 中使用 Boost

android - 透明状态栏(带可见导航栏)

Android 录屏但只有特定的 'layers'/views

android - NavigationView 和 ActionBarDrawerToggle

java - 启动画面后应用程序崩溃

java - 如何使用 Java 运行时执行文件

android - 如何让 Ant 忽略(某些)可绘制目录