Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在project.properties中设置生成路径_Java_Android_Eclipse_Ant_Build - Fatal编程技术网

Java 在project.properties中设置生成路径

Java 在project.properties中设置生成路径,java,android,eclipse,ant,build,Java,Android,Eclipse,Ant,Build,我有一个android项目,它使用ant(ant debug/release)生成应用程序可执行文件。已从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-201305

我有一个android项目,它使用ant(ant debug/release)生成应用程序可执行文件。已从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构建文件的某个地方定义它吗?
非常感谢您提供的任何帮助。

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

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

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

例如:

<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}" />

根据Mads的答案展开,在从local.properties或project.properties加载之前,先用build.xml文件中的
元素加载环境变量,然后在随后加载的属性文件中使用环境变量。在此之后,可以以下列方式在project.properties中使用环境变量:

android.library.reference.1=${env.COCOS_HOME}/cocos2dx/platform/android/java
假设COCOS_HOME是一个环境变量

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

我认为有一种更简洁的方法来解决特定于环境的路径问题,该方法使用local.properties文件

只需在project.properties旁边创建一个local.properties文件(如果它还不存在),并在那里定义特定于机器的路径。例如,以下是我的本地.properties项目.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
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
项目属性

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
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中引用其中定义的属性。

您的意思是,我必须在build.xml中定义一个属性,并且可以像${env.COCOS_HOME}这样访问它吗?我试过了,但没有成功,只有相对路径有效。在理解你的答案时有什么地方出错了吗?是的,你会这样引用它。此外,在加载属性文件之前,请确保已在属性任务中加载环境变量。另外,尝试使用echo任务查看/验证设置的值。我发现了一件有趣的事情。如果我将/Users/bc/…/cocos2dx/platform/android/java这样的完整路径放在project.properties中,它不会识别,但相对路径可以正常工作。