ビルド時にマニフェストを更新する必要があった(この理由ではありませんが)何か同様のことを行いました。私がこれを達成したのは、2番目のAndroidManifestを作成し、それをconfigという名前のディレクトリの下に置くことでした。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="@[email protected]"
android:versionCode="@[email protected]"
android:versionName="@[email protected]">
<!-- EVERYTHING ELSE GOES HERE -->
</manifest>
は、その後、あなたがAndroidのビルドからスクリプト全体をコピーする(ちょうどいくつかの変更を必要とAntスクリプトbuild.xmlの定期的な裸の骨を使用することはできません: だから設定/ AndroidManifestにあなたはこのような何かを持っている可能性があり彼らは車輪を再発明せずに使用するためにいくつかのフックを追加しました)。 ビルドスクリプトはデフォルトでlocal.propertiesを読んでする必要がありますが、追加(またはコメント解除)しない場合は、このような行:ビルドスクリプトで
<property file="local.properties" />
あなたは「-pre-ビルド」と呼ばれる作業を確認する必要があり、このようにそれを変更します。
<target name="-pre-build">
<copy file="config/AndroidManifest.xml" todir="." overwrite="true" encoding="utf-8">
<filterset>
<filter token="CONFIG.APP_PACKAGE_NAME" value="${app.packagename}" />
<filter token="CONFIG.APP_VERSION" value="${app.version}" />
<filter token="CONFIG.APP_VERSION_CODE" value="${app.versioncode}" />
</filterset>
</copy>
</target>
次に、あなたのlocal.propertiesはそうのようなバージョン名/コード、あなたはパッケージ名を置くファイル:
app.version=1.0
app.versioncode=1
app.packagename=com.mypackage.name
は今、あなただけのyに確認する必要があります私たちがあなたの活動/サービス/放送リスナーなどのすべてを完全に修飾することを明示します。つまり、あなたはいつもあなたのソースコードの完全なパッケージを指定します。独自のソースコード用のパッケージを動的にしたい場合は、それぞれのプレフィックスを各クラスに置き換えることができます。しかし、それは愚かなようです。自分のパッケージ名でコードをパッケージ化するのは簡単ですプロジェクトにソースまたはjarを含めるだけで、どのプロジェクトからでも使用できます。
- UPDATE - ああ、あなたは彼らがパッケージ名を定義する必要があり、ユーザーに通知するために行うことができますもうひとつは次のようにビルドXMLで失敗したタグを使用している:
<fail message="app.packagename is missing. This must be defined in your local.properties file" unless="app.packagename" />
はこれを入れて地方を読んでいる行の後ろ。プロパティファイル
これはかなりばかげているようです。私はこのようなフープを飛び越しているオープンソースのプロジェクトについては聞いていません。 –
2つの主な動機は、名前を変更したディレクトリの差分は苦痛であり、これと他の多くのオープンソースプロジェクトは独自のドメインを持っておらず、sourceforge.netなどのコードホスティングサイトでホストされており、フォーク/マージは一般的です。 –