gpt4 book ai didi

android - res/中无法识别目录的 build.xml 错误

转载 作者:行者123 更新时间:2023-11-30 04:25:33 24 4
gpt4 key购买 nike

我正在尝试使用 JNI 将现有的 C++ 应用程序移植到 android。但是,在从 AndroidManifest.xml 生成 Build.xml 文件并尝试使用它进行构建后,我得到以下(相关)输出:

[aapt] Generating resource IDs...
[aapt] invalid resource directory name: /{Project Directory}/res/audio
[aapt] invalid resource directory name: /{Project Directory}/res/img

BUILD FAILED
/{Android SDK Dir}/tools/ant/build.xml:560: The following error occurred while executing this line:
/{Android SDK Dir}/tools/ant/build.xml:589: null returned: 1

这些是巧合地命名为“res”的目录中的现有目录,并不意味着具有 Java 的语义含义。如果我从 res/中删除它们,那么它就会构建得很好。所以我的问题是——什么是最好的组织方式(或者告诉 ant 忽略无法识别的目录)? res已经是一个非常大的目录结构,主要有.png .mp3和文本文件。

最佳答案

如果出于某种原因无法重命名它们,您可以覆盖 build.xml 中的 -package-resources 并自定义 aapt,为 res/指定一个新位置以及各种其他选项来处理可能出现的问题(那么aapt就是要研究的部分)。

您可以检查 android-sdk/tools/ant/build.xml 以了解该目标已经执行的操作,但基本上您只需将以下内容粘贴到您自己的 build.xml 中

<target name="-package-resources">
<echo>Packaging resources</echo>
<aapt executable="${aapt}"
command="package"
verbose="${verbose}"
versioncode="${version.code}"
manifest="AndroidManifest.xml"
assets="${asset.absolute.dir}"
androidjar="${android.jar}"
apkfolder="${out.absolute.dir}"
resourcefilename="${resource.package.file.name}"
projectLibrariesResName="${project.libraries.res}"
projectLibrariesPackageName="${project.libraries.package}"
resourcefilter="${aapt.resource.filter}">

<res path="${resource.absolute.dir}"/>
</aapt>
</target>

并根据您的需要进行定制。

还要注意它从 resource.absolute.dir 中提取 res 路径,所以如果这就是你真正需要做的,那么你可以在 ant.properties 中设置它,或者 sdk 工具中的任何默认属性文件都是你正在使用。只需检查 build.xml 即可查看或添加指向您自己的新 loadproperties 行。 IIRC,resource.absolute.dir 是基于 resource.dir 设置的,所以你可能必须尝试每一个,但在你只需要设置的属性文件中

resource.dir=new/path/to/res

关于android - res/中无法识别目录的 build.xml 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com