我做了類似的事情(但不是因爲這個原因),它需要在構建時更新清單。我完成這個的方式是製作第二個AndroidManifest並將其放在名爲config的目錄下。 所以在配置/ AndroidManifest你可以有這樣的事情:
<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>
然後你可以使用常規的裸露的骨頭的build.xml Ant腳本,只需很少的修改(不需要整個腳本從Android構建複製系統,因爲他們添加了一些鉤子供您使用,而無需重新發明輪子)。 構建腳本默認情況下應閱讀local.properties,但如果不加(或去掉註釋)這樣一行:
<property file="local.properties" />
在構建腳本,你應該可以看到一個名爲「 - 預構建」的任務,改變這樣的:
<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。
- 更新 - 哦,你可以做,通知他們必須定義一個包名用戶一件事是使用故障標記在構建這樣的XML:
<fail message="app.packagename is missing. This must be defined in your local.properties file" unless="app.packagename" />
將這個在讀取本地的行後。屬性文件
這似乎是愚蠢的。我還沒有聽說過任何這樣的開源項目。 –
的2個主要動機是爲重命名的目錄比較是一個痛苦,這和其他許多開源項目並沒有自己的域名而是在託管網站一樣sourceforge.net等代碼託管,叉子/合併是司空見慣的。 –