Closed kartik0198 closed 3 years ago
Hey @kartik0198,
1) Is this the full stack trace? If not, can you post the full stack trace?
2) Are you supporting different pixel densities with your icons/drawables for the ExpandableFab (res/drawable
, res/drawable-xhdpi
, etc)?
3) Are you supporting different screen sizes or orientations with your layouts (i.e. res/layout-large
, res/layout-land
, res/layout-w600dp
, etc)?
4) Can I see how you're initializing your ExpandableFabLayout and its children (through XML or code)? Please use markdown for code blocks when posting it, so your code looks like this
and is easier to read.
Fatal Exception: android.view.InflateException
Binary XML file line #158: Binary XML file line #36: Error inflating class com.nambimobile.widgets.efab.ExpandableFab
Caused by android.view.InflateException Binary XML file line #36: Error inflating class com.nambimobile.widgets.efab.ExpandableFab
Caused by java.lang.reflect.InvocationTargetException java.lang.reflect.Constructor.newInstance0 (Constructor.java) androidx.databinding.DataBindingUtil.inflate (DataBindingUtil.java:95) com.niyotail.consumer.ui.base.BaseFragment.onCreateView (BaseFragment.java:48) androidx.fragment.app.Fragment.performCreateView (Fragment.java:2963) androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:246) com.niyotail.consumer.ui.main.MainActivity.onStart (MainActivity.java:331) android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1391) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f070113
at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:225)
at android.content.res.Resources.getDrawableForDensity(Resources.java:887)
at android.content.res.Resources.getDrawable(Resources.java:827)
at android.content.Context.getDrawable(Context.java:635)
at androidx.core.content.ContextCompat$Api21Impl.getDrawable(ContextCompat.java:862)
at com.nambimobile.widgets.efab.ExpandableFab.setOptionalProperties(ExpandableFab.java:480)
at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:480)
at com.nambimobile.widgets.efab.ExpandableFab.
2. Are you supporting different pixel densities with your icons/drawables for the ExpandableFab (res/drawable, res/drawable-xhdpi, etc)? No, we are not as we are using svg (vectors) for all drawables.
3. Are you supporting different screen sizes or orientations with your layouts (i.e. res/layout-large, res/layout-land, res/layout-w600dp, etc)? No, we are not.
4. Here's my XML file.
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<com.nambimobile.widgets.efab.ExpandableFabLayout
android:id="@+id/fab_layout_support"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.nambimobile.widgets.efab.Overlay
android:id="@+id/fab_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:overlay_closingAnimationDurationMs="0"
app:overlay_openingAnimationDurationMs="0" />
<com.nambimobile.widgets.efab.ExpandableFab
android:id="@+id/fab_support"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="@dimen/space_lg"
android:layout_marginBottom="42dp"
app:efab_closingAnimationDurationMs="0"
app:efab_color="@color/color_primary"
app:efab_icon="@drawable/ic_support_button"
app:efab_iconAnimationRotationDeg="0"
app:efab_openingAnimationDurationMs="0"
app:fab_color="@color/color_primary"
app:label_backgroundColor="@color/color_primary"
app:label_hiddenToVisibleAnimationDurationMs="0"
app:label_visibleToHiddenAnimationDurationMs="0" />
<com.nambimobile.widgets.efab.FabOption
android:id="@+id/action_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_closingAnimationDurationMs="100"
app:fab_color="@color/color_primary"
app:fab_icon="@drawable/ic_call"
app:fab_openingAnimationDurationMs="100"
app:label_backgroundColor="@color/color_primary"
app:label_hiddenToVisibleAnimationDurationMs="100"
app:label_text="@string/call_support"
app:label_visibleToHiddenAnimationDurationMs="100" />
<com.nambimobile.widgets.efab.FabOption
android:id="@+id/action_feedback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_closingAnimationDurationMs="100"
app:fab_color="@color/color_primary"
app:fab_icon="@drawable/ic_thumbsup"
app:fab_openingAnimationDurationMs="100"
app:label_backgroundColor="@color/color_primary"
app:label_hiddenToVisibleAnimationDurationMs="100"
app:label_text="@string/feedback"
app:label_visibleToHiddenAnimationDurationMs="100" />
<com.nambimobile.widgets.efab.FabOption
android:id="@+id/action_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_closingAnimationDurationMs="100"
app:fab_color="@color/color_primary"
app:fab_icon="@drawable/ic_support_person"
app:fab_openingAnimationDurationMs="100"
app:label_backgroundColor="@color/color_primary"
app:label_hiddenToVisibleAnimationDurationMs="100"
app:label_text="Get help"
app:label_visibleToHiddenAnimationDurationMs="100" />
</com.nambimobile.widgets.efab.ExpandableFabLayout>
Hey @kartik0198.
From my review of the stack trace, it looks to me that a drawable being used for the ExpandableFab icon:
res/drawable-xhdpi
while the Android framework is checking in res/drawable-xxxhdpi
and res/drawable
for a specific user's device, for example), orSo my next questions to you are:
1) I know I asked this previously, but are you sure that the ic_support_button
drawable that you're setting for app:efab_icon
is actually in res/drawable
and not in a density-specific folder (like res/drawable-xhdpi
, res/drawable-xxxhdpi
, etc)? Can you double check?
1.a) Is ic_support_button
an icon you created and you're 100% sure it's not in a density-specific folder, or is it a drawable you're accessing from a 3rd party library or framework?
2) The library defaults to setting ExpandableFab's icon to a drawable called ic_plus_white_24dp
(a white plus sign) before trying to apply the drawable a developer sets in their own project. Is it possible that you also have a drawable called ic_plus_white_24dp
that is in a density-specific folder (and may be overriding the drawable in the library)?
3) Are you sure you're using the latest version of the library (v1.1.1)?
4) EDIT: Can you post the XML for that ic_support_button
vector image?
5) EDIT: Is this error occurring on any devices running at or above Android Lollipop (aka SDK 21 or SDK 22 or Android 5.0 or Android 5.1)? If it's only failing on devices running less than Lollipop, it may actually be a different issue. I see the potential fix, but I can't recreate the issue in an Emulator to be sure unfortunately...
I also wonder if either the library's default icon (ic_plus_white_24dp
), or your icon (ic_support_button
), is somehow not being loaded in time, or is missing from the APK the user has installed. Are you publishing your app to Google Play using the new App Bundle format (.aab instead of .apk)? If so, I wonder if it's being smarter than it should be and is not installing all the resources the user's device needs at install time (though this would hopefully be unlikely).
Hey @kartik0198,
Any update?
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="23dp"
android:height="24dp"
android:viewportWidth="23"
android:viewportHeight="24">
<path
android:fillColor="@color/white"
android:pathData="M11.5 23.206c1.583 0 2.903-0.867 3.19-2.01h2.895c1.735 0 3.146-1.412 3.146-3.147v-0.253C22.017 17.574 23 16.458 23 15.11v-2.269c0-1.348-0.983-2.465-2.269-2.687V9.231C20.731 4.14 16.59 0 11.5 0S2.269 4.14 2.269 9.23v0.924C0.983 10.376 0 11.492 0 12.841v2.269c0 1.507 1.226 2.733 2.733 2.733 1.507 0 2.733-1.226 2.733-2.733v-2.269c0-1.348-0.983-2.465-2.269-2.687V9.231c0-4.578 3.725-8.303 8.303-8.303 4.578 0 8.303 3.725 8.303 8.303v0.923c-1.286 0.222-2.27 1.338-2.27 2.687v2.269c0 1.348 0.984 2.464 2.27 2.686v0.253c0 1.223-0.995 2.218-2.218 2.218H14.69c-0.286-1.144-1.606-2.011-3.19-2.011-1.79 0-3.248 1.11-3.248 2.475s1.457 2.475 3.249 2.475zM4.538 12.841v2.269c0 0.995-0.81 1.805-1.805 1.805-0.995 0-1.805-0.81-1.805-1.805v-2.269c0-0.995 0.81-1.805 1.805-1.805 0.995 0 1.805 0.81 1.805 1.805zm13.924 2.269v-2.269c0-0.995 0.81-1.805 1.805-1.805 0.995 0 1.805 0.81 1.805 1.805v2.269c0 0.995-0.81 1.805-1.805 1.805-0.995 0-1.805-0.81-1.805-1.805zM11.5 19.184c1.21 0 2.23 0.658 2.306 1.455-0.006 0.03-0.018 0.06-0.018 0.092 0 0.033 0.012 0.062 0.018 0.092-0.075 0.797-1.095 1.455-2.306 1.455-1.258 0-2.32-0.708-2.32-1.547s1.062-1.547 2.32-1.547z" />
<path
android:fillColor="@color/white"
android:pathData="M6.637 9.504c-0.12 0.028-0.224 0.103-0.29 0.208-0.064 0.105-0.085 0.231-0.056 0.351 0.131 0.551 0.35 1.075 0.646 1.558 0.065 0.105 0.169 0.18 0.289 0.209 0.12 0.027 0.246 0.007 0.351-0.058C7.7 11.697 8.02 11.74 8.298 12.02c0.28 0.28 0.324 0.598 0.248 0.721-0.065 0.105-0.086 0.231-0.057 0.351 0.028 0.12 0.103 0.224 0.208 0.289 0.484 0.297 1.008 0.515 1.558 0.646 0.036 0.009 0.072 0.013 0.108 0.013 0.085 0 0.17-0.024 0.244-0.07 0.105-0.064 0.18-0.169 0.208-0.289 0.033-0.14 0.289-0.335 0.685-0.335 0.396 0 0.652 0.195 0.685 0.335 0.028 0.12 0.103 0.225 0.208 0.29 0.105 0.065 0.231 0.086 0.351 0.056 0.55-0.13 1.075-0.348 1.559-0.646 0.105-0.065 0.18-0.169 0.208-0.289 0.028-0.12 0.008-0.246-0.057-0.35-0.076-0.124-0.032-0.442 0.248-0.722 0.28-0.28 0.599-0.322 0.72-0.248 0.105 0.065 0.232 0.085 0.352 0.058 0.12-0.029 0.224-0.104 0.289-0.209 0.297-0.484 0.515-1.008 0.646-1.558 0.028-0.12 0.008-0.247-0.057-0.351-0.065-0.105-0.169-0.18-0.289-0.208-0.14-0.034-0.335-0.29-0.335-0.686 0-0.396 0.195-0.652 0.335-0.685 0.12-0.028 0.224-0.103 0.289-0.208 0.065-0.105 0.085-0.231 0.057-0.351-0.131-0.55-0.349-1.074-0.646-1.559-0.065-0.104-0.169-0.18-0.289-0.208-0.12-0.028-0.246-0.008-0.351 0.057C15.3 5.94 14.98 5.896 14.702 5.617c-0.28-0.28-0.324-0.599-0.248-0.721 0.065-0.105 0.085-0.232 0.057-0.352-0.028-0.12-0.103-0.223-0.208-0.288-0.484-0.298-1.009-0.516-1.559-0.646-0.12-0.029-0.246-0.009-0.351 0.056-0.105 0.065-0.18 0.17-0.208 0.29-0.033 0.14-0.29 0.334-0.685 0.334-0.396 0-0.652-0.194-0.685-0.335-0.028-0.12-0.103-0.224-0.208-0.289-0.105-0.065-0.233-0.085-0.352-0.056-0.55 0.13-1.074 0.348-1.558 0.646-0.105 0.065-0.18 0.168-0.208 0.288C8.46 4.664 8.48 4.791 8.546 4.896c0.076 0.122 0.032 0.44-0.248 0.72-0.28 0.28-0.598 0.324-0.72 0.248C7.471 5.8 7.345 5.778 7.225 5.807 7.106 5.835 7.002 5.91 6.937 6.015 6.64 6.5 6.423 7.023 6.291 7.573 6.262 7.693 6.283 7.82 6.348 7.925c0.064 0.105 0.168 0.18 0.289 0.208 0.14 0.033 0.335 0.29 0.335 0.685 0 0.396-0.195 0.652-0.335 0.686zM7.292 7.44c0.07-0.215 0.157-0.423 0.26-0.624 0.463 0.063 0.99-0.132 1.403-0.544C9.367 5.86 9.56 5.334 9.498 4.87c0.202-0.103 0.41-0.19 0.625-0.26 0.285 0.373 0.793 0.609 1.377 0.609s1.092-0.236 1.377-0.608c0.214 0.07 0.423 0.156 0.624 0.259-0.061 0.464 0.132 0.99 0.544 1.403 0.413 0.412 0.939 0.607 1.403 0.544 0.103 0.202 0.19 0.41 0.26 0.624C15.335 7.726 15.1 8.235 15.1 8.818c0 0.584 0.235 1.093 0.608 1.378-0.07 0.214-0.157 0.422-0.26 0.624-0.464-0.063-0.99 0.131-1.403 0.544-0.412 0.412-0.605 0.938-0.544 1.403-0.201 0.103-0.41 0.19-0.624 0.259-0.285-0.372-0.793-0.608-1.377-0.608s-1.092 0.236-1.377 0.608c-0.214-0.07-0.423-0.156-0.625-0.259 0.062-0.464-0.13-0.99-0.543-1.403-0.413-0.413-0.94-0.606-1.404-0.544-0.102-0.201-0.189-0.41-0.259-0.624C7.665 9.91 7.9 9.402 7.9 8.818c0-0.583-0.235-1.092-0.608-1.377z" />
<path
android:fillColor="@color/white"
android:pathData="M11.5 11.504c1.481 0 2.686-1.204 2.686-2.686 0-1.48-1.205-2.685-2.686-2.685-1.481 0-2.686 1.204-2.686 2.685 0 1.482 1.205 2.686 2.686 2.686zm0-4.443c0.97 0 1.758 0.788 1.758 1.757 0 0.97-0.789 1.758-1.758 1.758-0.97 0-1.758-0.789-1.758-1.758S10.53 7.061 11.5 7.061z" />
</vector>
5. It is crashing on Android version 8 and 9 as of now. Potentially nexus 5, Pixel 3 XL, Pixel 3a. nexus 5x
Yes we are using .aab format in google play store
EDIT:
TLDR: I have pushed a fix to master branch that will soon go into the next stable release on Maven Central. However, this fix is for a related issue on devices running Android SDK 20 and lower. I haven't been able to reproduce any such error on Android Oreo, Pie or above, so I'm not sure if it'll fix the similar issue that you're seeing on those user devices. If you know how to reproduce this on Oreo and above, please let me know.
So your vector drawable helped me reproduce a similar error which I fixed. This error should only occur on devices running SDK 20 or lower though, so I'm not sure if it'll fix the issue you're seeing occur on Android Oreo and Pie.
So my steps to reproduce:
ic_support_button
vector paths.ic_support_button
vector drawable.
Caused by: java.lang.RuntimeException: Error while processing [redacted]\ExpandableFab\examples\src\main\res\drawable\test_resource.xml : Can't process attribute android:fillColor="@color/white": references to other resources are not supported by build-time PNG generation.
File was preprocessed as vector drawable support was added in Android 5.0 (API level 21)
See http://developer.android.com/tools/help/vector-asset-studio.html for details.
...
Caused by: org.gradle.api.GradleException: Can't process attribute android:fillColor="@color/white": references to other resources are not supported by build-time PNG generation. File was preprocessed as vector drawable support was added in Android 5.0 (API level 21) See http://developer.android.com/tools/help/vector-asset-studio.html for details. ...
The issue stems from attempting to reference one resource (`@color/white`) from inside another (`ic_support_button`). This [Stack Overflow answer](https://stackoverflow.com/a/53846109/14032472) says to add `vectorDrawables.useSupportLibrary = true` to your `defaultConfig` block in your build.gradle. I'm assuming you followed a similar solution and that's why you were able to build.
5. Now the app can build, even though we still reference a color resource from our vector drawable. However, setting `vectorDrawables.useSupportLibrary = true` now introduces a new bug on devices running Android Lollipop or lower:
android.content.res.Resources$NotFoundException: File res/drawable/ic_walk_white_24dp.xml from drawable resource ID #0x7f070080 ...
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector ...
This error is directly caused by setting `vectorDrawables.useSupportLibrary = true` and only occurs on versions of Android that didn't have direct vector drawable support. To fix this, I updated the library to use `AppCompatResources.getDrawable` when attempting to load a vector drawable from resources, instead of the `ContextCompat.getDrawable` call I was using. This fixes this chain of errors.
Again though, this fix works for devices running SDK 20 and below. I haven't been able to reproduce this on Oreo (SDK 26 and 27) and above, but I will keep researching. If you know how to reproduce on those devices, please let me know. In the meantime you can update your version of the ExpandableFab library when I release it and see if it helps.
Hey @kartik0198,
v1.2.0 of the library was just published. The bug I described above is fixed in this version. If you choose to use it, let me know if it solves the issue some of your users were experiencing. If it doesn't, I'd be glad to do further research into the problem.
Thanks, I am releasing a new build with the updated library. Will let you know if there is a regression.
Hi @kabumere , i am still getting this crash on the latest version i.e v1.2.1.
Caused by android.content.res.Resources$NotFoundException
Resource ID #0x7f07011a
android.content.res.ResourcesImpl.getValue (ResourcesImpl.java:190)
androidx.appcompat.content.res.AppCompatResources.getDrawable (AppCompatResources.java:104)
com.nambimobile.widgets.efab.ExpandableFab.<init> (ExpandableFab.java:76)
java.lang.reflect.Constructor.newInstance0 (Constructor.java)
androidx.databinding.DataBindingUtil.inflate (DataBindingUtil.java:95)
com.niyotail.consumer.ui.base.BaseFragment.onCreateView (BaseFragment.java:48)
androidx.fragment.app.Fragment.performCreateView (Fragment.java:2963)
androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:246)
com.niyotail.consumer.ui.main.MainActivity.onStart (MainActivity.java:331)
android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1248)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:780)
Crash stats: 75% crashes on - Android 9 13%- Android 7 12%- Android 8
Hey @kartik0198,
Are you able to reproduce the crash on your end? If so, can you post the steps to reproduce? I can't reproduce that bug.
Nope, i am not able to reproduce this crash but its crashing heavily, most frequent crash now in the latest version. :( also most of the crashes are in android 7
From all your stack traces, the issue is occurring when trying to set an icon on the main ExpandableFab button (here specifically). We use to use ContextCompat
instead of AppCompatResources
, but even the old way still caused issues to some of your users.
I can't reproduce the crash, and it sounds like you can't reproduce the crash either. So without steps on how to reproduce it so I can solve it, we're kind of flying in the dark here at this point. I'm surprised you're getting the crash so frequently, as this seems like an edge case (since I haven't been hearing anyone else encounter this issue).
Is the crash happening frequently to the same users? Or is it happening frequently to unique users every time?
You could try giving me more data so I can try to more accurately mimic the environment your users are installing from, but I can't guarantee that it'll help without definitive steps to reproduce.
vectorDrawables.useSupportLibrary = true
defined in your build.gradle? Are there any other related properties you've added to your build.gradle?What Android versions is this affecting (is only only Android 7, or is Android 7 the biggest share, but it's still happening to 8, 9, 10, etc)? - Android 7 17% Android 9 3% Android 8
What device models is this affecting (Samsung S series? Google Pixels? Huawei?)? - 47% OnePlus 32% samsung 17% Google
What are the top user regions that are getting affected (US? India? South Korea?)? - users are from india only as the app is used in india only. Do you know if your app is being sideloaded, instead of being installed directly from the Google Play Store? - can't say, although i also think that this issue is being caused only when the app is sideloaded (its e-com app so people may/do sideload for referral benefits) this could create issues with resources, especially with the new app bundle format that Google uses to generate APKs specific to a user's device configuration Do you have something like vectorDrawables.useSupportLibrary = true defined in your build.gradle? Are there any other related properties you've added to your build.gradle? - no i dont have this property defined in my gradle
@kartik0198,
That's surprising. When I try to use your ic_support_button
drawable from above, I get the following error when building:
Caused by: org.gradle.api.GradleException: Can't process attribute android:fillColor="@color/white": references to other resources are not supported by build-time PNG generation.
File was preprocessed as vector drawable support was added in Android 5.0 (API level 21)
See http://developer.android.com/tools/help/vector-asset-studio.html for details.
at com.android.build.gradle.tasks.MergeResources$MergeResourcesVectorDrawableRenderer.generateFile(MergeResources.java:440)
at com.android.ide.common.resources.MergedResourceWriter$FileGenerationWorkAction.run(MergedResourceWriter.java:412)
... 31 more
It's because your vector drawable references other resources inside of it (e.g.: you use android:fillColor="@color/white"
which references a color resource, instead of just using android:fillColor="#FFFFFF"
.
I have been following this Stack Overflow answer and including vectorDrawables.useSupportLibrary = true
in my build.gradle in order to get the error to go away and build.
If you're not setting vectorDrawables.useSupportLibrary = true
in your build.gradle though, how did you avoid that error? Or is your minSDK >= 24?
If your minSDK is less than 24, you should be getting this error too. Maybe the solution you used is leading to the issue and that's why I haven't been able to replicate it? Do you mind posting your build.gradle?
That's strange, my minsdk is set at 21 but still i am not getting any gradle errors. In any case, i have changed the fill color to absolute value instead of referencing to a color resource (android:fillColor="#FFFFFF"). Here's my gradle file -
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'dagger.hilt.android.plugin'
apply plugin: 'com.google.firebase.firebase-perf'
apply from: '../ktlint.gradle'
android {
def versionMajor = 2
def versionMinor = 5
def versionPatch = 2
def releaseNumber = 98
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "(hidden)"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 30000 + releaseNumber
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
buildConfigField "int", "RELEASE_NUMBER", "$releaseNumber"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
debug {
storeFile file('../keystore/debug.keystore')
storePassword "(hidden)"
keyAlias "(hidden)"
keyPassword "(hidden)"
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
debuggable true
minifyEnabled false
firebaseCrashlytics { mappingFileUploadEnabled false }
buildConfigField "String", "API_ENDPOINT", "(hidden)"
applicationIdSuffix ".d"
versionNameSuffix "-d"
resValue "string", "app_name", "(hidden)"
}
release {
debuggable false
minifyEnabled true
firebaseCrashlytics { mappingFileUploadEnabled true }
shrinkResources true
buildConfigField "String", "API_ENDPOINT", "(hidden)"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "(hidden)"
}
}
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "(hidden)-v${variant.versionName}(${variant.versionCode})-${variant.buildType.name}.apk"
}
}
buildTypes.each {
it.buildConfigField "String", "MIXPANEL_API_KEY", mixpanelApiKey
}
compileOptions {
sourceCompatibility rootProject.ext.javaVersion
targetCompatibility rootProject.ext.javaVersion
}
kotlinOptions {
jvmTarget = rootProject.ext.javaVersion.toString()
}
buildFeatures {
dataBinding true
}
bundle {
language {
/* Specifies that the app bundle should not support configuration APKs for language resources. These
resources are instead packaged with each base and dynamic feature APK. */
enableSplit = false
}
}
}
dependencies {
//implementation 'androidx.legacy:legacy-support-v4:1.0.0'
/* PLEASE KEEP THE DEPENDENCIES BLOCK CLEAN BY ADDING NEW LIBRARIES AS PER THE CATEGORY ONLY !! */
def retrofit_version = '2.9.0'
def room_version = "2.3.0"
implementation fileTree(dir: 'libs', include: ['*.jar'])
//Modules
implementation project(path: ':analytics')
implementation project(path: ':barcode')
implementation project(path: ':core')
implementation project(path: ':commons:utils')
implementation project(path: ':commons:ui')
implementation project(path: ':commons:views')
//Kotlin
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.5.2-native-mt'
//AndroidX
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.activity:activity-ktx:1.4.0'
implementation "androidx.fragment:fragment-ktx:1.3.6"
implementation "androidx.recyclerview:recyclerview:1.2.1"
//Jetpack Components
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.0"
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
implementation "androidx.paging:paging-runtime-ktx:3.0.1"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-ktx:$room_version"
//Firebase
implementation platform('com.google.firebase:firebase-bom:28.4.2')
implementation 'com.google.firebase:firebase-config-ktx'
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-messaging-ktx'
implementation 'com.google.firebase:firebase-appindexing'
implementation 'com.google.firebase:firebase-inappmessaging-display-ktx'
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-perf-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
implementation("com.google.firebase:firebase-iid") { because("github.com/mixpanel/mixpanel-android/issues/744") }
//Google play services
implementation 'com.google.android.play:core-ktx:1.8.1'
implementation "com.google.android.gms:play-services-maps:18.0.0"
implementation "com.google.android.gms:play-services-location:18.0.0"
implementation 'com.google.android.gms:play-services-auth:19.2.0'
implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
implementation 'com.android.installreferrer:installreferrer:2.2'
//Testing
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
//Networking
implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.1"))
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:logging-interceptor")
implementation "com.squareup.retrofit2:retrofit:${retrofit_version}"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
//Debugging
implementation 'com.facebook.stetho:stetho:1.6.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
implementation 'com.jakewharton.timber:timber:5.0.1'
// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
debugImplementation 'com.mocklets:pluto:1.1.1'
releaseImplementation 'com.mocklets:pluto-no-op:1.1.1'
//Payments
implementation 'com.razorpay:checkout:1.6.12'
//UI
implementation 'com.google.android.material:material:1.4.0'
implementation 'com.facebook.shimmer:shimmer:0.5.0'
implementation 'com.airbnb.android:lottie:4.2.0'
implementation 'com.github.GrenderG:Toasty:1.5.0'
implementation 'com.github.cachapa:ExpandableLayout:2.9.2'
implementation 'com.robinhood.ticker:ticker:2.0.3'
implementation 'com.nambimobile.widgets:expandable-fab:1.2.1'
implementation 'com.github.Jamshid-M:IGRefreshLayout:1.0.3'
//Custom
implementation 'com.github.skydoves:preferenceroom:1.2.2'
kapt 'com.github.skydoves:preferenceroom-processor:1.2.2'
implementation 'io.branch.sdk.android:library:5.0.14'
implementation 'io.coil-kt:coil:1.3.2'
implementation("io.coil-kt:coil-gif:1.3.2")
implementation "com.truecaller.android.sdk:truecaller-sdk:2.6.0"
implementation 'com.webengage:android-sdk:3.18.7'
//Dagger-Hilt
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
}
apply plugin: 'com.google.gms.google-services'
check.dependsOn ktlint
@kartik0198,
There's nothing in your build.gradle that jumps out at me as being suspect. At this point, I'm not sure there's anything else I can do. You can't reproduce the issue, and neither can I.
I just built signed release versions of a proguarded test app that included the library, and tested on Android 19 and 21 (emulator), and Androids 28, 29 and 30 (physical devices), and it worked without issue every time.
My final suspicions on this are:
vectorDrawables.useSupportLibrary = true
when using drawables that referenced other resources like colors. Some how you got around that without seeing an error when you were testing, but perhaps that led to a deeper problem with your vector drawables? You can try removing all references to resources from all your drawables and see if that helps.Other than that, I'm out of ideas. Sorry this issue couldn't be resolved :slightly_frowning_face:
EDIT: Some Stack Overflow posts that support my suspicion with number 1 above: https://stackoverflow.com/q/52469914/14032472 https://stackoverflow.com/a/52474885/14032472 https://stackoverflow.com/a/59514472/14032472 https://stackoverflow.com/q/65167556/14032472
Yes, I have worked on point 2. Hoping that it fixes the issue although I also think some users who have side-loaded the apk are affected and they might be trying again and again to open the app. Anyway, thanks a lot for your help!
No problem @kartik0198! Keep me posted if you find out any more information about those crashes or you become able to reproduce them, and we can revisit and reopen this ticket for further testing.
Getting this crash on several devices. Using the latest library version. Please let me know if any further detail is needed.
Caused by android.content.res.Resources$NotFoundException Resource ID #0x7f070113 android.content.res.ResourcesImpl.getValueForDensity (ResourcesImpl.java:225) androidx.core.content.ContextCompat$Api21Impl.getDrawable (ContextCompat.java:862) com.nambimobile.widgets.efab.ExpandableFab.setOptionalProperties (ExpandableFab.java:480) androidx.core.content.ContextCompat.getDrawable (ContextCompat.java:480) com.nambimobile.widgets.efab.ExpandableFab. (ExpandableFab.java:73)
java.lang.reflect.Constructor.newInstance0 (Constructor.java)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:790)