我按照https://github.com/mapbox/mapbox-android-sdk#building-from-source
中的说明操作,目前正在使用Android Studio。我曾经在这个Android项目中使用Eclipse,而且我昨天花了很多时间试图将mapbox-android-sdk与Eclipse中的android项目集成。我希望mapbox-android-sdk上的说明更清楚 - 如果我知道如何,我很乐意帮助他们。
我将旧的Android项目导入Android Studio,然后进入File-> Import Project并在我系统中下载git源代码树的目录中选择build.gradle
内的MapboxAndroidSDK
然后,虽然在Android Studio中选择了我的Android项目需要支持地图,但我在Android Studio中使用File-> Import Module添加了在MapboxAndroidSDK目录中生成的* .aar文件。
无论如何,当我现在运行我的应用程序时,我收到以下错误。任何帮助表示赞赏。
09-29 11:30:07.061 1111-1111/com.username.someapp D/﹕ HostConnection::get() New Host Connection established 0xb7b6bdb8, tid 1111
09-29 11:30:07.091 1111-1111/com.username.someapp W/EGL_emulation﹕ eglSurfaceAttrib not implemented
09-29 11:30:07.101 1111-1111/com.username.someapp D/OpenGLRenderer﹕ Enabling debug mode 0
09-29 11:30:16.431 1111-1111/com.username.someapp D/dalvikvm﹕ GC_FOR_ALLOC freed 104K, 5% free 3282K/3448K, paused 20ms, total 24ms
09-29 11:30:16.481 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to find class referenced in signature (Ljava/nio/file/Path;)
09-29 11:30:16.481 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to find class referenced in signature ([Ljava/nio/file/OpenOption;)
09-29 11:30:16.491 1111-1111/com.username.someapp I/dalvikvm﹕ Could not find method java.nio.file.Files.newOutputStream, referenced from method okio.Okio.sink
09-29 11:30:16.491 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to resolve static method 10776: Ljava/nio/file/Files;.newOutputStream (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStrea
m;
09-29 11:30:16.491 1111-1111/com.username.someapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x000a
09-29 11:30:16.491 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to find class referenced in signature (Ljava/nio/file/Path;)
09-29 11:30:16.491 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to find class referenced in signature ([Ljava/nio/file/OpenOption;)
09-29 11:30:16.501 1111-1111/com.username.someapp I/dalvikvm﹕ Could not find method java.nio.file.Files.newInputStream, referenced from method okio.Okio.source
09-29 11:30:16.501 1111-1111/com.username.someapp W/dalvikvm﹕ VFY: unable to resolve static method 10775: Ljava/nio/file/Files;.newInputStream (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
09-29 11:30:16.501 1111-1111/com.username.someapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x000a
09-29 11:30:16.511 1111-1111/com.username.someapp D/AndroidRuntime﹕ Shutting down VM
09-29 11:30:16.511 1111-1111/com.username.someapp W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb1aaaba8)
09-29 11:30:16.531 1111-1111/com.username.someapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.username.someapp, PID: 1111
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.username.someapp/com.username.someapp.MapActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.username.someapp.MapActivity.onCreate(MapActivity.java:51)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
我认为可以使用here中的说明
解决问题不要忘记在类路径中包含MapboxAndroidSDK / build.gradle的依赖项!
但我不知道如何在Android Studio中执行此操作。任何人都可以指出究竟是什么依赖关系以及如何?我应该将它们添加为文件 - >项目结构 - >依赖关系 - >库依赖关系 - >?对此有任何见解深表赞赏。
答案 0 :(得分:0)
谢谢Scott Barta。
对于其他有类似问题的人来说,我想详细说明我是如何解决这个问题的。正如Scott指出的那样,我的代码存在问题,而不是SDK。对于初学者,请注意mapbox-android-sdk
附带一个有效的测试应用程序,所以最后如果你被困在这里,请记住应用程序可能不是问题。
无论如何,事实证明我没有正确发起Activity
。我必须使用正确的MapView
实例化它,并使用适当的mapbox:mapid
(应该在*.xml
文件或清单文件中声明。此外,原始页面中的示例是对于fragment
看起来与我的代码略有不同导致了一些混乱。最后,但肯定不是最不重要的,我已经切换了这么多平台让它工作(eclipse,gradle和现在的android工作室)很可能其中一个最大的原因。我计划在某个地方捕获这些更改到我的应用程序,如果我感兴趣,我会更新这个答案的更多细节。