OnePlus One 设备中的位置图崩溃
Posted
技术标签:
【中文标题】OnePlus One 设备中的位置图崩溃【英文标题】:Location map crash in OnePlus One device 【发布时间】:2017-02-27 19:48:08 【问题描述】:我的应用程序在 OnePlus 一台设备上崩溃了。以下是设备的详细信息
一加一(A0001)
氰13.1- ZNH2KAS1KN
android 6.0.1
阿皮接骨木 (5)
而logcat显示错误
无法开始活动 组件信息com.test/com.test.DetailsActivity: android.view.InflateException:二进制 XML 文件第 108 行:二进制 XML 文件第 108 行:膨胀类片段时出错——堆栈跟踪—— java.lang.RuntimeException:无法启动活动 组件信息com.test/com.test.DetailsActivity: android.view.InflateException:二进制 XML 文件第 108 行:二进制 XML 文件第 108 行:膨胀类片段时出错 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5461) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起 作者:android.view.InflateException:二进制 XML 文件第 108 行:二进制 XML 文件第 108 行:在扩展类片段时出错 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppComapatDelegateImplV7.java:256) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 在 com.test.DetailsActivity.onCreate(DetailsActivity.java:313) 在 android.app.Activity.performCreate(Activity.java:6251) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403) ... 9 更多原因:android.view.InflateException:二进制 XML 文件 第 108 行:在扩展类片段时出错 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) ... 17 更多原因:android.content.res.Resources$NotFoundException:文件 /data/system/theme/icons/com.test_7f030000_0.png 来自可绘制 资源 ID #0x7f030000 在 android.content.res.Resources.openRawResource(Resources.java:1336) 在 android.content.res.Resources.openRawResource(Resources.java:1306) 在 maps.V.N.a(Unknown Source) at maps.D.e.a(Unknown Source) at maps.D.p.a(Unknown Source) at maps.ad.ae.a(Unknown Source) at maps.ad.t.a(未知来源)位于 maps.ad.M.a(未知来源)位于 wd.onTransact(:com.google.android.gms.DynamiteModulesB:107) 在 android.os.Binder.transact(Binder.java:387) 在 com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(未知 来源)在 com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(未知 来源)在 com.google.android.gms.dynamic.zza$4.zzb(未知来源)在 com.google.android.gms.dynamic.zza.zza(未知来源)在 com.google.android.gms.dynamic.zza.onCreateView(未知来源)在 com.google.android.gms.maps.SupportMapFragment.onCreateView(未知 来源)在 com.test.fragments.CustomMapFragment.onCreateView(CustomMapFragment.java:39) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1226) 在 android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1328) 在 android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2284) 在 android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111) 在 android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314) 在 android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31) 在 android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754) ... 29 更多原因:java.io.FileNotFoundException: /data/system/theme/icons/com.test_7f030000_0.png 在 android.content.res.AssetManager.openNonAssetNative(Native Method) 在 android.content.res.AssetManager.openNonAsset(AssetManager.java:423) 在 android.content.res.Resources.openRawResource(Resources.java:1333) ... 55 更多
我已经在布局文件中添加了地图片段
<fragment
android:id="@+id/fragment_map"
android:name="com.test.fragments.CustomMapFragment"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:tag="fragment_map" />
public class CustomMapFragment extends SupportMapFragment
private OnTouchListener mListener;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View layout = super.onCreateView(inflater, container, savedInstanceState);
TouchableWrapper frameLayout = new TouchableWrapper(getActivity());
((ViewGroup) layout).addView(frameLayout,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return layout;
public void setListener(OnTouchListener listener)
mListener = listener;
public interface OnTouchListener
void onTouch();
public class TouchableWrapper extends FrameLayout
public TouchableWrapper(Context context)
super(context);
@Override
public boolean dispatchTouchEvent(MotionEvent event)
switch (event.getAction())
case MotionEvent.ACTION_DOWN:
mListener.onTouch();
break;
case MotionEvent.ACTION_UP:
mListener.onTouch();
break;
return super.dispatchTouchEvent(event);
如果有人遇到同样的问题并找到解决此崩溃的任何解决方案,请告诉我。
【问题讨论】:
它在其他设备上也会崩溃吗? CyanogenMod JIRA 中也有类似的问题,看起来这个问题与 CyanogenMod Hexo 主题有关。 jira.cyanogenmod.org/browse/BACON-5169 同样的事情发生在我身上。我查看了堆栈跟踪中提到的资源(在您的情况下,您提供的堆栈跟踪还不够......您需要在那里找到无法加载的资源 ID)资源 ID #0x7f030000。它是应用程序启动器的 mipmap 图标。我已经删除了它,一切都按预期工作。我认为 Cyanogenmod 主题使用的地址与谷歌地图使用的地址相同,或者类似的东西可能会导致冲突。 我已将所有 mipmap 启动器图标也复制到相应的可绘制文件夹中。但它没有用。默认的谷歌地图应用程序在设备中运行良好。 遇到了同样的问题。我真的不想使用 drawable 与 mipmap 解决方案,因为... mipmap 文件夹的存在是有充分理由的。 【参考方案1】:这对我有用,将所有应用程序启动器图标从 mipmap 文件夹移动到相应的可绘制文件夹。删除了 mipmap 文件夹。
更改AndroidManifest.xml
android:icon="@mipmap/ic_launcher"
转android:icon="@drawable/ic_launcher"
注意:Google 不建议这样做,这是一种临时解决方法
【讨论】:
【参考方案2】:我在我的一加一上遇到了同样的问题,我所做的只是将我的设备主题更改为默认主题(系统主题)。在我在这里找到这个问题之前,我不知道这是问题所在。感谢您提出问题。
【讨论】:
【参考方案3】:这个known bug 基本上是因为 Google 更新了他们的 Play 服务而消失了。此外,它通常特定于 Cyanogenmod,而不仅仅是 OnePlus。
【讨论】:
以上是关于OnePlus One 设备中的位置图崩溃的主要内容,如果未能解决你的问题,请参考以下文章
用于 chrome 模拟设备的 OnePlus 3 和 Oneplus 5 视口大小
Flutter 应用程序在 Android 模拟器上运行,但不在物理设备上(OnePlus 7T)