[Android] Creating a JAR file with multiple library

學習會如何打包.jar 與使用後,作者嘗試將library中再包一個jar檔,但發現在使用上出現了問題,為了好了解,所以我舉例解釋.
首先我們先解釋目前的架構,目前我會有的一個library,方便說明我把他命名成firstlib, firstlib內容使用到另一個library,我稱它為secondlib。因此我們需要先將secondlib產生的secondLib.jar檔放入firstlib去做使用。

secondlib我新創一個SecondActivity的class,簡單寫一個函式已之後使用,程式碼如下:
public class SecondActivity {
    public String secondoutput(){
        String output;
        output="second success";
        return output;
    }
}
再來下圖表示我們將secondlib產生的secondLib.jar放入於firstlib下。



firstlib我也同樣創一個FirstActivity的class,簡單寫一個函式並且有使用到secondLib的函式,程式碼如下:
public class FirstActivity {
    SecondActivity name= new SecondActivity();
    public String firstoutput(){
        String output;
        output=name.secondoutput();
        return output;
    }
}
再來我們又做同樣的步驟再將firstlib打包成firstLib.jar。最終將firstLib.jar放入我創建的project使用,並附上架構如下圖:


問題來了,就是再使用firstlib.jar檔時,我們竟然不能使用secondLib.jar的函式,我們打開firstlib.jar看看,可以看到裡頭只有2個class,根本沒有顯示任何secondLib.jar的資訊.


我找了很久才發現問題再於jar檔不能多重打包,當然我們還有另外的替代方案就是使用.aar檔,因此我打開我產生的firstlib.aar,終於看到我真正想要的內容,再libs裡頭就包著我要使用的.jar檔哩!!!



講了這麼長,希望大家有看懂我想表達的意思.總結一下:
1.當使用library的形式,如果當中不會再包含任何其他的library是可以使用.jar的格式是沒有問題的
2.要產生的library裡頭,又有包含其他的library,那不能用.jar檔需要使用.aar檔.因為.aar檔可以包含整個module的全部內容,.jar只能包含.class檔

這樣看下來,如果要使用library的話,強烈建議使用.aar檔會比較安全,不然很容易因為缺少檔案,跑出一推問題,以上就是我的總結啦,希望對有此問題的人有所幫助!!





這個網誌中的熱門文章

[Android] TextView 換行

[Android]android Global variable 寫法

[Android] build the JAR file in Android Studio