當前位置:首頁 » 安卓系統 » androidantjar

androidantjar

發布時間: 2023-05-24 23:44:14

⑴ android ant 怎麼編譯有依賴包的工程

1、eclipse背後做了很多工作,包括庫的引用等
2、如果用ant命令的話,就需要設置很多東西,比如環境變數,庫路徑的設置等
3、先編譯一個jar包,用jar包引用,把工程引用改為jar文件引用,再編譯試試。

⑵ 如何使用Ant腳本編譯出Jar和Apk包

首先我們來看看如何使用ant腳本打出一個jar包 我們新建一個工程AntExportJar 在工程的目錄下面新建一個build.xml,這個是ant腳本規定的一個入口腳本文件,文件名都是:build.xml [html] view plain ?
<?xml version ="1.0" encoding ="UTF-8" ?>
<project name ="AntExportJar" basedir ="." default ="exportJar" >
????<!--?設置全局變數?-->
????<property name ="src" value ="src" />
????<property name ="dist" value ="dist" />
????<property name ="app.name" value ="ant" />
????<property name ="app.version" value ="1.0" />
????<property name ="classes.encode" value ="GBK" />
????<property name ="lib" value ="libs" />

????<property
????????name ="project-dir"
????????value ="C:\Users\i\workspace\AntExportJar" />
????<property
????????name ="sdk-folder"
????????value ="C:\Users\i\AppData\Local\Android\sdk" />
????<property
????????name ="platform-folder"
????????value ="${sdk-folder}\platforms\android-22" />
????<property
????????name ="android-jar"
????????value ="${platform-folder}\android.jar" />
????<property
????????name ="src"
????????value ="${project-dir}\src" />
????<property
????????name ="bin"
????????value ="${project-dir}\bin" />
????<property
????????name ="libs"
????????value ="${project-dir}\lib" />

????<!--?task?-->
????<target name ="init" >
????????<echo>
????????????Initialize...
????????</echo>
????????<delete dir ="${bin}" />
????????<mkdir dir ="${bin}" />
????</target>

????<target name ="buildFiles" depends ="init" >
????????<javac
????????????????bootclasspath ="${android-jar}"
????????????????compiler ="javac1.7"
????????????????target ="1.7"
????????????????destdir ="${bin}"
????????????????encoding ="GBK"
????????????????includeAntRuntime ="true"
????????????????listfiles ="true" >
????????????????<src path ="${project-dir}" />
????????????????<classpath>
?????????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
?????????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????????</classpath>
????????</javac>
????</target>

????<!--?導出jar文件?-->
????<target name ="exportJar" depends ="buildFiles" >
????????<delete dir ="${dist}" />
????????<!--?Create?the?distribution?directory?-->
????????<mkdir dir ="${dist}" />
????????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????????<!--
????????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????????-->
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????????</jar>
????</target>
</project>
腳本很簡單,下面我們就來分析一下: [html] view plain ?
<project name ="AntExportJar" basedir ="." default ="exportJar" >
最外圍的一個標簽是project,是一個工程標簽,有名字,還有就是工程的目錄baseDir,用點號:"." 接下來就是定義全局變數,或者是屬性值: [html] view plain ?
<!--?設置全局變數?-->
<property name ="src" value ="src" />
<property name ="dist" value ="dist" />
<property name ="app.name" value ="ant" />
<property name ="app.version" value ="1.0" />
<property name ="classes.encode" value ="GBK" />
<property name ="lib" value ="libs" />

<property
????name ="project-dir"
????value ="C:\Users\i\workspace\AntExportJar" />
<property
????name ="sdk-folder"
????value ="C:\Users\i\AppData\Local\Android\sdk" />
<property
????name ="platform-folder"
????value ="${sdk-folder}\platforms\android-22" />
<property
????name ="android-jar"
????value ="${platform-folder}\android.jar" />
<property
????name ="src"
????value ="${project-dir}\src" />
<property
????name ="bin"
????value ="${project-dir}\bin" />
<property
????name ="libs"
????value ="${project-dir}\lib" />
這樣我們在後面就可以使用:${name值} 來使用value值的定義了,所以這里就相當於定義了變數的作用,這里我們看到有一些value值是路徑,但是這里我們感覺有一個不好的地方,就是這些路徑是寫死的,那麼我們還可以怎麼做能讓他變得靈活呢?其實很簡單,ant腳本中是可以訪問環境變數的,那麼我們只要將這些路徑定義成環境變數就可以了: [html] view plain ?
<property environment ="env" />
<property name ="ANDROID_HOME" value ="${env.ANDROID_HOME}" />
第一行先申明一個環境變數值,這個env是公共的寫法,也是ant自帶的,他表示當前的環境變數的值,那麼後面就可以訪問具體的哪些環境變數了,比如這里我配置了ANDROID_HOME這個環境變數,那麼就可以用${env.ANDROID_HOME}來訪問androidsdk的目錄了,和上面的那個直接使用絕對路徑的方式是一樣的。 解析來就是定義task了,在ant中task也是最重要的,我們最終運行的都是task,就相當於Java中的main方法一樣。ant腳本中可以定義多個task,而且每個task可以有執行的先後順序的。相當於Java中的方法中調用其他方法一樣。 [html] view plain ?
<!--?task?-->
<target name ="init" >
????<echo>
????????Initialize...
????</echo>
????<delete dir ="${bin}" />
????<mkdir dir ="${bin}" />
</target>
首先這里定義了一個初始化的task,其中echo標簽也是很常用的,就是列印信息的,然後是刪除目錄${bin},這個bin變數在上面已經定義了,然後在創建${bin}目錄。 初始化完之後,開始執行編譯工作: [html] view plain ?
<target name ="buildFiles" depends ="init" >
????<javac
????????bootclasspath ="${android-jar}"
????????compiler ="javac1.7"
????????target ="1.7"
????????destdir ="${bin}"
????????encoding ="GBK"
????????includeAntRuntime ="true"
????????listfiles ="true" >
????????<src path ="${project-dir}" />
????????????<classpath>
????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????</classpath>
????</javac>
</target>
這里在此定義一個buildFiles的task,depends的值是表示當前的task在這個depends的task執行完之後在執行,這里就是先執行init的task,然後在執行buildFiles的task,這里的task主要是編譯Java成class文件: bootclasspath:表示編譯依賴的系統庫,這里依賴的是android.jar compiler:表示編譯的java版本 target:表示編譯之後的class的版本,就是能夠運行的java版本 destDir:表示編譯之後的class文件的存放目錄 其他的就不說了,這里還有一個重點,也就是我們在編譯的時候會遇到的問題,就是我們在編譯的時候,會引用到第三發的jar,所以這里我們為了保證能夠編譯過,這里還必須用classpath標簽來引用這些jar,當然這里只是能夠保證編譯通過,並不會把這些jar也編譯到最終我們想要的jar中,這個問題我們後面再說。 下面在看最後的一個task,就是將編譯完之後的class文件打包成jar文件: [html] view plain ?
<!--?導出jar文件?-->
<target name ="exportJar" depends ="buildFiles" >
????<delete dir ="${dist}" />
????<!--?Create?the?distribution?directory?-->
????<mkdir dir ="${dist}" />
????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????<!--
????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????-->
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????</jar>
</target>
這里我們定義了一個exportJar的task,他是在buildFiles的task運行完之後在運行。 首先刪除目標目錄${dist},然後在創建一個目錄。這個目錄就是存放最後編譯好的jar文件的目錄 然後就是用jar標簽來導出jar文件了: jarfile:表示編譯完之後存放的jar文件名路徑 basedir:表示需要編譯jar的class文件目錄 其他就OK了,但是在實際中我們在編譯的過程中會引用到第三方的jar,那麼這時候我們把這些jar編譯到最終的jar中,說道這里,其實我們在使用Eclipse導出jar的時候,有一個插件可以做到這點:fat-jar,安裝完插件

⑶ android 如何優化ant 批量打包

1.配置JAVA的環境變數

很多Java程序員由於使用Eclipse不配置Java環境變數也能正常運行代碼。但是如果想使用Ant命令批量打包本步驟必不可少。
2. 下載Ant(這里的Ant不是eclipse和android SDk裡面自帶的ant)

3. 解壓Ant並配置環境變數
a) 解壓Ant,比如解壓到D:\ant
b) 我的電腦->屬性->高級->環境變數
c) 系統變數新建ANT_HOME,變數值為d:\ant
d) 系統變數新建或修改PATH:將%ANT_HOME%\bin;%ANT_HOME%\lib添加到環境變數的PATH中 (注意以上
路徑均用反斜杠)

4. 驗證ant配置是否正確
在控制台輸入Cmd 回車, ant 回車,如果出現:
Buildfile: build.xml does not exist!
Build failed
恭喜你已經ant配置成功!!
Ant批量打包的基本思想是,每次打包後自動替換渠道號,然後再次打包從而實現多渠道打包的目的。
但是Ant不支持循環,怎樣循環打包? 擴展包Ant-contrib能輕松解決這個問題.可以翻牆的1.0b3.jar放到Ant的lib文件夾即可.

5. 編寫build.xml
將以下帶有顏色的字體(包括路徑,項目名稱)都改成正確的名稱
<?xml version="1.0" encoding="UTF-8"?>
<project name="ThumbPlay" default="help">

<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />

<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:

source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.

For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml

Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.

This file is an integral part of the build system for your
application and should be checked into Version Control Systems.

-->
<property file="ant.properties" />

<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.

This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).

This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />

<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
unless="sdk.dir"
/>

<!-- extension targets. Uncomment the ones where you want to do custom work
in between standard targets -->
<!--
<target name="-pre-build">
</target>
<target name="-pre-compile">
</target>

<target name="-post-compile">
</target>
-->

<!-- Import the actual build file.

To customize existing targets, there are two options:
- Customize only one target:
- /paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- /paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.

***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="D:/androidDev/batch-package-tool/ant1.8.3/lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<import file="${sdk.dir}/tools/ant/build.xml" />

<target name="deploy">
<foreach target="modify_manifest" list="${market_channels}" param="channel" delimiter=",">
</foreach>
</target>

<target name="modify_manifest">
<!--<replaceregexp file="AndroidManifest.xml" encoding="utf-8" match="android:value="(.*)"" replace=""/>-->
<replaceregexp flags="g" byline="false">
<regexp pattern="android:name="UMENG_CHANNEL" android:value="(.*)"" />
<substitution expression="android:name="UMENG_CHANNEL" android:value="${channel}"" />
<fileset dir="" includes="AndroidManifest.xml" />
</replaceregexp>
<!--<property name="out.release.file" value="${out.absolute.dir}/${channel}.apk"/>-->
<antcall target="release"/>
< tofile="${gos.path}/ThumbPlay_${channel}.apk">
<fileset dir="${out.absolute.dir}/" includes="ThumbPlay-release.apk" />
</>
<delete includeEmptyDirs="true">
<fileset dir="${out.absolute.dir}" includes="**/*"/>
</delete>
<echo message="==========================="/>
</target>
</project>
6. 配置local.properties
sdk.dir=D:\\androidDev\\android-sdk 改成你的SDK所在的目錄,注意轉義字元
7. 配置ant.properties
# the config file for batch package.
application.package=com.leyou.thumb (你的apk文件的包名)
ant.project.name=ThumbPlay (你的apk文件的工程名)
java.encoding=utf-8
out.absolute.dir=C:/compile
gos.path=Z:/app-version/test (打好的渠道包要放到的目的位置)
key.store=D:/androidApk/thumbplay/thumbplay.keystore (keystore文件路徑)
key.store.password=wushenshiji999 (keystore文件路徑)
key.alias=mugame (keystore文件別名)
key.alias.password=wushenshiji999 (keystore文件別名密碼)
app_version=1.0.4 (要打的渠道包的版本名稱)
market_channels=guanwang,shuihu,wushen,shenhua,huawei (渠道名稱,要以逗號分隔,必須在一行內)

⑷ android 使用ant自動打包,某些Jar包包含assets目錄存放資源文件

<!-- 將資源文件放進輸出目錄 -->
<target name="package-res-and-assets">
<echo>Packaging resources and assets...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="${manifest-xml}" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-A" />
<arg value="${asset-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="${resources-package}" />
</exec>
</target>

⑸ 如何將android原生應用改成ant方式編譯

android 程序打包成apk,如果在是命令行方式,一般都要經過如下步驟:
1.用aapt命令生成R.java文件
2.用aidl命令生成相應java文件
3.用javac命令編譯java源文件生成class文件
4.用dx.bat將class文件轉換成classes.dex文件
5.用aapt命令生成資源包文件resources.ap_
6.用apkbuilder.bat打包資源和classes.dex文件,生成unsigned.apk
7.用jarsinger命令對apk認證,生成signed.apk

eclipase手動打包生成apk方式,只不過是eclipase代替我們執行了以上命令而已。

eclipse用起來雖然方便,為什麼要使用Ant批量打包Android應用,對於我來說主要有以下兩方面考慮:
1、我們在發布App的時候,可能需要發送到十幾,甚至幾十個不同的分發渠道,比如360手機市場,網路,應用寶等等,我們可能需要對各個渠道的下載量,用戶存留和用戶使用情況等數據進行分析,比如使用網路移動統計,友盟統計等。為了實現統計功能,我們需要在配置文件中添加一個數據元,來標識我們的應用要發布到哪一個渠道上,因此,若使用傳統的方法,我們每發布一個渠道的版本,就需要修改清單文件中的數據元,然後再使用keystore進行簽名和打包。若只有一兩個分發渠道,工作量還是可以接受的,但是若我們的分發渠道打到幾十個的時候,我們如果再手動的進行修改然後簽名打包發布,那工作量就很可觀了。因此,為解決這種需求,我們採用Ant來實現對Android應用的自動打包。
2、我們做產品的時候,肯定需要經常打不同環境的包,比如開發環境,測試環境,生產環境,這個時候你怎麼辦,如果用傳統方法,你打開發環境包你要把你的服務端IP和圖片伺服器IP改成開發的,打包,然後打測試的包,你又要改成測試伺服器IP和圖片伺服器IP,這樣多麻煩,如果你把這服務端IP和圖片伺服器IP,配置到一個xml文件里,用ant打包方式實現自動替換,多方便。

⑹ Ant 打jar包中加入第三方Jar包

Ant+Uiautomaor+java學習

Ant 類似於Maven ,可以用來打JAR包

打包時使用的BUILE.XML

主要是android sdk下自帶的ant 下的build.xml

項目的build.xml是根據uibuild.xml

在打包過程睜粗嘩中凳高需要增悉行加第三方jar

在要打包的項目中增加目錄結構lib,將第三方jar加入,然後更改Uibuild.xml

下圖是增加第三方打包的路徑,主要是classpath中的fileset

熱點內容
整個伺服器搭建教程 發布:2025-02-12 11:48:16 瀏覽:579
我的世界伺服器人多的 發布:2025-02-12 11:48:12 瀏覽:347
為實現分頁存儲管理需要哪些硬體支持 發布:2025-02-12 11:46:34 瀏覽:539
編程下載線 發布:2025-02-12 11:41:48 瀏覽:210
json存儲數據 發布:2025-02-12 11:41:39 瀏覽:219
天龍八部腳本免費 發布:2025-02-12 11:30:12 瀏覽:501
卡羅拉的配置一般買哪個好一點 發布:2025-02-12 11:20:03 瀏覽:743
沒有伺服器的IP怎麼連上 發布:2025-02-12 11:19:55 瀏覽:80
編程sqs 發布:2025-02-12 11:09:55 瀏覽:239
electron脫離編譯環境 發布:2025-02-12 11:08:21 瀏覽:69