android - 构建时 android 项目的自动 Javadoc

标签 android javadoc

我想在每次构建时为库项目启用自动 Javadoc 生成。我有 3 个问题要解决:

  1. 如何在 IDE 的构建过程中集成这样一个自动化脚本? (Eclipse 和 IDEA)。

  2. 如何从文档中排除自动生成的 RBuild 类 处理,因为它们总是在源的下生成 命名空间。

  3. 将 Javadoc 打包并放置在构建 jar 文件旁边。

这个问题有点宽泛,但我相信在一个地方提供一个好的统一答案会为很多人省去麻烦。

最佳答案

两种方式:

  • 使用 Maven:Maven 很棒,并且也支持 android 构建。但是仍然使用默认的 android 结构,一切都不像默认的 Ant 构建那样轻松。我希望将来 Google 引入 Maven 结构。
  • 好旧的 Apache Ant:默认的 ant 构建文件位于 sdk_path/tools/ant/build.xml,这是导入到项目的 build xml。因此,可以为一些额外的工作添加自定义目标。最好将它们放在项目根目录下的 custom_rules.xml 文件中,然后导入到项目的 build.xml 中。

custom_rules.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="help">

    <!-- IDE produces default jar as: out/production/classes.jar ,
    so we define a custom target to rename the jar, generate and package docs jar along
    with it  -->
    <target name="package_library" depends="init_pack_lib, check_lib_jar,   rename_lib_jar,generate_javadoc"/>

    <!-- init all properties to use-->
    <target name="init_pack_lib">
        <property name="real.out.dir" value="${basedir}/out/production"/>
        <property name="lib.gen.jar.file" value="${real.out.dir}/classes.jar"/>
        <property name="docs.dir" value="${real.out.dir}/Docs"/>

        <!-- we need to peek into manifest xml file-->
        <xmlproperty file="${manifest.abs.file}" collapseattributes="true"/>
        <property name="app.package" value="${manifest.package}"/>
        <property name="app.dist.name" value="${ant.project.name}_${manifest.android:versionName}"/>
        <property name="doc.package.names" value="${app.package}.*"/>
    </target>

    <!-- is classes.jar generated ?-->
    <target name="check_lib_jar">
        <available file="${lib.gen.jar.file}" property="lib.jar.found"/>
    </target>

    <!-- if so, give it a better name-->
    <target name="rename_lib_jar" if="${lib.jar.found}">
        <move file="${lib.gen.jar.file}"
              tofile="${real.out.dir}/${app.dist.name}.jar"/>
    </target>

    <!-- generate and package JavaDoc for project-->
    <target name="generate_javadoc" depends="check_doc_dir, create_doc_dir, clean_docs_dir">
        <javadoc packagenames="${doc.package.names}"
                 sourcepath="${source.absolute.dir}"
                 destdir="${docs.dir}"
                 verbose="false"
                />
        <jar compress="${jar.compress}" basedir="${docs.dir}" jarfile="${real.out.dir}/${app.dist.name}_JavaDoc.jar"/>
    </target>

    <!-- what about JavaDocs destination directory ? -->
    <target name="check_doc_dir">
        <condition property="docs.dir.not.exists">
            <not>
                <available type="dir" file="${docs.dir}" property="docs.dir.exists"/>
            </not>
        </condition>
    </target>

    <!-- make docs directory if it isn't there already-->
    <target name="create_doc_dir" if="docs.dir.not.exists">
        <mkdir dir="${docs.dir}"/>
    </target>

    <!-- wipe previous JavaDocs files-->
    <target name="clean_docs_dir" if="docs.dir.exists">
        <delete includeemptydirs="true">
            <fileset dir="${docs.dir}" includes="**/*"/>
        </delete>
    </target>
</project>

要创建包,只需从项目根目录运行 ant package_library。您可以将它们包含在构建目标中,以便它们在每次构建时运行。

关于android - 构建时 android 项目的自动 Javadoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154041/

相关文章:

android - 如何在android中为图表引擎折线图设置背景图片?

java - 单击按钮时如何立即更新小部件 View

Jenkins javadoc 插件不生成文档

json - 如何从与 Google Gson 兼容的 Java 类创建文档或 JSON 模式?

java - ManagedExecutorService 从 1.0 开始?

jboss 服务器的 Java 文档?

android - 为什么我在更改 Android 的屏幕方向时会在 Canvas 上出现空指针异常?

android - 如何设置 RecyclerView 的最大高度?

android - 在 TextInputEditText 中使用时,软键盘会隐藏部分 TextInputLayout。如何调整平移?

android - Gradle、Javadoc 和 Android 文档