我有一个使用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 build文件中的某处定义它? 任何形式的帮助将不胜感激。
答案 0 :(得分:2)
扩展Mads的答案,你可以在随后加载的属性文件中使用环境变量,首先在build.xml文件中加载带有<property environment="env"/>
元素的环境变量,然后从local.properties或project加载的.properties。在此之后,您可以按以下方式在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.properties 和 project.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
由于local.properties首先在build.xml文件中加载,因此可以使用${...}
表示法在project.properties中引用其中定义的属性。
答案 1 :(得分:0)
如果您将 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}" />