Google地图android API V2崩溃 [英] Google map android API V2 crashed
问题描述
我想在我的Android上加载google地图API。我尝试我搜索的一切,但它仍然崩溃。
这是我的MainActivity.java
package com.example.androidmapsv2;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在操作栏中显示向上按钮。
getActionBar()。setDisplayHomeAsUpEnabled(true);
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
GoogleMap map =((SupportMapFragment)getSupportFragmentManager()。findFragmentById(R.id.map))。getMap();
}
}
layout activity_main.xml
<?xml version =1.0encoding =utf-8?&
< RelativeLayout xmlns:android =http://schemas.android.com/apk/res/android
xmlns:tools =http://schemas.android.com/tools
android:layout_width =match_parent
android:layout_height =match_parent
tools:context =。MainActivity>
< fragment
android:id =@ + id / map
android:layout_width =match_parent
android:layout_height =match_parent
class = com.google.android.gms.maps.SupportMapFragment/>
< / RelativeLayout>
这是我的清单
<?xml version =1.0encoding =utf-8?>
< manifest xmlns:android =http://schemas.android.com/apk/res/android
package =com.example.androidmapsv2
android:versionCode = 1
android:versionName =1.0>
< uses-sdk
android:minSdkVersion =11
android:targetSdkVersion =16/>
< permission
android:name =com.example.androidmapsv2.permission.MAPS_RECEIVE
android:protectionLevel =signature>
< / permission>
< uses-permission android:name =com.example.androidmapsv2.permission.MAPS_RECEIVE/>
< uses-permission android:name =android.permission.INTERNET/>
< uses-permission android:name =com.google.android.providers.gsf.permission.READ_GSERVICES/>
< uses-permission android:name =android.permission.WRITE_EXTERNAL_STORAGE/>
< uses-permission android:name =android.permission.ACCESS_FINE_LOCATION/>
<! - 要求OpenGL ES版本2 - >
< uses-feature
android:glEsVersion =0x00020000
android:required =true/>
< application
android:allowBackup =true
android:icon =@ drawable / ic_launcher
android:label =@ string / app_name
android:theme =@ style / AppTheme>
< uses-library android:name =com.google.android.maps/>
< activity
android:name =com.example.androidmapsv2.MainActivity
android:label =aaa>
< intent-filter>
< action android:name =android.intent.action.MAIN/>
< category android:name =android.intent.category.LAUNCHER/>
< / intent-filter>
< / activity>
< meta-data
android:name =com.google.android.maps.v2.API_KEY
android:value =AIzaSyDr9xN8L3sF6W2ZRWmTR7q0lhTeOWhXEfQ/>
< / application>
< / manifest>
这是我有
的密钥
这是包含的libs(解决更新)
我不有一个真正的Android设备,所以我在这个教程中的模拟器上安装它
这是logcat
01-09 18:05:19.184:E / Trace跟踪文件:没有这样的文件或目录(2)
01-09 18:05:19.354:W / dalvikvm(1366):无法解析Lcom / example / androidmapsv2 / MainActivity的超类; (5)
01-09 18:05:19.354:W / dalvikvm(1366):类'Lcom / example / androidmapsv2 / MainActivity;'失败的链接
01-09 18:05:19.365: D / AndroidRuntime(1366):关闭VM
01-09 18:05:19.365:W / dalvikvm(1366):threadid = 1:线程以未捕获异常退出(组= 0x40a13300)
01- 09:05:19.384:E / AndroidRuntime(1366):FATAL EXCEPTION:main
01-09 18:05:19.384:E / AndroidRuntime(1366):java.lang.RuntimeException:无法实例化活动ComponentInfo { com.example.androidmapsv2 / com.example.androidmapsv2.MainActivity}:java.lang.ClassNotFoundException:com.example.androidmapsv2.MainActivity
01-09 18:05:19.384:E / AndroidRuntime(1366):在android .app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.app.ActivityThread.access $ 600(ActivityThread.java:130)
01-09 18:05:19.384:E / AndroidRuntime (1366):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1195)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.os.Handler.dispatchMessage Handler.java:99)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.os.Looper.loop(Looper.java:137)
01-09 18: 05:19.384:E / AndroidRuntime(1366):在android.app.ActivityThread.main(ActivityThread.java:4745)
01-09 18:05:19.384:E / AndroidRuntime .reflect.Method.invokeNative(Native Method)
01-09 18:05:19.384:E / AndroidRuntime(1366):at java.lang.reflect.Method.invoke(Method.java:511)
01-09 18:05:19.384:E / AndroidRuntime(1366):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
01-09 18:05:19.384 :E / AndroidRuntime(1366):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-09 18:05:19.384:E / AndroidRuntime(1366):at dalvik。 system.NativeStart.main(Native Method)
01-09 18:05:19.384:E / AndroidRuntime(1366):Caused by:java.lang.ClassNotFoundException:com.example.androidmapsv2.MainActivity
01 -09 18:05:19.384:E / AndroidRuntime(1366):at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
01-09 18:05:19.384:E / AndroidRuntime在java.lang.ClassLoader.loadClass(ClassLoader.java:501)
01-09 18:05:19.384:E / AndroidRuntime(1366):在java.lang.ClassLoader.loadClass(ClassLoader.java:461)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.app.Instrumentation.newActivity(Instrumentation.java:1053)
01-09 18:05:19.384:E / AndroidRuntime(1366):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
01-09 18:05:19.384:E / AndroidRuntime(1366):... 11
UPDATED
尝试将google-play-services_lib复制到工作区,红色标记消失
但是它带来了另一个错误。它缺少google-play-services_lib.jar(lib文件夹名称+ .jar)。如何修复它
当我点击google-play- services_lib.jar,删除按钮不显示(如图片)。但我尝试删除所有Android依赖项,并再次导入其他lib。现在它工作,但仍然崩溃。
我已尝试更改
MainActivity扩展活动
至
MainActivity extends FragmentActivity
和布局
<?xml version =1.0encoding =utf-8?>
< RelativeLayout xmlns:android =http://schemas.android.com/apk/res/android
xmlns:tools =http://schemas.android.com/tools
android:layout_width =match_parent
android:layout_height =match_parent
tools:context =。MainActivity>
< fragment
android:id =@ + id / map
android:layout_width =match_parent
android:layout_height =match_parent
class = com.google.android.gms.maps.SupportMapFragment/>
< / RelativeLayout>
它出现另一个错误。帮助我,现在我离开这个
的解决方案
最后,我解决了我的错误。它由我的eclipse(我猜)。当你添加库类时,它会自动出现google-play-services_lib.jar,你不必做任何事情。我重新安装Eclipse,一切工作正常
解决方案当我第一次使用API V2编写地图时,我也面临这种问题。
只需尝试使用
FragmentActivity
的扩展而不是Activity
您必须将项目(goolge_play_services)复制到您的工作区中,然后将其附加到您的项目。在上面的图像中,它显示十字红色,所以选择它和删除,然后再次添加附加库与项目。
I want to load the google map API on my android. I try everything I search but it still crash. this is my MainActivity.java
package com.example.androidmapsv2; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Show the Up button in the action bar. getActionBar().setDisplayHomeAsUpEnabled(true); GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); } }
This is my layout activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment"/> </RelativeLayout>
This is my manifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidmapsv2" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="16" /> <permission android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" android:protectionLevel="signature" > </permission> <uses-permission android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Require OpenGL ES version 2 --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="com.google.android.maps" /> <activity android:name="com.example.androidmapsv2.MainActivity" android:label="aaa" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDr9xN8L3sF6W2ZRWmTR7q0lhTeOWhXEfQ" /> </application> </manifest>
This is the key i've got
This is the libs included (Solved in update)
and i don't have a real android device, so i install it on emulator in this tutorial
This is the logcat
01-09 18:05:19.184: E/Trace(1366): error opening trace file: No such file or directory (2) 01-09 18:05:19.354: W/dalvikvm(1366): Unable to resolve superclass of Lcom/example/androidmapsv2/MainActivity; (5) 01-09 18:05:19.354: W/dalvikvm(1366): Link of class 'Lcom/example/androidmapsv2/MainActivity;' failed 01-09 18:05:19.365: D/AndroidRuntime(1366): Shutting down VM 01-09 18:05:19.365: W/dalvikvm(1366): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 01-09 18:05:19.384: E/AndroidRuntime(1366): FATAL EXCEPTION: main 01-09 18:05:19.384: E/AndroidRuntime(1366): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.androidmapsv2/com.example.androidmapsv2.MainActivity}: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread.access$600(ActivityThread.java:130) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.os.Handler.dispatchMessage(Handler.java:99) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.os.Looper.loop(Looper.java:137) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread.main(ActivityThread.java:4745) 01-09 18:05:19.384: E/AndroidRuntime(1366): at java.lang.reflect.Method.invokeNative(Native Method) 01-09 18:05:19.384: E/AndroidRuntime(1366): at java.lang.reflect.Method.invoke(Method.java:511) 01-09 18:05:19.384: E/AndroidRuntime(1366): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 01-09 18:05:19.384: E/AndroidRuntime(1366): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-09 18:05:19.384: E/AndroidRuntime(1366): at dalvik.system.NativeStart.main(Native Method) 01-09 18:05:19.384: E/AndroidRuntime(1366): Caused by: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 01-09 18:05:19.384: E/AndroidRuntime(1366): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 01-09 18:05:19.384: E/AndroidRuntime(1366): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 01-09 18:05:19.384: E/AndroidRuntime(1366): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 01-09 18:05:19.384: E/AndroidRuntime(1366): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974) 01-09 18:05:19.384: E/AndroidRuntime(1366): ... 11 more
UPDATED
i've tried to copy the google-play-services_lib to workspace and red mark disappear but it come another error. It missing the google-play-services_lib.jar (the lib folder name + .jar). how to fix it when i click the google-play-services_lib.jar, the remove button doesn't show up(like picture). However i try remove all Android Dependencies and import the others lib again. now it working, but still crash.
I've tried change
MainActivity extends Activity
To
MainActivity extends FragmentActivity
and the layout
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment"/> </RelativeLayout>
it appear another error. help me, now i'm out of solution for this
Finally, i solved my error. It caused by my eclipse (i guess). When you add the library class, it automatically appear "google-play-services_lib.jar", you don't have to do anything. I reinstall Eclipse and everything work fine
解决方案I also faces this kind of the problem,when first time coding for the map with API V2.
Just try using the extends with
FragmentActivity
instead of theActivity
you have to copy the project(goolge_play_services) into your workspace and then attach it to your project. In above image it show the cross red,so select it and remove and then after once again add attach the library with the project.
这篇关于Google地图android API V2崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!