利用 ant 指令碼修改專案包名
在開發android應用專案的時候,經常會有這樣的需求,一個應用專案,要求在不同的OEM下有不同的包名,不同的資源,不同的功能點什麼的。儘管可以利用eclipse adt自帶的功能來做這件事,但是,當按照這樣的需求來定製的越來越多的時候,手動去修改就開始變得力不從心起來。這個時候,一個良好的自動化指令碼呼之欲出,你完全可以利用perl/python/Makefile來做,不過這裡如果直接使用ant來做的話,似乎很多事情變得簡單起來。畢竟,ant提供給我們良好的介面,而隱藏那些實現細節。
廢話少說,先搭建一個這樣的環境吧。
首先還是簡述一下我的工作環境Windows 7
1. 下載安裝jdk, 一定是jdk, 如果只安裝jre的話,在執行ant時會報錯,說找不到tools.jar這個檔案。
安裝完畢後在系統環境變數下設定JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25(這個換成自己的安裝路徑)
2. 下載安裝ant
其實就是解壓到某目錄下,解壓完畢後在系統環境變數下設定ANT_HOME=D:\apache-ant-1.8.2(這個換成自己的安裝路徑)
並新增執行路徑Path=%Path%;%ANT_HOME%\bin
3. 更新project
android.bat update project --path .
4. 使用ant
ant release (或者是debug)
5. 定製自己的指令碼來完成修改專案包名等內容
- 準備config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- www.Ulrich-Scheller.de - use this script/project for whatever you want on your own risk -->
<project name="myproject" default="myproject" basedir=".">
<description> Build project for different partner </description>
<!--partner.dir, pkg.name, ver.code, ver.name are input from command line when execute 'ant' -->
<!-- set global properties for this build -->
<property name="build.bin" location="bin"/>
<property name="build.gen" location="gen"/>
<property name="src" location="src"/>
<property name="res" location="res"/>
<target name="preparefiles" description="Prepare files for different partner" >
<delete dir="${build.bin}" />
<delete dir="${build.gen}" />
<copy todir="${res}" overwrite="true" />
<fileset dir="${partner.dir}/res" />
</copy>
<!-- change the import in all Java source files -->
<replaceregexp file="AndroidManifest.xml"
match='android.versionCode="(.*)"'
replace='android.versionCode="${ver.code}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='android.versionName="(.*)"'
replace='android.versionName="${ver.name}"'
byline="false">
<replaceregexp file="AndroidManifest.xml"
match='package="(.*)"'
replace='package="${pkg.name}"'
byline="false">
<!-- change the package name in AndroidManifest -->
<replaceregexp flags="g" byline="false">
<regexp pattern="import(.*)com.myproject.com.R;" />
<substitution expression="import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
<replaceregexp flags="g" byline="false">
<regexp pattern="(package com.myproject.com;)" />
<substitution expression="\1 import com.${pkg.name}.R;" />
<fileset dir="${src}" includes="**/*.java" />
</replaceregexp>
</target>
</project> - 執行定製指令碼
$ ant -f config.xml -Dpartner.dir="xxx" -Dpkg.name="xxx" -Dver.code="xxx" -Dver.name="xxx" preparefiles - 編譯
$ ant debug
或者
$ ant release
具體的定製細節可以參考上面的指令碼和如下連結裡提到的內容
http://blogold.chinaunix.net/u/9577/showart_1828754.html
相關文章
- Android ant修改包名打包 (轉)Android
- Android Studio修改專案名和包名Android
- ant指令碼呼叫.bat檔案指令碼BAT
- 利用ant指令碼 自動構建svn增量/全量 系統程式升級包指令碼
- Android ant自動打包指令碼:自動替換友盟渠道、版本號、包名Android指令碼
- Ant自動打包(可動態修改包名、資源等)生成不同簽字不同包名的APPAPP
- 批量修改檔名的bash指令碼指令碼
- Eclipse 修改專案名稱Eclipse
- centos6 修改網路卡名指令碼CentOS指令碼
- 批量修改OC類名指令碼 -- python指令碼Python
- 自動化運維-修改主機名&hosts檔案指令碼運維指令碼
- Jenkins實現持續整合 使用Ant指令碼構建ios專案Jenkins指令碼iOS
- Android自動打包、簽名、優化、上傳ANT指令碼Android優化指令碼
- android 利用shell指令碼重新打包簽名Android指令碼
- iOS使用Shell指令碼批量修改類名稱iOS指令碼
- RHL6.4 修改IP,主機名指令碼指令碼
- 替換專案中的包名
- react-native 修改專案名稱React
- 學習Ant編譯指令碼編譯指令碼
- ANT批量執行Jmeter指令碼JMeter指令碼
- 用Ant構建指令碼(2)指令碼
- 用Ant構建指令碼(1)指令碼
- 用Ant構建指令碼(4)指令碼
- 修改myeclipse釋出的專案名稱Eclipse
- VS2017修改專案名稱
- Eclipse 如何快速修改工程名及包名Eclipse
- 檢測壓縮包並處理的Linux指令碼(解壓、批量修改檔名、匯入)分析Linux指令碼
- QtCreator透過CMake構建專案,修改專案名稱後報錯。QT
- ReactNative工程修改Android包名ReactAndroid
- web專案ant打包完整案例Web
- Android 程式設計下如何修改 jar 檔案的包名Android程式設計JAR
- 在xcode5中修改整個專案名XCode
- 利用Ant實現專案自動構建測試備份併發布到專案web(2) (轉)Web
- 利用Ant實現專案自動構建測試備份併發布到專案web(3) (轉)Web
- 利用Ant實現專案自動構建測試備份併發布到專案web(1) (轉)Web
- Ant 編譯、打包 build.xml 指令碼模板編譯UIXML指令碼
- [BI專案記]-DB指令碼同步指令碼
- PowerDesigner: 利用sql指令碼檔案逆生成模型SQL指令碼模型