Android項目實戰(二十四):項目包成jar文件,而且將工程中引用的jar一塊兒打入新的jar文件中

前言:java

關於.jar文件:android

平時咱們Android項目開發中常常會用到第三方的.jar文件。json

其實.jar文件就是一個相似.zip文件的壓縮包,裏面包含了一些源代碼,注意的是.jar不包含資源文件(res、圖片等)app

---------------------------------------------------------------------------------------------------------工具

1、首先學習如何在Android studio中將android項目打成.jar文件學習

一、在app目錄下的 build.gradle文件中 添加以下紅色字體代碼:測試

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}

task makeJar(type: Copy) {
delete 'build/libs/mysdk.jar'
from('build/intermediates/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myjar.jar')
}

makeJar.dependsOn(build)

二、生成.jar文件字體

在Android studio 的下面有 Terminal 選項,能夠看到這個命令行的形式gradle

咱們在此 輸入 「gradle makeJar」 而後回車。等待片刻,變會生成 .jar文件ui

該.jar文件的地址爲:

build/intermediates/bundles/release/

 

至此,咱們就能夠將生成的.jar放在別的項目中使用了。

 

2、深刻探索

問題:

存在這麼一種狀況:

咱們要打包的android項目中已經引用了一個或多個第三方.jar文件。那麼咱們按上面的方法打成.jar文件,在引入到別的項目中使用中,

會發現出現錯誤:

NoClassDefFoundError

定位到錯誤代碼位置,會發現 生成.jar文件的原始android項目中引用的第三方.jar文件中的類找不到。

這裏能夠猜想,使用上述方法將android項目打成.jar文件的過程當中,並沒有將android項目原來引用的第三方.jar文件也一塊兒打入到新的.jar文件中。

能夠測試一下,將android項目打成的.jar文件解壓縮,會發現只有java代碼相關文件,而沒有原來android項目中引用的第三方.jar文件

 

解決方案:

一、首先 問題產生的緣由就是 生成.jar文件的android項目原先引用的第三方.jar文件沒有被打入到 新的.jar文件中

  那麼咱們想:怎麼在android項目打成.jar文件的時候 順帶把 android項目引用的第三方.jar文化也一併打入到新的.jar文件?

試了幾天,目前沒有找到解決辦法。。。此路不通

 

二、既然android項目原來引用的.jar文件打不進 要生成的.jar文件中去,咱們是否能夠手動的將android項目引用的第三方項目整合到android項目打成的.jar文件中去?

  即 將android項目打成的.jar文件和android項目自身引用的.jar文件合併成一個.jar文件

網上查詢了一番: 可使用 ANT 工具實現 將兩個或多個.jar文件合併成一個.jar文件

Apache Ant是一個基於Java的生成工具。據最初的創始人James Duncan Davidson的介紹,這個工具的名稱是another neat tool(另外一個整潔的工具)的首字母的縮寫。

實現步驟:

(1)、下載ANT,這個網上百度一堆

(2)、配置環境變量

  

(3)、檢測是否配置成功

點擊 開始 -> 運行 -> 輸入cmd 
打開命令窗口,

輸入以下命令:ant 
若是出現以下內容,說明安裝成功: 
Buildfile: build.xml does not exist! 
Build failed 
注意:由於ant默認運行build.xml文件,這個文件須要咱們建立。 
若是不想命名爲build.xml,運行時可使用 ant -buildfile test.xml 命令指明要運行的構建文件。

(4)、編輯xml文件,命名隨意,這裏命名build.xml

打開文件編輯:

<?xml version="1.0" encoding="utf-8"?>
<project
    name="hosa"                            //不用改       ,注意:這裏的全部註釋在 build.xml文件中 都不要有  是我爲了給大家看解釋寫的
    basedir="H:\soft\jar"                  //生成的jar存放的位置,而且將要合併的全部.jar文件也放在該目錄下
    default="makeSuperJar" >               //不用改

    <target
        name="makeSuperJar"                //不用改  
        description="description" >        //不用改

        <jar destfile="standingbanlanceFB.jar" >                  //合併後的jar文件的名稱
         <zipfileset src="avoscloud-sdk-v3.14.5.jar" />           // <zipfileset >標籤的都是要參與合併的子jar包 
        <zipfileset src="fastjson.jar" />
        <zipfileset src="okhttp-2.6.0-leancloud.jar" />
         <zipfileset src="standingbanlance.jar" />
          <zipfileset src="okio-1.6.0-leancloud.jar" />
         </jar>
    </target>

</project>

(5)、命令行執行合併操做,輸入第一行命令,紅色部分是咱們編輯的build.xml文件的地址

    

 

(6)、打開build.xml文件中  basedir="H:\soft\jar" 該目錄,便可看到合併後的jar文件。

相關文章
相關標籤/搜索