我在Lollipop之前使用android中的矢量drawables,这些是我的一些库和工具版本:
我在我的应用级别添加了此属性 Build.Gradle
android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
   }  
}
还值得一提的是,我使用了一个额外的drawable,如Android官方博客(此处链接)中所述的LayerDrawable(layer_list),用于设置外部矢量绘图的drawablesapp:srcCompat
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/search"/>
</level-list>
你会发现在app之外直接引用矢量drawable:srcCompat将在Lollipop之前失败.但是,AppCompat确实支持在另一个可绘制容器(如StateListDrawable,InsetDrawable,LayerDrawable,LevelListDrawable和RotateDrawable)中引用它们时加载矢量drawable.通过使用此 间接,您可以在TextView的android:drawableLeft属性中使用向量drawable,这通常不能支持向量drawable.
当我使用的app:srcCompat一切工作正常,但当我使用时:
android:background
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom
上ImageView,ImageButton,TextView或EditText到棒棒糖之前,它引发厚望:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/search_toggle.xml from drawable resource ID #0x7f0200a9
android vector android-compatibility android-support-library android-drawable
我需要检测我的应用程序是从谷歌播放还是其他市场安装的,我怎么能得到这些信息?
应用程序每月活跃用户超过20000.几个月来它一直在Google Play上播放.在我最近从使用.apk的分发切换到使用.aab进行分发之后,我开始接收崩溃和谷歌游戏商店的随机崩溃.在引入崩溃的构建中没有进行任何其他重大更改.
崩溃发生在应用程序的第一个屏幕上,同时膨胀xml布局.有问题的xml布局是一个简单的初始屏幕,只包含一个图像视图和一个textview.imageview是android.widget.ImageView,不是compat版本,它显示png图像,而不是矢量图像.图像存在于所有可绘制的文件夹变体中:drawable,drawable-mdpi,...,drawable-xxxhdpi.
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company/com.company.ui.splash.SplashActivity}: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class ImageView
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
          at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
          at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
          at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
          at android.os.Handler.dispatchMessage(Handler.java:106)
          at android.os.Looper.loop(Looper.java:193)
          at android.app.ActivityThread.main(ActivityThread.java:6669)
          at java.lang.reflect.Method.invoke(Method.java)
          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
   Caused by android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class ImageView
   Caused by android.view.InflateException: Binary XML file line #14: Error inflating class ImageView
   Caused …SwitchMaterial所以我在一种布局中使用:
<com.google.android.material.switchmaterial.SwitchMaterial...
Firebase Crashlytics 向我发送垃圾邮件,其中许多用户都收到以下错误
致命异常:java.lang.RuntimeException 无法启动活动 ComponentInfo{...}:android.view.InflateException:二进制 XML 文件行 #324:二进制 XML 文件行 #324:膨胀类 com.google.android.material 时出错。 switchmaterial.SwitchMaterial
由 android.content.res.Resources$NotFoundException 引起,来自可绘制资源 ID #0x7f080047 的文件 res/drawable/abc_switch_thumb_material.xml
应用主题:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">...
材料部:
implementation "com.google.android.material:material:1.6.1"
这是什么意思?
更新
我尝试使用SwitchAndroidX AppCompat 库,但仍然存在与可绘制对象相同的问题:
Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo{****.ui.MainActivity}: android.view.InflateException: Binary XML file line #324: Binary XML file line #324: Error inflating class androidx.appcompat.widget.SwitchCompat
Caused by android.content.res.Resources$NotFoundException Drawable ***:drawable/abc_switch_thumb_material with resource ID #0x7f080047
这太奇怪了,虽然它在我的智能手机上运行良好,但它已经影响了我的 22 个用户
是的,我为发布版本启用了以下两个选项
minifyEnabled true
shrinkResources true
但对于不同的应用程序来说,它一直工作得很好,而且我从来不需要向 …
一些背景信息:ResourceNotFoundException当我们迁移到Android应用程序捆绑包发布方法时,我们大多数人都可能遇到过。显然,问题出在侧面加载应用程序。参考这里。
Google最近宣布了针对此问题的解决方案。使用播放核心库,我们可以确定该应用是否为侧面加载(标识丢失的拆分apk)。如果应用程序是侧面加载的,则会显示“ 安装失败 ”弹出窗口,并重定向到Play商店,用户可以在其中通过Google Play商店正确安装该应用程序。
问题:一切正常,直到从Play商店安装缺少的拆分APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。
默认FirebaseApp未在此过程中初始化
注意:直接从Play商店下载应用程序可以正常运行,而不会导致崩溃。仅当由于侧面加载问题而重新下载应用程序时,才会发生崩溃。
代码:
 
项目的build.gradle:  
buildscript {
 dependencies {
  classpath 'com.android.tools.build:bundletool:0.9.0'
 }
}
应用模块的build.gradle:  
 implementation 'com.google.android.play:core:1.6.1'
扩展应用程序的类:
 public void onCreate() {
    if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
        // Skip app initialization.
        return;
    }
    super.onCreate();
    .....
 }
任何帮助都将非常棒。
crash android sideloading android-app-bundle google-play-core
我的应用程序的用户在 Crashlytics 中遇到错误: Caused by android.content.res.Resources$NotFoundException Unable to find resource ID #0x7f080043 for a Drawable。我在我的 APK 中检查了它(在调试下),发现它与可绘制的“abc_spinner_mtrl_am_alpha”相关。我在微调器的后台使用这个可绘制对象。我不是自己创建这个可绘制对象,它来自库 appcompat-1.4.1。但在这个库中,它以多种密度等存在。有没有人遇到过类似的问题并知道它的解决方案/根本原因?
Caused by android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f080043
       at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:253)
       at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:760)
       at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:630)
       at android.content.res.Resources.loadDrawable(Resources.java:886)
       at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953)
       at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
       at android.content.res.XResources$XTypedArray.getDrawable(XResources.java:1363)
       at android.view.View.<init>(View.java:4768)
       at android.widget.TextView.<init>(TextView.java:826)
       at android.widget.TextView.<init>(TextView.java:820)
       at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108)
       at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:103)
       at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:201)
       at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:121)
       at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1566)
       at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1617)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
       at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:416)
       at android.widget.ArrayAdapter.getView(ArrayAdapter.java:407)
       at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:204)
       at android.widget.Spinner.onMeasure(Spinner.java:602)
       at androidx.appcompat.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:438)
       at android.view.View.measure(View.java:22071)
       at …我知道这个问题已经被问过好几次了,我已经阅读了所有这些问题,并且都匹配了所有依赖关系,因此它们具有相同的版本,但是此错误仅在添加Switch Compat之后才开始发生,您也可以通过按结构查看崩溃报告来看到。此错误不是在所有设备上都显示,而是在崩溃报告中显示给某些设备,也没有针对此崩溃的特定Android。由于Android应用程序捆绑包,我正在使用beta版本的android,这件事在非捆绑包(Apk)中不会发生。
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.App/com.App}: android.view.InflateException: Binary XML file line #100: Error inflating class android.support.design.widget.NavigationView
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
       at android.app.ActivityThread.access$1000(ActivityThread.java:211)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:6946)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by android.view.InflateException: Binary XML file line #100: Error inflating class android.support.design.widget.NavigationView
       at android.view.LayoutInflater.createView(LayoutInflater.java:640)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
       at android.support.v7.app.l.b(Unknown Source)
       at android.support.v7.app.e.setContentView(Unknown Source)
       at com.App.onCreate(Unknown Source)
       at android.app.Activity.performCreate(Activity.java:6575)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
       at …android android-studio navigation-drawer switchcompat android-app-bundle
android ×7
google-play ×2
sideloading ×2
apk ×1
crash ×1
material-components-android ×1
switchcompat ×1
vector ×1