咱們知道,能夠經過以下設置將一個普通的Android工程轉換成Android Library工程android
設置先後工程變化以下app
使用Ant編譯時(經過android.bat update project 命令生成 build.xml),普通的Android工程會生成apk文件,而Android Library工程只生成jar文件。因爲要生成dex並打包apk資源,前者比後者要耗時很多。post
有時咱們須要從普通工程中導出部分代碼生成jar包,能夠手動完成ui
或者,按照上面的作法,先將一個普通的Android工程轉換成Android Library工程,再執行 ant release 或 ant debugdebug
其實,還有一種更簡單地方法:使用以下方式執行 ant releasecode
ant release -Dandroid.library=true
編譯後將生成一個classes.jar,編譯輸出以下xml
... -compile: [jar] Building jar: F:\xxx\bin\classes.jar -post-compile: -obfuscate: -dex: [echo] Library project: do not convert bytecode... ...
最後,咱們還能夠經過添加一個 custom_rules.xml 文件來對生成的jar文件進行更靈活地控制:資源
<?xml version="1.0" encoding="UTF-8"?> <project name="tinyUtils" default="help"> <target name="-post-compile"> <!-- copy from <sdk>\tools\ant\build.xml '-compile' task --> <if condition="${project.is.library}"> <then> <echo level="info">Creating my library output jar file...</echo> <property name="out.mylibrary.jar.file" location="${out.absolute.dir}/my_classes.jar" /> <if> <condition> <length string="${android.package.excludes}" trim="true" when="greater" length="0" /> </condition> <then> <echo level="info">Custom jar packaging exclusion: ${android.package.excludes}</echo> </then> </if> <propertybyreplace name="project.app.package.path" input="${project.app.package}" replace="." with="/" /> <jar destfile="${out.mylibrary.jar.file}"> <!-- 自定義 --> </jar> </then> </if> </target> </project>
-Dandroid.library=true
參數從普通Android項目中導出jar包