我正在尝试构建一个(继承的)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 安装如下所示:
最佳答案
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/