利用 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 Studio修改專案名和包名Android
- 批量修改檔名的bash指令碼指令碼
- 批量修改OC類名指令碼 -- python指令碼Python
- Jenkins實現持續整合 使用Ant指令碼構建ios專案Jenkins指令碼iOS
- 自動化運維-修改主機名&hosts檔案指令碼運維指令碼
- centos6 修改網路卡名指令碼CentOS指令碼
- iOS使用Shell指令碼批量修改類名稱iOS指令碼
- react-native 修改專案名稱React
- VS2017修改專案名稱
- 替換專案中的包名
- PowerDesigner: 利用sql指令碼檔案逆生成模型SQL指令碼模型
- QtCreator透過CMake構建專案,修改專案名稱後報錯。QT
- Ant Design Vue專案解析-前言Vue
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- 專案啟動指令碼的編寫指令碼
- 前端專案nodejs自動部署指令碼前端NodeJS指令碼
- 利用Python快速批量修改資料集檔名Python
- 使用指令碼重簽名指令碼
- Winrar4.x的檔案欺騙漏洞利用指令碼指令碼
- git修改檔案的名稱Git
- 修改 bam 檔案中染色體名
- find 批次修改檔案後輟名
- Linux 批量修改檔案字尾名Linux
- React-Native修改安卓平臺的包名React安卓
- shell指令碼擷取字串字尾名,檔名指令碼字串
- jmeter利用自身代理錄製指令碼JMeter指令碼
- IDEA 利用groovy指令碼生成註釋Idea指令碼
- 2. 指令碼、模組、包指令碼
- 使用ant design Pro開發專案的小結
- 微服務專案Git倉庫自動化指令碼微服務Git指令碼
- Ant Design 3.X 主題修改
- ANT 的Table表格樣式修改方法
- iOS使用shell指令碼批量修改屬性iOS指令碼
- linux 查詢某個日期以後修改過哪些檔案 shell指令碼Linux指令碼
- 簡單介紹Shell指令碼之檔案批次建立與修改的方法指令碼
- 利用 systemd 部署 golang 專案Golang
- win10如何修改檔案字尾名 win10修改字尾名的方法Win10
- hadoop_批量命令指令碼&同步檔案指令碼Hadoop指令碼
- 擼一個 iOS 重簽名指令碼iOS指令碼