2

ビルドマシンで動作するようにAntを使用してAndroidプロジェクトをコンパイルしようとしていますが、問題が発生しています。合計5つのプロジェクトがあります。3つは単なるJavaライブラリプロジェクトで、他の2つは実際のAndroidプロジェクトです。実際にコンパイルおよびインストールされるプロジェクトは1つだけですが、コンパイルするために他のプロジェクトからプルします。

android update project --name <name> --target <target> --path <path>を使用してbuild.xmlファイルを生成しようとしました。build.xmlは問題なく生成されますが、実行しようとすると、他のプロジェクトを依存関係として正しく含めることができません。

次に、Eclipseを使用してbuild.xmlファイルをエクスポートしようとしましたが、依存関係は正しく含まれていますが、R.javaファイルは生成されません。

Eclipseがすでに依存関係の設定を処理しているので、2番目のアプローチを好みますが、R.javaファイルを正しく生成するbuild.xmlファイルに追加できるものはありますか?

4

1 に答える 1

5

私はこれを理解することになった。私がやったことは、Eclipseエクスポートツールを使用して、3つのJavaライブラリプロジェクトのantビルドスクリプトをエクスポートすることです。次に、jarをコピーするための追加のターゲットを含むbuild-custom.xmlというファイルを作成しました。

次に、Androidライブラリプロジェクトでandroid update lib-projectコマンドを使用して、そのプロジェクトのbuild.xmlを生成しました(http://developer.android.com/tools/projects/projects-cmdline.htmlで指定)。Javaライブラリプロジェクトをビルドに含めるには、それらをAndroidプロジェクトのlibsフォルダーにコピーする必要があります。そこで、Androidライブラリプロジェクトにcustom_rules.xmlというビルドファイルを作成しました。このファイルは、jarファイルをlibフォルダーにコピーします。重要:実行時にjarを削除するルールも記述してください。そうしないと、Eclipseで実行しようとするとDavlikエラー1が発生します。

Androidライブラリプロジェクトがある場合とない場合がありますが、メインプロジェクトの手順はライブラリプロジェクトとほとんど同じです。android update projectコマンドを使用してから、custom_rules.xmlを作成して適切なjarファイルをコピーします。

編集:

Eclipseを使用して基本的なJavaライブラリプロジェクトのビルドスクリプトを生成した後、common.xmlantビルドファイルを作成しました。このファイルは基本的に次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="common">     
    <target name="clean">
        <delete dir="build/libs" />
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary1" target="clean" />
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary1" target="cleanup-jars" />
            <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary2" target="clean" />
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary2" target="cleanup-jars" />
            <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary3" target="clean" />
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary3" target="cleanup-jars" />
            <ant antfile="build.xml" dir="./AndroidSubProject" target="clean" />
    </target>

    <target name="samplesublibrary1">
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary1" target="all" />
    </target>

    <target name="samplesublibrary2">
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary2"     target="all" />
    </target>

    <target name="samplesublibrary3" depends="samplesublibrary2">
        <ant antfile="build.xml" dir="./SubJavaLibrary/SampleSubLibrary3" target="all" />
    </target>

    <target name="android-sub-project-copy-jars" depends="samplesublibrary1, samplesublibrary2, samplesublibrary3">
        <ant antfile="build.xml" dir="./AndroidSubProject" target="android-project-copy-jars" />
    </target>

    <target name="android-sub-project-debug" depends="android-project-copy-jars">
        <ant antfile="build.xml" dir="./AndroidSubProject" target="debug" />
    </target>

    <target name="android-sub-project-release" depends="android-project-copy-jars">
        <ant antfile="build.xml" dir="./AndroidSubProject" target="release" />
    </target>

    <target name="android-sub-project-remove-jars">
        <ant antfile="build.xml" dir="./AndroidSubProject" target="android-project-remove-jars" />
    </target>
</project>

次に、Android-Sub-Projectで、次の内容を含むcustom_rules.xmlファイルを追加しました。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse.ant.import?>
<project default="android-project-copy-jars" name="Copy required jars to lib folder">
  <target name="android-project-copy-jars">
    <copy file="../../build/libs/SampleSubLibrary1.jar" todir="libs"/>
    <copy file="../../build/libs/SampleSubLibrary2.jar" todir="libs"/>
    <copy file="../../build/libs/SampleSubLibrary3.jar" todir="libs"/>
  </target>
  <target name="android-project-remove-jars">
    <delete file="./libs/SampleSubLibrary1.jar" />
    <delete file="./libs/SampleSubLibrary2.jar" />
    <delete file="./libs/SampleSubLibrary3.jar" />
  </target>
</project>

次に、他のすべてのサブbuild.xmlファイルを含めて実行するメインbuild.xmlをプロジェクトルートに作成しました。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="all">
    <target name="debug" depends="clean, main-debug, android-project-remove-jars" />
    <target name="release" depends="clean, main-release, android-project-remove-jars" />

    <import file="common.xml" />

    <target name="clean" depends="common.clean">
        <ant antfile="build.xml" dir="./Main" target="clean" />
    </target>

    <target name="main-debug" depends="android-sub-project-debug">
        <ant antfile="build.xml" dir="./Main" target="debug" />
        <copy file="./Main/bin/main-debug.apk" todir="./build/bin" />
    </target>

    <target name="main-release" depends="android-sub-project-release">
        <ant antfile="build.xml" dir="./Main" target="release" />
        <copy file="./Main/bin/main-release-unsigned.apk" todir="./build/bin" />
    </target>
</project>

お役に立てれば!

于 2012-12-17T17:36:06.877 に答える