Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Android库项目自定义Ant构建_Android_Ant_Android Library_Android Build - Fatal编程技术网

Android库项目自定义Ant构建

Android库项目自定义Ant构建,android,ant,android-library,android-build,Android,Ant,Android Library,Android Build,我有一个库项目,作为许多其他项目的后端。它做网络连接和解析等。然后我有其他前端项目,建立在这个基础上。 对于开发和服务器环境,我编写了一个ANT构建脚本,它根据构建类型替换代码中的某些值。 所以我有两个目标buildDev和buildProd 在构建相关(非库项目)时,是否有方法正确设置值。例如,如果我对项目执行ant debug,它将使用ant buildDev构建后端,如果执行ant release它将使用ant buildProd进行构建 我很确定这是不可能的,那么有什么选择呢 出于好奇,

我有一个库项目,作为许多其他项目的后端。它做网络连接和解析等。然后我有其他前端项目,建立在这个基础上。 对于开发和服务器环境,我编写了一个ANT构建脚本,它根据构建类型替换代码中的某些值。 所以我有两个目标
buildDev
buildProd

在构建相关(非库项目)时,是否有方法正确设置值。例如,如果我对项目执行
ant debug
,它将使用
ant buildDev
构建后端,如果执行
ant release
它将使用
ant buildProd
进行构建

我很确定这是不可能的,那么有什么选择呢


出于好奇,自定义构建只是替换了一个文件,该文件包含根据构建类型分配不同值的静态变量。没有什么太复杂。

在ant中,有各种不同的任务可用于编辑文件中的属性

我相信您知道属性文件,因此如果您使用此处的文档:

这可能对你有帮助

如果在ant样式的属性文件中设置变量,那么对于某些构建,可以为单独的构建设置单独的文件,从而正确设置变量

如果要在源代码中设置变量,请尝试复制任务:

复制任务上的筛选器链将允许您替换文件中的某些代码行。因此,如果您有一个名为server_ip或类似的变量,您可以使用filterchain来更改该值,并将源文件重新复制回树中


我希望这能回答你的问题。如果不是,就要温柔。我在回答问题方面有点生疏,我对安卓系统的帖子有点厌倦了。哈哈。

我找到了解决办法。默认的Android Ant
build.xml
在调用子库项目脚本时将发布名称传递给该脚本。下面的行和下面的代码详细介绍了它

<!-- figure out which target must be used to build the library projects.
If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
<condition property="project.libraries.target" value="instrument" else="${build.target}">
    <istrue value="${build.is.instrumented}" />
</condition>


然后就是在所有相互依赖的项目中都有相同的目标。

我在提出解决方案时找到了解决方案。谢谢你的帮助。