构建android apk时如何将参数传递给aapt?
我正在Linux上使用ant构建一个apk(不使用Eclipse),我正在尝试找到一种在压缩资产和不压缩资产之间切换的简单方法,以便将我庞大的数据库解压缩到<2.3。根据本文: 我发现可以通过指定类似于构建android apk时如何将参数传递给aapt?,android,ant,assets,aapt,Android,Ant,Assets,Aapt,我正在Linux上使用ant构建一个apk(不使用Eclipse),我正在尝试找到一种在压缩资产和不压缩资产之间切换的简单方法,以便将我庞大的数据库解压缩到
aapt-0db
的内容来实现这一点,但我找不到有关如何编辑ant与aapt交互方式的信息。还是我必须自己运行aapt?我该怎么做?是Android的build.xml(您可以在SDK、工具和ant中找到)在构建时执行AAPT
找到build.xml并用下面的目标替换“-package resources”目标。我很确定(目前无法测试)在使用ANT构建时,您可以使用“-Dcompression.disabled=set”或.properties文件中的“compression.disabled=set”打开或关闭压缩
<target name="-package-resources" depends="-crunch">
<!-- only package resources if *not* a library project -->
<do-only-if-not-library elseText="Library project: do not package resources..." >
<aapt executable="${aapt}"
command="package"
versioncode="${version.code}"
versionname="${version.name}"
debug="${build.is.packaging.debug}"
manifest="AndroidManifest.xml"
assets="${asset.absolute.dir}"
androidjar="${android.jar}"
apkfolder="${out.absolute.dir}"
nocrunch="${build.packaging.nocrunch}"
resourcefilename="${resource.package.file.name}"
resourcefilter="${aapt.resource.filter}"
projectLibrariesResName="project.libraries.res"
projectLibrariesPackageName="project.libraries.package"
previousBuildType="${build.last.target}"
buildType="${build.target}">
<res path="${out.res.absolute.dir}" />
<res path="${resource.absolute.dir}" />
<if>
<condition>
<isset property="compression.disabled" />
</condition>
<then>
<nocompress/>
</then>
</if>
</aapt>
</do-only-if-not-library>
</target>
谢谢;我并没有走这条路,因为这会让apk变得巨大,但我很高兴知道答案。好吧!通过向nocompress元素添加一个扩展属性,也可以按文件类型设置
有人找到了不修改android sdk内部文件的方法吗?你不会修改android sdk内部文件-而是在你自己的项目中将规则添加到build.xml文件中感谢Sveinung Kval Bakken的回答,但对于像我这样不熟悉ant的人来说,这还不够。对于其他人:您希望从android_sdk_dir/tools/ant/build.xml复制…
,并将其粘贴到项目目录中
之前的build.xml中,然后修改显示
的行,请参阅项目build.xml末尾的注释以获取指导。