0

SDK を 2.3 にアップグレードしたところ、ビルド スクリプトが失敗し始めました。このエラーが発生しています:

build.xml:363: aaptexec は「basename」属性をサポートしていません

ビルド スクリプトの次の行の場合:

<aapt executable="${aapt}" command="package" manifest="AndroidManifest.xml" resources="${resource.absolute.dir}" assets="${asset.absolute.dir}" androidjar="${android.jar}" outfolder="${out.absolute.dir}" basename="${ant.project.name}" />

aapt で何が変わったのかはわかりませんが、basename はもう存在しないようです。代わりに何を使えばいいのか教えてもらえますか?

4

1 に答える 1

1

2.1 から 2.3 にアップグレードしたときに、組み込みの「ルール」xml で記号名が変更され、同様の問題が発生しました。2.1 は ant_rules_3.xml を使用しているように見えましたが、現在 SDK 2.3 は main_rules.xml を開始点として使用しています。私のように、ルール ファイルのターゲットに基づいて build.xml をカスタマイズした場合は、リンク テキストで説明されているようにサンプル プロジェクトを作成することで、簡単にやり直すことができるでしょう。

次に、build.xml を調整して、main_rules.xml にリストされているターゲットの一部またはすべてをオーバーライドします。(これは sdk\tools\ant フォルダーにあります)。このプロセスはかなり迅速で、単純なプロジェクトの場合、生成されたファイルは Ant で「箱から出して」動作することがわかりました。(main_rules.xml が対応できなかったため、.aidl ファイルを含む 2 番目のソース フォルダーを含むプロジェクトの build.xml を大幅に変更する必要がありました)

main_rules.xml には aapt を参照するターゲットが 2 つあります。おそらくこれを模倣する必要があります。

<target name="-package-resources">
    <echo>Packaging resources</echo>
    <aapt executable="${aapt}"
        command="package"
        versioncode="${version.code}"
        debug="${build.packaging.debug}"
        manifest="AndroidManifest.xml"
        assets="${asset.absolute.dir}"
        androidjar="${android.jar}"
        apkfolder="${out.absolute.dir}"
        resourcefilename="${resource.package.file.name}"
        resourcefilter="${aapt.resource.filter}">
    <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>
</target>

resourcefilename は、生成された apk の名前だと思います。私のビルド スクリプトは apk を生成し、それらを bin ディレクトリに配置します。リソース ファイル名を明示的に指定する必要はありません。私のbuild.propertiesは次のようになります:

#-----------------------------------------------
# The ONLY reference to the project's main base
#
projectname=MapProject1.2
#
#-----------------------------------------------

workspace.dir=/dev/projects/EclipseHelios/AndroidWorkspace
ant.project.name=${projectname}
outbasebase.dir=/dev/projects/AntBuilds
base.dir=${workspace.dir}/${projectname}
common_src=/dev/projects/CommonSource121210/GridSeviceAndUseGridService
source.dir=${base.dir}/src
outbase.dir=${outbasebase.dir}/${projectname}

out.dir=${outbase.dir}/bin
key.store=c:/users/me/my-release-key.keystore
key.alias=release_alias
key.store.password=*************
key.alias.password=*************
layout.dir=${base.dir}/res/layout

(もちろんパスワードは別として!)

build.properties から取得されるように、buid.xml のプロジェクト名をコメントアウトしました。

于 2011-01-22T14:50:13.987 に答える