5

我想${sdk.dir}在我的 project.properties 文件中使用该变量,因此我可以将其签入版本控制并在不同的安装机器上使用相同的文件。

我的工作设置如下所示:

我的project.properties

target=android-18
android.library.reference.1=..\\..\\..\\sdk\\extras\\android\\support\\v7\\appcompat
android.library.reference.2=..\\..\\..\\sdk\\extras\\google\\google_play_services\\libproject\\google-play-services_lib

我的local.properties

sdk.dir=C:\\adt-bundle-windows-x86_64-20130917\\sdk

此设置使用 ant 从命令行编译。但是当我替换为时..\\..\\..\\${sdk.dir}我得到了错误:

project.properties我希望它如何使用:

target=android-18
android.library.reference.1=${sdk.dir}\\extras\\android\\support\\v7\\appcompat
android.library.reference.2=${sdk.dir}\\extras\\google\\google_play_services\\libproject\\google-play-services_lib

结果是:

BUILD FAILED
C:\adt-bundle-windows-x86_64-20130917\sdk\tools\ant\build.xml:460:
Failed to resolve library path:
C:\adt-bundle-windows-x86_64-20130917\sdk\extras\android\support\v7\appcompat

所以变量${sdk.dir}被正确替换,但不知何故无法解决。有任何想法吗?

更新编辑

在同一文件 ( ) 中使用 proGuard 设置的变量可以project.properties正常工作:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
4

1 回答 1

2

这本身并不能解决您的问题,但我希望它会对您有所帮助。

我的问题是我需要在我的项目中引用 Google Play Services SDK 作为库。但是,我们的应用程序是使用 Ant 自动构建在一个单独的盒子上的。

发现不能使用绝对路径引用库项目;它们必须与您的项目相关,如下所述

图书馆项目存放地点

只要应用程序项目可以通过相对链接引用库项目,就应该在哪里存储库项目相对于依赖的应用程序项目没有具体要求。重要的是主项目可以通过相对链接引用库项目。

我使用该ant.properties文件来设置android.library.reference.1=../../../../Program Files/Android/android-sdk/Android/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib库。此参考仅适用于构建服务器,并且此路径相对于构建服务器上的库位置。

对于开发,我使用 Eclipse。因此,库的相对路径是使用project.properties文件引用的,并且是相对于我的开发框的。这意味着每当我在服务器(使用 Ant)上触发构建时,都会使用中的引用ant.properties而不是project.properties文件。

ant.properties文件是较低级别的,因此将覆盖project.properties/local.properties文件中写入的任何内容。

正如您所看到的,这不是我确定您正在寻找的答案,但它是 Ant 的一个限制。我的最后一点建议是远离 Ant 并使用Gradle

于 2013-11-25T17:49:49.553 回答