ここでの他の回答があなたの質問に答えないのは不思議です...彼らはすべてあなたが1つだけのアセットディレクトリが欲しいか、またはassets /の代わりにres /を参照することを想定しています。
また、複数のアセットディレクトリが必要です。
私は<aapt>
antモジュールと何時間も戦い、やっとあきらめて、もっと簡単な方法があることに気付きました。
<target name="-package-resources"...>
タグをant
使用するマスタービルドファイルからタグをコピーandroid_sdk_dir/tools/ant/build.xml
し、プロジェクトに貼り付けましたbuild.xml
(build.xml
事前に作成されたプロジェクトの最後にあるコメントでbuild.xml
説明されているように、マスターが含まれる直前にタグを貼り付ける必要があります)。zip
アセットを.ap_ファイル(${out.absolute.dir}/${resource.package.file.name}
antファイルのその時点)に追加するために単に実行する2番目のセクション:
<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="${out.manifest.abs.file}"
assets="${asset.absolute.dir}"
androidjar="${project.target.android.jar}"
apkfolder="${out.absolute.dir}"
nocrunch="${build.packaging.nocrunch}"
resourcefilename="${resource.package.file.name}"
resourcefilter="${aapt.resource.filter}"
libraryResFolderPathRefid="project.library.res.folder.path"
libraryPackagesRefid="project.library.packages"
libraryRFileRefid="project.library.bin.r.file.path"
previousBuildType="${build.last.target}"
buildType="${build.target}"
ignoreAssets="${aapt.ignore.assets}">
<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>
<!--
NEW XML STARTS HERE
-->
<exec executable="zip" failonerror="true">
<arg value="-r" />
<arg value="${out.absolute.dir}/${resource.package.file.name}" />
<arg value="my_assets_directory_1" />
<arg value="my_assets_directory_2" />
<arg value="my_assets_directory_3" />
</exec>
<!--
NEW XML ENDS HERE
-->
</do-only-if-not-library>
</target>
この方法には、ソースツリーとapkでアセットのディレクトリ構造をより自由に定義できるという利点があります(exec
zip
異なる引数で複数回実行できzip
、実行するスクリプトでラップすることもできるため)zip
、あなたの中に複数の電流のディレクトリからソースツリー)。また、ファイルごとに圧縮を制御し(zipには圧縮を抑制する-0オプションがあります)、制限された、拡張子ごとのみの非圧縮タグを使用する必要はありません。
これに注意してください ant
xmlはantビルドプロセスのzipalignの前に来るので、APKとAndroid Javaのアライメントのニーズを満たす「zip互換」アーカイブを取得します。
私の場合、NDKベースのアプリがあり、Cコードからのみこれらのアセットにアクセスしたいと思います(apkパスは問題ありません)。これらのアイテムにアクセスするために標準のAndroid Javaアセットの呼び出しを使用する必要がある場合、それらがアセットという名前のzip内のパスにある必要があるかどうかはわかりません。その場合は、関連するソースツリーフォルダーに移動してを実行するexec
スクリプトを実行することで、上記のトリックを適用できcd
ますzip
。
res
またはそれであるかassets
)、まさに私がやりたくないものです。私は両方の質問に言ったようにengine
してgame
私は出荷したいという資産を提供しています。