如何正确定义v7 appcompat依赖?

Jon*_*nik 14 ant android android-build android-support-library

我正在尝试构建一个(继承的)Android项目.我正在使用Ant和命令行工具(和IDEA).

在styles.xml中,有些引用无法解析,例如:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
Run Code Online (Sandbox Code Playgroud)

这是我遇到的原始错误:

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

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

target=android-18
android.library.reference.1=../../../../adt-bundle-linux-x86_64/sdk/extras/android/support/v7/appcompat
Run Code Online (Sandbox Code Playgroud)

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

android.library.reference.1=${sdk.dir}/extras/android/support/v7/appcompat
Run Code Online (Sandbox Code Playgroud)

所以现在这条道路应该是正确的.但是现在我跑的时候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/
Run Code Online (Sandbox Code Playgroud)

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

(请注意,Ecplise特定的建议对我没用.)

编辑:Android SDK安装如下所示:

在此输入图像描述

Jon*_*nik 9

正如Jay指出的那样,只有相对路径才能在Unix/Mac上运行.

为了使Ant构建起作用,我还需要在我的情况下使用命令为appcompat项目生成build.xml :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
Run Code Online (Sandbox Code Playgroud)

我的确切配置是:

android.library.reference.1=../../../../../../../opt/android-sdk-macosx/extras/??android/support/v7/appcompat

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


我只是将我的评论从6个月前提升为有人建议的答案.

顺便说一下,既然我实际上对Android开发有所了解,我会敦促任何有机会抛弃Ant的人,并研究一下新的基于Gradle的构建系统,这种构建系统非常甜蜜.它具有CI友好性,可以轻松实现有用的自动化(例如,为不同的构建类型使用不同的包名称和应用程序图标).遇到问题时,Stack Overflow会有所帮助.

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

dependencies {
    compile "com.android.support:appcompat-v7:18.0.+"
}
Run Code Online (Sandbox Code Playgroud)


小智 6

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

和平.

  • (另外,为了使Ant构建起作用,我需要为appcompat项目[生成build.xml](http://stackoverflow.com/a/15718940/56285),使用`/ opt/android-sdk-macosx/tools/android更新项目-p/opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat`.) (9认同)