android - AndroidManifest.xml 的不同位置

标签 android ant android-manifest manifest

我有一个 Android 项目的自定义构建链。 有一个 build.xml 和 build.properties。 build.properties 包含这一行:

manifest.file =${env.WORK_FOLDER}/AndroidManifest.xml

并且 WORK_FOLDER 已正确设置为 proj_root_work

布局如下:

proj_root-_work [DIR] (some stuff gets preprocessed and all finally copied here - src, res, assets and the AndroidManifest.xml)
         -build.xml 
         -build.properties

然后我从 proj_root 为我的构建配置调用 ant 并且它提示找不到 AndroidManifest.xml。当我把它放在我的 proj_root 中时,它起作用了, 但我真的想要它在我的 _Work 目录中。 我读到该文件必须位于根目录中,那么 build.properties 条目的意义何在? 我还看到了 aapt.exe 的一些自定义参数 ...

欢迎任何提示,thx

最佳答案

您可以通过使用在构建期间提供给 aapt 的定义,例如“app_manifest”,向 ant 发出使用备用 AndroidManifest.xml 位置的指令:

ant -Dapp_manifest=_Work/AndroidManifest.xml

然后,将以下 block 添加到 build.xml 中:

    <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="${app_manifest}"
                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}" />
            <!-- <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>
    </do-only-if-not-library>
</target>

这会将“app_manifest”解析为您提供的任何内容。

关于android - AndroidManifest.xml 的不同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419582/

相关文章:

android - 如何在不使用渲染脚本的情况下模糊图像的特定部分,因为我的 minsdk 是 14。

java - Android 中将首先处理哪些代码?

eclipse - 如何更改 tomcat ${appserver.lib} 指向的内容?

Java 异常堆栈被抑制 - 如何打印出整个堆栈?

android - 使我的应用不适用于平板电脑

android - 是否可以重用部分 AndroidManifest.xml 文件?

android - 即使在设置 launchMode ="singleTop"后也会重新创建 Activity

android - 在 Android VideoView 中播放没有 RTSP 的 RTP 流

java - Android:如何创建空 Realm 对象?

android - 尝试在 Android 上运行 Cocos2d-JS 项目时出错