运行时错误而启动的地图 [英] Runtime errors while Launching the Map

查看:431
本文介绍了运行时错误而启动的地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的onCreate()Method..The 2注释行中使用previously推出地图和它的工作fine.Later我发现谷歌doen't使用LocationClient再和他们使用GoogleAPIClient instead.So我改变吧。

  @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        按钮发送=(按钮)findViewById(R.id.button2);        如果(initMap())
        {
            // mLocationClient =新LocationClient(这,这,这);
            //mLocationClient.connect();
            mGoogleApiClient =新GoogleApiClient.Builder(MainActivity.this)
            .addApi(LocationServices.API)
            .addConnectionCallbacks(MainActivity.this)
            .addOnConnectionFailedListener(MainActivity.this)
            。建立();
        }
        其他
        {
            Toast.makeText(这一点,!地图不可用,Toast.LENGTH_SHORT).show();
        }
    }

这是initMap法

 私人布尔initMap(){
        如果(MMAP == NULL)
        {
            //并参考地图对象
            SupportMapFragment mapFrag =(SupportMapFragment)getSupportFragmentManager()findFragmentById(R.id.map)。
            MMAP = mapFrag.getMap();
        }
        返回(MMAP!= NULL);
    }

这是logcat的报告。

  15 12-20:45:47.195:E / AndroidRuntime(1457):致命异常:主要
12-20 15:45:47.195:E / AndroidRuntime(1457):工艺:com.example.mapsproject,PID:1457
12-20 15:45:47.195:E / AndroidRuntime(1457):java.lang.NoClassDefFoundError的:失败的分辨率:LCOM /谷歌/安卓/ GMS / R $设置样式;
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(来源不明)
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.google.android.gms.maps.SupportMapFragment.onInflate(来源不明)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2158)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:297)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.view.LayoutInflater.inflate(LayoutInflater.java:504)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.view.LayoutInflater.inflate(LayoutInflater.java:365)
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.Activity.setContentView(Activity.java:2144)
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.example.mapsproject.MainActivity.onCreate(MainActivity.java:71)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.Activity.performCreate(Activity.java:5933)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.ActivityThread.access $ 800(ActivityThread.java:144)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1278)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.os.Handler.dispatchMessage(Handler.java:102)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.os.Looper.loop(Looper.java:135)
12-20 15:45:47.195:E / AndroidRuntime(1457):在android.app.ActivityThread.main(ActivityThread.java:5221)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.reflect.Method.invoke(本机方法)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.reflect.Method.invoke(Method.java:372)
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
12-20 15:45:47.195:E / AndroidRuntime(1457):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-20 15:45:47.195:E / AndroidRuntime(1457):抛出java.lang.ClassNotFoundException:产生的原因没有找到类com.google.android.gms.R $设置样式的路径:DexPathList [拉链文件/data/app/com.example.mapsproject-2/base.apk\"],nativeLibraryDirectories=[/vendor/lib,/系统/ lib目录]
12-20 15:45:47.195:E / AndroidRuntime(1457):在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.ClassLoader.loadClass(ClassLoader.java:511)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.ClassLoader.loadClass(ClassLoader.java:469)
12-20 15:45:47.195:E / AndroidRuntime(1457):25 ...更多
12-20 15:45:47.195:E / AndroidRuntime(1457):燮pressed:抛出java.lang.ClassNotFoundException:com.google.android.gms.R $设置样式
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.Class.classForName(本机方法)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.BootClassLoader.findClass(ClassLoader.java:781)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
12-20 15:45:47.195:E / AndroidRuntime(1457):在java.lang.ClassLoader.loadClass(ClassLoader.java:504)
12-20 15:45:47.195:E / AndroidRuntime(1457):26 ...更多
12-20 15:45:47.195:E / AndroidRuntime(1457):java.lang.NoClassDefFoundError的:致类没有使用引导类加载器找到;没有堆栈可用
12-20 15:45:51.501:I /流程(1457):发送信号。 PID:1457 SIG:9


解决方案

下面的问题是你的活动是有好的,但是Eclipse并没有包括在APK支持包...
如果你看看在堆栈跟踪你的错误上面,你会发现你的问题的根源:

 的路径没有找到类com.google.android.gms.R $设置样式:DexPathList [zip文件/data/app/com.example.mapsproject- 2 / base.apk],nativeLibraryDirectories = [/供应商/ lib中/系统/ lib目录]

所以,你可以解开APK,其水下爆炸,你会看到不包括兼容包中的类。

为了解决这个问题

使用Eclipse


  • 右键单击您的项目,

  • 属性

  • 构建路径

  • 去出口标签。

  • 确保Android的私人图书馆进行检查。

  • 干净,重建应该把你的轨道上......

使用Android的工作室

升级至Android Stuido 0.8.2后,我有这个问题。我尝试了很多东西,包括


  • 清洁项目

  • 清洁项目(清洁的gradle)

  • 的Invalidate缓存和重新启动

  • 德限定在AndroidManifest.xml中的活动名称(.MyActivity)

没有工作,直到我重新导入整个项目。

文件 - >关闭项目 - >导入项目... - >选择同一个项目 - >确定

希望这说明如果不是请评论如下。
:)

Here's my onCreate() Method..The two commented lines were used previously to launch the map and it worked fine.Later I found out Google doen't use LocationClient anymore and they use GoogleAPIClient instead.So I changed it.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button send = (Button) findViewById(R.id.button2);

        if(initMap())
        {  
            //mLocationClient = new LocationClient(this,this,this);
            //mLocationClient.connect();
            mGoogleApiClient =new GoogleApiClient.Builder(MainActivity.this)
            .addApi(LocationServices.API)
            .addConnectionCallbacks(MainActivity.this)
            .addOnConnectionFailedListener(MainActivity.this)
            .build();
        }
        else
        {
            Toast.makeText(this,"Map Not Available!",Toast.LENGTH_SHORT).show();
        }
    }

This is initMap Method

private boolean initMap(){
        if(mMap==null)
        {
            //making Reference to Map Object
            SupportMapFragment mapFrag = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
            mMap=mapFrag.getMap();
        }
        return(mMap!=null);
    }

This is the logcat report.

12-20 15:45:47.195: E/AndroidRuntime(1457): FATAL EXCEPTION: main
12-20 15:45:47.195: E/AndroidRuntime(1457): Process: com.example.mapsproject, PID: 1457
12-20 15:45:47.195: E/AndroidRuntime(1457): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/R$styleable;
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2158)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:297)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.Activity.setContentView(Activity.java:2144)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.example.mapsproject.MainActivity.onCreate(MainActivity.java:71)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.Activity.performCreate(Activity.java:5933)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.os.Looper.loop(Looper.java:135)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at android.app.ActivityThread.main(ActivityThread.java:5221)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at java.lang.reflect.Method.invoke(Native Method)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at java.lang.reflect.Method.invoke(Method.java:372)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-20 15:45:47.195: E/AndroidRuntime(1457): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.R$styleable" on path: DexPathList[[zip file "/data/app/com.example.mapsproject-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
12-20 15:45:47.195: E/AndroidRuntime(1457):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
12-20 15:45:47.195: E/AndroidRuntime(1457):     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
12-20 15:45:47.195: E/AndroidRuntime(1457):     ... 25 more
12-20 15:45:47.195: E/AndroidRuntime(1457):     Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.R$styleable
12-20 15:45:47.195: E/AndroidRuntime(1457):         at java.lang.Class.classForName(Native Method)
12-20 15:45:47.195: E/AndroidRuntime(1457):         at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
12-20 15:45:47.195: E/AndroidRuntime(1457):         at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
12-20 15:45:47.195: E/AndroidRuntime(1457):         at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
12-20 15:45:47.195: E/AndroidRuntime(1457):         ... 26 more
12-20 15:45:47.195: E/AndroidRuntime(1457):     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
12-20 15:45:51.501: I/Process(1457): Sending signal. PID: 1457 SIG: 9

解决方案

Here is the problem your activity is there alright, but Eclipse didn't include the support package in the APK ... If you look above your error in stacktrace you will notice the root of your problem:

 Didn't find class "com.google.android.gms.R$styleable" on path: DexPathList[[zip file "/data/app/com.example.mapsproject-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

So you can unpack the apk, undex it and you will see the compatibility package classes were not included.

To fix this

Using Eclipse

  • right-click your project,
  • properties
  • build path
  • go to export tab.
  • make sure "Android private libraries" are checked.
  • A clean and rebuild should put you on track ...

Using Android Studio

After upgrading to Android Stuido 0.8.2, I had this problem. I tried a lot of things, including

  • Clean project
  • Clean project (gradle clean)
  • Invalidate Caches and Restart
  • De-qualify the Activity Name in AndroidManifest.xml (.MyActivity)

Nothing worked until I re-imported the entire project.

File -> Close Project -> Import Project... -> Choose the same project -> OK

Hope this Help if not please comment below. :)

这篇关于运行时错误而启动的地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆