白屏和崩溃 - Android Studio
Posted
技术标签:
【中文标题】白屏和崩溃 - Android Studio【英文标题】:White screen and crash - Android Studio 【发布时间】:2020-09-28 20:56:03 【问题描述】:我一直在关注这个视频https://www.youtube.com/watch?v=Ok9v0YYgIG4 以开始使用 mapbox。 我已经完成了这个人在视频中所做的一切,但是当我在我的设备上启动应用程序时,我得到一个白屏,然后应用程序崩溃(即使我没有错误也没有警告)。有谁知道如何修复它并使其工作?
(现在,我只想在屏幕上放一张地图)
这里是 XML
<com.mapbox.mapboxsdk.maps.Mapview
android:id="@+id/mapView"
android:layout_
android:layout_
mapbox:mapbox_cameraTargetLat="6.641183"
mapbox:mapbox_cameraTargetLng="46.7784736"
mapbox:mapbox_styleUrl="mapbox://styles/mapbox/streets-v10"
mapbox:mapbox_cameraZoom="12"
/>
这里是代码:
public class MapActivity extends AppCompatActivity
private MapView mapView;
private MapboxMap map;
public MapActivity()
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Mapbox.getInstance(this, "pk.eyJ1IjoidGlyYWlubyIsImEiOiJja2F6Y3ZyejQwaWJ6MnJtaWdmcmU3cjV5In0.5_0xHC_VyQUgyvUQ8IVNfA");
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback()
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap)
mapboxMap.setStyle(Style.MAPBOX_STREETS, new Style.OnStyleLoaded()
@Override
public void onStyleLoaded(@NonNull Style style)
// Map is set up and the style has loaded. Now you can add data or make other map adjustments.
);
);
//setContentView(R.layout.activity_map);
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap)
map = mapboxMap;
enableLocation();
@Override
public void onStart()
super.onStart();
mapView.onStart();
@Override
public void onResume()
super.onResume();
mapView.onResume();
@Override
public void onPause()
super.onPause();
mapView.onPause();
@Override
public void onStop()
super.onStop();
mapView.onStop();
@Override
public void onLowMemory()
super.onLowMemory();
mapView.onLowMemory();
@Override
protected void onDestroy()
super.onDestroy();
mapView.onDestroy();
@Override
protected void onSaveInstanceState(Bundle outState)
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
当我查看调试时,我得到了这个:
E/AndroidRuntime: 致命异常: main 进程:com.example.testmapbox,PID:25911 java.lang.RuntimeException:无法启动活动 ComponentInfocom.example.testmapbox/com.example.testmapbox.MainActivity:android.view.InflateException:二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:膨胀类错误com.mapbox.mapboxsdk.maps.Mapview 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199) 在 android.os.Handler.dispatchMessage(Handler.java:112) 在 android.os.Looper.loop(Looper.java:216) 在 android.app.ActivityThread.main(ActivityThread.java:7625) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) 引起:android.view.InflateException:二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:膨胀类 com.mapbox.mapboxsdk.maps.Mapview 时出错 引起:android.view.InflateException:二进制 XML 文件第 9 行:膨胀类 com.mapbox.mapboxsdk.maps.Mapview 时出错 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.mapbox.mapboxsdk.maps.Mapview”:DexPathList [[zip 文件“/data/app/com.example.testmapbox-yBfjzQOu9Iwzqc3V9nJN9g==/base .apk"],nativeLibraryDirectories=[/data/app/com.example.testmapbox-yBfjzQOu9Iwzqc3V9nJN9g==/lib/arm64, /data/app/com.example.testmapbox-yBfjzQOu9Iwzqc3V9nJN9g==/base.apk!/lib/arm64 -v8a、/system/lib64、/product/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 android.view.LayoutInflater.createView(LayoutInflater.java:613) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:874) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 在 androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 在 com.example.testmapbox.MainActivity.onCreate(MainActivity.java:22) 在 android.app.Activity.performCreate(Activity.java:7458) 在 android.app.Activity.performCreate(Activity.java:7448) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199) 在 android.os.Handler.dispatchMessage(Handler.java:112) 在 android.os.Looper.loop(Looper.java:216) 在 android.app.ActivityThread.main(ActivityThread.java:7625) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
【问题讨论】:
您不应在帖子中包含您的 API 密钥。您可能想要生成一个新的 你有崩溃的堆栈跟踪吗? @MichaelKrussel 我编辑了我的帖子,不知道是不是你要求的。 So there error isjava.lang.ClassNotFoundException: Didn't find class "com.mapbox.mapboxsdk.maps.Mapview"
看起来名字是对的,所以这是一些构建配置问题。可能是 R8 从 APK 中删除了该类,但这似乎不太可能,所以我不确定是什么导致了错误。
【参考方案1】:
能否分享一下项目级别的 build.gradle 和应用程序 build.gradle? youtube 视频没有提到项目级别 build.gradle 中所需的配置,所以我认为这可能会丢失。
请参阅此文档,了解需要哪些依赖项:https://docs.mapbox.com/android/maps/overview/#1-add-the-dependency
项目级build.gradle,添加这个:
repositories
mavenCentral()
应用级build.gradle,添加这个:
dependencies
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.2.0'
另外,您的代码定义了两次 onMapReady 回调。您应该摆脱其中之一。
【讨论】:
以上是关于白屏和崩溃 - Android Studio的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅当你运行OpenGL程序的时候,程序并不绘制任何内容,并且白屏和黑屏的时候怎么排查?