2011-09-06 102 views
6

我正在開發使用OpenMRS作爲Android後端的醫療記錄系統。 OpenMRS依賴於一些嚴重的重量級庫,包括Hibernate和Spring。將java服務器移植到Android

「德興」整個OpenMRS應用程序生成的文件,甚至爲Android classes.dex文件格式太大(這個大小限制已經充分證明)。爲了解決這個問題,我目前正在從依賴關係創建多個dex文件,並在運行時使用Android的dex類加載器加載它們。

由於服務器的移動版本將在實踐中使用的方式,實際處理需求將是不顧巨大的依賴性非常低。我不想在我的手機上運行企業服務器。

之前我花了兩週多的時間我想這個工程,我只是想問問開發者社區:是該戰略只是一個白日夢?如果我加載了所有這些庫,那麼整個二進制文件會被加載到RAM中,只是破壞系統?有沒有一種優化這種應用程序的好方法?我在這裏錯過了一些明顯的問題或解決方案嗎?

+3

乍看之下,我會說有Hibernate和Spring運行在Android上的夢想是不現實的。爲所有這些依賴項提供足夠的內存的簡單問題不會讓你死在你的軌道上。 – Prime

+1

你已經看到http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html?這裏最困難的部分似乎是,各種dex文件不能在沒有附加代碼或預處理的情況下相互調用。 (假設有足夠的內存來完成你所需要的功能)。 –

+4

這絕對是「客戶/服務器」的呼聲。這個應用程序的一個重要問題將是保證隱私(HPIAA法規等) – paulsm4

回答

1

簡短的回答是:不。

長的答覆是,大多數設備仍然只分配相對少量的存儲器的每個堆(40-128兆的RAM之間)。您真的需要考慮構建應用程序,因此大部分邏輯以及庫和重量級代碼仍駐留在服務器上,移動應用程序僅從服務器讀取輕量級數據(JSON?)以顯示。設備應該只使用位置數據等原生項目,併爲用戶提供一個與其他Android世界一致的界面。除此之外,您應該尋找方法儘可能多地保留原生應用程序的邏輯。如果沒有其他原因,而不是保持它更安全。反向工程的Android應用程序是瑣碎而你越留在服務器端,你會越安全。

+0

感謝馬特,在跟進評論後,我得出了類似的結論。看起來我將不得不對原始來源進行更多的重新編碼,這比我想象的要多。實際上記錄了它在我自己的計算機上使用的RAM後,我意識到任何小於1GB的內容都無法工作!但不幸的是,我們的目標是最終讓整個服務器在平板電腦上運行,因爲我們將它發送到無法訪問互聯網的貧困地區。我想這將需要一些真正的工程。嘆。 – Nick