问题
I'm new to android dev :)
I'm trying to create a simple app: an activity with a map. I connected my HTC 1x to the computer and when I try to run the app (via intellij IDEA), it crashes.
I have searched for the net (and stackoverflow) for clues and couldn't find any. For example:
- Google Maps v2 - Error
- google map - runtimeexception - error inflating class fragment
Can you please tell me why??
Thanks,
Omer
Tech details:
HTC 1x runs android 4.1.1 Project External libraries: - Android 4.0 Google API's - Android-Support-V4.jar - google-play-services.jar
Main Activity.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment"/> </LinearLayout>
Main Activity.Java
package com.example.mapTest; import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainActivity); } }
Manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mapTest" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.mapTest.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.mapTest.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAEHaDozQSyWTXl77MpGp6Wtvd5RyteV8Q"/> <activity android:name="MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
The exception:
03-19 00:09:30.325: ERROR/NotificationService(434): Ignoring notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=nullnull defaults=0x0 flags=0x62 kind=[null]) 03-19 00:09:41.430: ERROR/MediaScannerService(13421): Exception scanning file android.os.DeadObjectException at android.os.BinderProxy.transact(Native Method) at android.media.IMediaScannerListener$Stub$Proxy.scanCompleted(IMediaScannerListener.java:100) at com.android.providers.media.MediaScannerService$ServiceHandler.handleMessage(MediaScannerService.java:1007) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at com.android.providers.media.MediaScannerService.run(MediaScannerService.java:713) at java.lang.Thread.run(Thread.java:864) 03-19 00:09:48.655: ERROR/ExternalAccountType(31657): Unsupported attribute readOnly 03-19 00:09:48.900: ERROR/ExternalAccountType(31657): Unsupported attribute readOnly 03-19 00:09:51.965: ERROR/EmbeddedLogger(434): App crashed! Process: com.example.mapTest 03-19 00:09:51.965: ERROR/EmbeddedLogger(434): App crashed! Package: com.example.mapTest v1 (1.0) 03-19 00:09:51.965: ERROR/EmbeddedLogger(434): Application Label: mapTest 03-19 00:09:51.965: ERROR/AndroidRuntime(22403): FATAL EXCEPTION: main java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:365) at android.app.Activity.setContentView(Activity.java:1912) at com.example.mapTest.MainActivity.onCreate(MainActivity.java:13) at android.app.Activity.performCreate(Activity.java:5066) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$600(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at android.app.ActivityThread.main(ActivityThread.java:5485) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) at dalvik.system.NativeStart.main(Native Method) 03-19 00:09:53.785: ERROR/MediaScannerService(13421): Exception scanning file android.os.DeadObjectException at android.os.BinderProxy.transact(Native Method) at android.media.IMediaScannerListener$Stub$Proxy.scanCompleted(IMediaScannerListener.java:100) at com.android.providers.media.MediaScannerService$ServiceHandler.handleMessage(MediaScannerService.java:1007) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at com.android.providers.media.MediaScannerService.run(MediaScannerService.java:713) at java.lang.Thread.run(Thread.java:864) 03-19 00:09:54.365: ERROR/NotificationService(434): Ignoring notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=nullnull defaults=0x0 flags=0x62 kind=[null]) 03-19 00:10:03.075: ERROR/ExternalAccountType(31657): Unsupported attribute readOnly 03-19 00:10:03.380: ERROR/NotificationService(434): Ignoring notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=nullnull defaults=0x0 flags=0x62 kind=[null]) 03-19 00:10:03.960: ERROR/ExternalAccountType(31657): Unsupported attribute readOnly 03-19 00:10:08.200: ERROR/MediaScannerService(13421): Exception scanning file android.os.DeadObjectException at android.os.BinderProxy.transact(Native Method) at android.media.IMediaScannerListener$Stub$Proxy.scanCompleted(IMediaScannerListener.java:100) at com.android.providers.media.MediaScannerService$ServiceHandler.handleMessage(MediaScannerService.java:1007) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at com.android.providers.media.MediaScannerService.run(MediaScannerService.java:713) at java.lang.Thread.run(Thread.java:864) 03-19 00:10:10.270: ERROR/AndroidRuntime(23231): FATAL EXCEPTION: main java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:365) at android.app.Activity.setContentView(Activity.java:1912) at com.example.mapTest.MainActivity.onCreate(MainActivity.java:13) at android.app.Activity.performCreate(Activity.java:5066) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$600(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:155) at android.app.ActivityThread.main(ActivityThread.java:5485) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) at dalvik.system.NativeStart.main(Native Method) 03-19 00:10:10.285: ERROR/EmbeddedLogger(434): App crashed! Process: com.example.mapTest 03-19 00:10:10.285: ERROR/EmbeddedLogger(434): App crashed! Package: com.example.mapTest v1 (1.0) 03-19 00:10:10.285: ERROR/EmbeddedLogger(434): Application Label: mapTest
回答1:
Have you included the Google Play Services library in your project? Without it, critical resources are unavailable. See question: java.lang.noclassdeffounderror: com.google.android.gms.R$styleable for more detail.
来源:https://stackoverflow.com/questions/15487998/google-maps-android-api-v2-simple-map-app-crashes