【问题标题】:Setting build path in project.properties在 project.properties 中设置构建路径
【发布时间】:2014-02-04 04:33:49
【问题描述】:

我有一个使用 ant (ant debug/release) 构建的 android 项目来生成应用程序可执行文件。依赖项目路径已从 project.properties 设置如下:

android.library.reference.1=../../../backup/cocos2d-x-2.2.1/cocos2dx/platform/android/java

android.library.reference.2=../../../backup/adt-bundle-mac-x86_64-20130522/sdk/extras/google/google_play_services/libproject/google-play-services_lib

但是路径是相对于我的系统的。我想用一些环境变量修改路径,例如:

android.library.reference.1=$COCOS_HOME/cocos2dx/platform/android/java

但它不起作用。 我是否必须在 ant 构建文件中的某个地方定义它? 任何形式的帮助将不胜感激。

【问题讨论】:

    标签: java android eclipse ant build


    【解决方案1】:

    扩展 Mads 的答案,您可以在随后加载的属性文件中使用环境变量,方法是在从 local.properties 或 project.properties 加载之前先在 build.xml 文件中加载带有 <property environment="env"/> 元素的环境变量。之后,您可以通过以下方式在 project.properties 中使用环境变量:

    android.library.reference.1=${env.COCOS_HOME}/cocos2dx/platform/android/java
    

    假设 COCOS_HOME 是一个环境变量。

    奇怪的是,库引用路径似乎只允许我的 Windows 系统上的相对路径(*nixes 呢?),所以我的环境变量 COCOS2DX_ROOT='D:\softwares\ANDROID\cocos2d-x-2.2' 不起作用。

    我认为有一种更简洁的方法可以解决环境特定路径的问题,并且这种方法使用 local.properties 文件。

    只需在 project.properties 旁边创建一个 local.properties 文件(如果它不存在),并在那里定义机器特定的路径。例如,以下是我的 local.propertiesproject.properties 文件的内容:

    local.properties

    COCOS2DX_ROOT_RELATIVE=../../../cocos2d-x-2.2
    ANDROID_ROOT_RELATIVE=../../../adt-bundle-windows-x86-20131030/sdk
    # location of the SDK. This is only used by Ant
    # For customization when using a Version Control System, please read the
    # header note.
    sdk.dir=D:\\softwares\\ANDROID\\adt-bundle-windows-x86-20131030\\sdk
    

    project.properties

    android.library.reference.1=${COCOS2DX_ROOT_RELATIVE}/cocos2dx/platform/android/java
    android.library.reference.2=${ANDROID_ROOT_RELATIVE}/extras/google/google_play_services/libproject/google-play-services_lib
    

    由于首先在 build.xml 文件中加载 local.properties,因此可以在 project.properties 中使用 ${...} 表示法引用其中定义的属性。

    【讨论】:

      【解决方案2】:

      如果您将COCOS_HOME定义为环境变量,则可以使用property task和环境属性加载环境变量。

      通过设置 environment 属性和要使用的前缀。 将为每个环境变量定义属性 将提供的名称和句点作为变量名称的前缀。

      您需要确保在加载属性文件之前加载环境变量,以便将属性文件中的属性引用扩展为具有属性的值。

      例如:

      <property environment="env"/>
      <echo message="COCOS_HOME is set to = ${env.COCOS_HOME}"/>
      <property file="android.properties"/>
      <echo message="android.library.reference.1 is set to = ${android.library.reference.1}" />
      

      【讨论】:

      • 你的意思是,我必须在 build.xml 中定义一个属性并且可以像 ${env.COCOS_HOME} 一样访问?我试过了,它没有用,只有相对路径有效。理解您的答案是否有问题?
      • 是的,这就是您引用它的方式。此外,请确保在加载属性文件之前已在属性任务中加载了环境变量。另外,尝试使用 echo 任务来查看/验证设置的值。
      • 我发现了一件有趣的事情。如果我将 /Users/bc/..../cocos2dx/platform/android/java 之类的完整路径放在 project.properties 中,它不会识别,但相对路径可以正常工作。
      猜你喜欢
      • 2011-09-19
      • 2023-03-04
      • 2020-10-04
      • 2011-01-25
      • 2012-08-03
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      相关资源
      最近更新 更多