2015-10-27 111 views
0

我用Android Studio製作了一個API包裝器,主要用於Android應用程序。我想從中創建一個.JAR文件,以便Java應用程序也可以使用它。Android Java庫雙向兼容

這可能嗎?如果是這樣,怎麼樣?

我已經看過如何使.JAR文件脫離Android Pojects,但沒有太多出來。例如,我也不明白Java應用程序如何處理Android網絡導入。

+0

*我也不明白是Java應用程序會如何處理Android的淨進口,爲例如。* ...與不錯的** NoClassDefFoundError ** – Selvin

回答

1

,你可以添加一個「罐子」任務到庫-S build.gradle產生這樣的罐子:

apply plugin: 'android-library' 

android { 
    ... 
} 

task jar(type: Jar) { 
    from android.sourceSets.main.java 
} 

dependencies { 
    ... 
} 

你必須記住,普通的非Android的Java應用程序不能直接使用類或inderectly取決於命名空間android.*


我希望創建一個普通的非Android的依賴於Android的工作室的Java庫子項目生成一個JAR文件,並且可以通過你的Android的應用程序消耗。

從android-app中分離non-android-lib的另一個好處是你可以爲它們編寫junit-4測試。

普通的android-junit測試依賴於junit3。執行android-junit-tests需要啓動耗時的模擬器/ android-device。

一個普通的非Android系統的JUnit測試運行得更快,因爲它不需要仿真器/ Android的設備

+0

我同意lib應該是非android,但我現在使用android.net.Uri。我將如何替換我的非Android庫? Android以後會如何理解它?將http://docs.oracle.com/javase/7/docs/api/java/net/URI.html和https://docs.oracle.com/javaee/6/api/javax/ws/rs/core /UriBuilder.html工作? – Rauter

+1

你不能在非android應用中使用'android.net.Uri',所以你必須使用'String' +'java.net.URI' +'java.net.URLDecoder' +'java.net來實現所有的uri操作。 URLEncoder'也可以在android中使用。我通過傳遞uri-strings來解決類似的問題。 – k3b

+0

是的,這很明顯android導入不起作用。感謝您分享您的解決方案,但是,那是我以後的:) – Rauter