aapt basename属性

时间:2011-01-22 01:48:55

标签: android ant aapt

我将SDK升级到2.3,我的构建脚本开始失败。我收到了这个错误:

build.xml:363:aaptexec不支持“basename”属性

对于构建脚本中的以下行:

<aapt executable="${aapt}" command="package" manifest="AndroidManifest.xml" resources="${resource.absolute.dir}" assets="${asset.absolute.dir}" androidjar="${android.jar}" outfolder="${out.absolute.dir}" basename="${ant.project.name}" />

我不知道aapt中发生了什么变化,但显然基本名称已经不存在了。你能告诉我应该用什么吗?

1 个答案:

答案 0 :(得分:1)

当从2.1升级到2.3时,我遇到了类似的问题,其中符号名称在内置的'rules'xmls中发生了变化。 2.1似乎使用了ant_rules_3.xml,现在SDK 2.3使用main_rules.xml作为起点。如果像我一样,您已根据规则文件中的目标自定义了build.xml,则可能会发现通过创建示例项目可以更轻松地重新开始,如下所述:link text

然后调整build.xml以覆盖main_rules.xml中列出的部分或全部目标。 (这是在sdk \ tools \ ant文件夹中)。我发现这个过程相当快,对于简单的项目,生成的文件与Ant一起“开箱即用”。 (我必须为包含第二个包含.aidl文件的源文件夹的项目更改build.xml,因为main_rules.xml无法处理它)

在main_rules.xml中有两个引用aapt的目标,可能是你需要模仿的那个:

<target name="-package-resources">
    <echo>Packaging resources</echo>
    <aapt executable="${aapt}"
        command="package"
        versioncode="${version.code}"
        debug="${build.packaging.debug}"
        manifest="AndroidManifest.xml"
        assets="${asset.absolute.dir}"
        androidjar="${android.jar}"
        apkfolder="${out.absolute.dir}"
        resourcefilename="${resource.package.file.name}"
        resourcefilter="${aapt.resource.filter}">
    <res path="${resource.absolute.dir}" />
    <!-- <nocompress /> forces no compression on any files in assets or res/raw -->
    <!-- <nocompress extension="xml" /> forces no compression on specific file   extensions in assets and res/raw -->
    </aapt>
</target>

我认为resourcefilename是生成的apk的名称。我的构建脚本生成apks并将它们放在bin目录中,没有我明确命名resourcefilename。 我的build.properties看起来像:

#-----------------------------------------------
# The ONLY reference to the project's main base
#
projectname=MapProject1.2
#
#-----------------------------------------------

workspace.dir=/dev/projects/EclipseHelios/AndroidWorkspace
ant.project.name=${projectname}
outbasebase.dir=/dev/projects/AntBuilds
base.dir=${workspace.dir}/${projectname}
common_src=/dev/projects/CommonSource121210/GridSeviceAndUseGridService
source.dir=${base.dir}/src
outbase.dir=${outbasebase.dir}/${projectname}

out.dir=${outbase.dir}/bin
key.store=c:/users/me/my-release-key.keystore
key.alias=release_alias
key.store.password=*************
key.alias.password=*************
layout.dir=${base.dir}/res/layout

(当然除了密码!)

我在buid.xml中注释掉了projectname,因此它会从build.properties中取出它。