在Android應用中使用第三方Jar包

jopen 12年前發布 | 71K 次閱讀 Android Android開發 移動開發

Java有很多第三方庫。Android的Dalvik虛擬器不完全是Java,也就是Android SDK和傳統的SDK不完全一樣,如果Java庫兼容Android,則可被利用。Java庫使用受限于下面因素:

  • 目標平臺:Java代碼適配版本是否比Android基于的Java版本更高。是否用了Android不支持的Java SE的API,例如Swing、AWT圖形。
  • Size:為桌面或者服務器設計的Java代碼不需要考慮存儲和內存空間,Android需要,使用第三方Java代碼,可能會是應用Size無法容忍。
  • 性能:Java代碼是否要消耗Android設備所能提供的CPU。
  • 界面:Java代碼是否需要console界面,或者可以包裝我們自己界面中的單純API。

解決方式之一是使用開源java代碼,使他們變得更適合Android。例如只需使用10%的第三方庫,可以重新編譯,去除不必要的類。

不是所有的Java代碼可以在Android或者 Dalvik上運行,Android沒有提供某些在Java SE/ME/EE上的API,例如圖形相關的Swing和AWT。此外Java代碼可以依賴其他Java代碼,例如Jar中依賴不同于Android集成 的Apache HttpComponents,可能會引發兼容問題。在這些情況下,當我們引入第三方jar包進行編譯的時候沒有問題,但是在運行應用是出錯。因此使用開 源代碼是最好的解決方案。

在Android應用中使用第三方Jar包

有兩種方法集成第三方代碼,使用源代碼或者使用預先封裝好的jar。如果使用源代碼,將其放入我們代碼樹中一起編譯。下面介紹使用jar的方式。

加入第三方jar

如果使用現成的jar,將jar放在Android項 目的libs/目錄下,在命令行ant的編譯方式中,會自動將查找libs/的jar文檔。如果使用IDE開發,例如Eclipse,需要將JAR加入到 bulid path中。在左邊樹狀列表中,點擊所需加載jar的項目,按右鍵->Build Path –>Add External Archives…,加入jar包即可。

在例子中,使用BeanShell的bsh-core-2.0b4.jar,BeanShell是提供腳本方式,可以按java的語句格式來編寫腳本。下載,并安裝后,在Eclipse成功加入jar文檔,如右圖所示。BeanShell使用很簡單,將在例子中建設。

源代碼

加入jar后,其他和常規的做法沒有什么區別,代碼如下:

在Android應用中使用第三方Jar包在Android應用中使用第三方Jar包 ... ...
import bsh.Interpreter;  //可通過 Ctrl + Shif + O自動加上

public class Chapter24Test1 extends Activity{ 
    //BeanShell使用步驟1:創建一個BeanShell Interpreter的實例
    private Interpreter i = new Interpreter();
    
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter_24_test1);
        Button button = (Button)findViewById(R.id.c24_eval);
        final EditText  script = (EditText)findViewById(R.id.c24_script);

        button.setOnClickListener(new View.OnClickListener() { 
            public void onClick(View v) { 
                String src= script.getText().toString();
                try{
                    //BeanShell第2步:設置腳本的全局 
                    i.set("context",Chapter24Test1.this);
                    //BeanShell第3步:設置腳本,可選的獲取腳本的最后狀態。  
                    i.eval(src);

                }catch(bsh.EvalError e){
                    Log.e("WEI","Error : " + e.toString()); 
                }
            }
        });
    }

}

在Android上使用能夠BeanShell是有限 制的,不是所有的腳本語言都能正常工作,例如那些對JIT有獨特格式的腳本,此外不是所有的Java API都在Dalvik中有效。沒有JIT的腳步將比編譯為Dalvik應用慢,慢回事用戶體驗呆滯,并消耗更多的電池能量,因此除非很簡單,一般般在 BeanShell中建立整個Android應用。BeanShell腳本可以處理Android底層安全模式運行的所有事情,例如如果應用設置了 READ_CONTACTS權限,那么應用中任何的BeanShell腳本就有相同的權限。另外,BeanShell最小的Core包也有140K,和應 用處理的事情來講,體積太大,消耗存儲太多,下載時間更長。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!