在Project.properties中使用$ {sdk.dir}构建Android Ant

时间:2013-10-29 14:58:08

标签: android ant

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

我的工作设置如下:

我的 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}被正确替换但不知何故无法解析。有什么想法吗?

更新修改

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

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

1 个答案:

答案 0 :(得分:2)

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

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

我发现无法使用绝对路径引用库项目;它们必须与您的项目相关,如here所述:

  

图书馆项目存储位置

     

只要应用程序项目可以通过相对链接引用库项目,就应该相对于依赖的应用程序项目存储库项目的位置没有特定要求。重要的是主项目可以通过相对链接引用库项目。

我使用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