2014-05-25 35 views
0

我正在用Cartotype在一個團隊中開發一個離線路由應用程序。 我們已經成功實現了MapView,當我們在真實的Android設備上測試時,它正在工作。Cartotype和Genymotion

但是,當我使用Genymotion Emu進行測試時,在日誌貓中使用以下錯誤消息調用該活動時會崩潰。

05-25 16:37:19.468: E/AndroidRuntime(1050): FATAL EXCEPTION: main 
05-25 16:37:19.468: E/AndroidRuntime(1050): java.lang.ExceptionInInitializerError 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at de.hshn.tourwest.classes.CMapView.init(CMapView.java:109) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at de.hshn.tourwest.classes.CMapView.onDraw(CMapView.java:245) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.draw(View.java:13458) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12409) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12453) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.draw(View.java:13182) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.drawChild(ViewGroup.java:2929) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2799) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12407) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12453) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.draw(View.java:13182) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.drawChild(ViewGroup.java:2929) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2799) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12407) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12453) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.draw(View.java:13182) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.drawChild(ViewGroup.java:2929) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2799) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.draw(View.java:13461) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.widget.FrameLayout.draw(FrameLayout.java:467) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2183) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12409) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.View.getDisplayList(View.java:12453) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1144) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewRootImpl.draw(ViewRootImpl.java:2147) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2019) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1830) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.Choreographer.doFrame(Choreographer.java:525) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.os.Handler.handleCallback(Handler.java:615) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.os.Looper.loop(Looper.java:137) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at dalvik.system.NativeStart.main(Native Method) 
05-25 16:37:19.468: E/AndroidRuntime(1050): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load cartotype: findLibrary returned null 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at java.lang.Runtime.loadLibrary(Runtime.java:365) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at java.lang.System.loadLibrary(System.java:535) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  at com.cartotype.Framework.<clinit>(Framework.java:944) 
05-25 16:37:19.468: E/AndroidRuntime(1050):  ... 42 more 

我周圍沒有android設備,所以我需要使用模擬器。

該庫是正確的說:

<project>\libs\cartotype.jar 
    <project>\libs\armeabi\libcartotype.so 
+0

請通過網站上的CartoType查詢表格或電子郵件地址與我聯繫;我們可能會提供幫助。 –

回答

0

Genymotion運行在x86架構。

當執行loadLibrary方法,運行時將嘗試找到庫(的.so)的文件夾app_data/libs/x86/

內要運行這個模擬器Cartotype需要支持它的應用程序。 當一個庫支持x86,libs目錄應該看起來像:

<project>\libs\myLib.jar 
    <project>\libs\armeabi\myLib.so 
    <project>\libs\x86\myLib.so 

看來Cartotype不支持的x86。因此,隨着越來越多的設備使用x86 CPU,包括Genymotion,您應該要求Cartotype支持此架構。

或者您可以嘗試查找另一個支持x86的脫機映射庫。

+1

CartoType的Android SDK現在包含ARM和x86版本。 –

0

而不是使用Genymotion,使用SDK中的標準Android模擬器。因爲它模擬ARM CPU,而不是直接嘗試運行x86代碼,所以它應該只處理僅以ARM形式提供的庫。

是的,我知道這樣會比較慢,但是在這種情況下慢一點比根本不工作要好。