2013-08-06 69 views
2

因此,我已經開始爲Bump開發,並且在短視中他們不支持基於x86的Android設備/仿真器。只有ARM。如何在運行Android模擬器時禁用加載庫?

嗯,把小市場放在一邊,這對我來說是一個很大的問題,因爲我完全喜歡使用基於x86的仿真器進行開發以達到性能的原因。

所以,(因爲Bump在模擬器上毫無意義)我怎樣才能在模擬器中運行時禁止加載Bump庫?

import com.bump.api.IBumpAPI; 
import com.bump.api.BumpAPIIntents; 

錯誤:

08-06 17:58:30.895: E/AndroidRuntime(1799): java.lang.UnsatisfiedLinkError: Couldn't load android-api from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.xxxxxxxx-2.apk,libraryPath=/data/app-lib/com.xxxxxxxxx-2]: findLibrary returned null 08-06 17:58:30.895: E/AndroidRuntime(1799): at java.lang.Runtime.loadLibrary(Runtime.java:365) 08-06 17:58:30.895: E/AndroidRuntime(1799): at java.lang.System.loadLibrary(System.java:535) 08-06 17:58:30.895: E/AndroidRuntime(1799): at com.bump.api.BumpAPI.(BumpAPI.java:122) 08-06 17:58:30.895: E/AndroidRuntime(1799): at java.lang.Class.newInstanceImpl(Native Method) 08-06 17:58:30.895: E/AndroidRuntime(1799): at java.lang.Class.newInstance(Class.java:1319)

回答

0

雖然有些複雜,你可以通過分割你的項目成使用的是Android庫項目的幾個相關項目目前你可能有這樣的事情

  1. 主要項目 - 包括所有的代碼,凹凸庫等,這是你在設備上運行

,您需要將您的應用程序分爲3個獨立的項目:

  1. 庫項目 - 這將包括幾乎所有的原主要項目中的代碼,用凹凸庫和相關的代碼除外。

  2. 設備項目 - 這將取決於庫項目並添加凹凸庫和相關活動。這是您在設備上運行的內容。

  3. 模擬器項目 - 這將取決於庫項目。凹凸庫和活動包括而不是。這就是你在模擬器中運行的內容。

該理論與having a paid and a free version of your app相同。除了付費和免費之外,您有碰撞和不碰撞。

0

唯一的辦法是暫時刪除凹凸庫和在模擬器上運行時,從您的應用程序凹凸相關的代碼,或者複製某個應用程序擁有凹凸從中移除它(專門用於在x86上運行)。即使你能夠禁用凹凸庫,android仍然會嘗試執行任何使用這些庫的代碼,例如import com.bump.api.IBumpAPI;,這將導致崩潰無論如何=(

0

爲什麼不使用JNI在C語言中創建自定義庫,以滿足鏈接依賴性,並將其用於目標模擬器的項目中?

它類似於創建一個僞包裝或填充 - 例如:一個名爲fooBar的Java中的函數,它被ARM針對的真實庫所使用,它可能有參數等並返回一些東西。在僞人工庫中,使用相同的參數創建一個fooBar,並返回零或虛擬對象,以模擬器爲目標。

考慮到API和參數,函數名稱等等,這聽起來可能非常尷尬,這是頭等大事。只是要意識到,沿着這條路線,任務將取決於Bump庫使用和管理的API有多大,我正在討論編譯的ARM版本的原生.so

相關問題