4

これは Android プロジェクトであり、プログラムの実行時に警告をエラーとして処理することを決定すると、私の ant ビルド スクリプトが失敗することがありますjavac。真剣に、これは時々しか行わないので、別の質問をするかもしれません.

エラーを出力し、ビルドを突然キャンセルします

[javac] 1 error

[javac] 9 warnings

もっと深くやると、「エラー」が表示されます

error: warnings found and -Werror specified

これは私が明示的に設定したものではありません。これは、build.xml ファイルの奥深くに埋め込まれた引数である可能性があります。または、この特定のサブ ライブラリの build.xml ファイルで、現在私が知らない 1 つの特定の条件にある可能性があります。

時々これを引き起こすのはandroid facebook sdkです。しかし、ant build.xml ファイル内に Werror 引数はありませんが、それを無効にするか、回避したいと考えています。

これは、ビルドを停止する他の条件があるビルド サーバー用です。一貫性のない ant と javac の問題は、実際には場所がありません。

しかし、それについての洞察は大歓迎です。

4

1 に答える 1

2

私の Android SDK ディレクトリの下にあるファイル「tools/ant/build.xml」には、次のものが含まれています。

<property name="java.compilerargs" value="" />

警告がエラーとして扱われるために失敗するビルドで使用される Android SDK には、コンパイラの引数に "-Werror" が含まれているのではないでしょうか? (そうでない場合は、問題のある Android SDK インスタンスのディレクトリにある「compilerargs」の再帰的な grep で原因を見つけることができます。)

アップデート:

一方、それは私の Android SDK にあります。このプロパティ自体は必須ではありません。たまたまここで使用されているだけです。

<!-- Compiles this project's .java files into .class files. -->
<target name="-compile" depends="-pre-build, -build-setup, -code-gen, -pre-compile">
    <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
        <!-- merge the project's own classpath and the tested project's classpath -->
        <path id="project.javac.classpath">
            <path refid="project.all.jars.path" />
            <path refid="tested.project.classpath" />
            <path path="${java.compiler.classpath}" />
        </path>
        <javac encoding="${java.encoding}"
                source="${java.source}" target="${java.target}"
                debug="true" extdirs="" includeantruntime="false"
                destdir="${out.classes.absolute.dir}"
                bootclasspathref="project.target.class.path"
                verbose="${verbose}"
                classpathref="project.javac.classpath"
                fork="${need.javac.fork}">
            <src path="${source.absolute.dir}" />
            <src path="${gen.absolute.dir}" />
            <compilerarg line="${java.compilerargs}" />
        </javac>

そこにある必要がある要素は、最後から2番目の行にある「compilerarg」の要素であるため、「compilerargs」ではなく「compilerarg」のgrepを使用することをお勧めします。

于 2013-09-12T04:26:00.813 に答える