Instant App module looks for resources in another non-core module

I am developing an Instant App which has a module base

and 2 functional modules: feature1

and feature2

. I am getting weird crash when I try to start an feature2

activity:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.myapp.qa/com.test.myapp.feature2.ui.activity.Feature2Activity}: android.view.InflateException: Binary XML file line #76: Binary XML file line #76: Error inflating class android.widget.ProgressBar
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                                at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:164)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6540)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                                             Caused by: android.view.InflateException: Binary XML file line #76: Binary XML file line #76: Error inflating class android.widget.ProgressBar
                                                                             Caused by: android.view.InflateException: Binary XML file line #76: Error inflating class android.widget.ProgressBar
                                                                             Caused by: java.lang.reflect.InvocationTargetException
                                                                                at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                                                at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
                                                                                at android.view.LayoutInflater.createView(LayoutInflater.java:650)
                                                                                at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
                                                                                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:723)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:791)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
                                                                                at com.test.myapp.ui.activity.base.BaseActivity.setContentView(BaseActivity.java:237)
                                                                                at com.test.myapp.feature2.ui.activity.Feature2Activity.onCreate(Feature2Activity.java:123)
                                                                                at android.app.Activity.performCreate(Activity.java:6980)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                                at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:164)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6540)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                                             Caused by: android.content.res.Resources$NotFoundException: Drawable com.test.myapp.qa:layout/random_feature1_layout with resource ID #0x82030011
E/AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: File res/layout/random_feature1_layout_fns.xml from drawable resource ID #0x82030011
                                                                                at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:754)
                                                                                at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:598)
                                                                                at android.content.res.Resources.loadDrawable(Resources.java:885)
                                                                                at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953)
                                                                                at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
                                                                                at android.widget.ProgressBar.<init>(ProgressBar.java:281)
                                                                                at android.widget.ProgressBar.<init>(ProgressBar.java:230)
                                                                                at android.widget.ProgressBar.<init>(ProgressBar.java:226)
                                                                                at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                                                at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
                                                                                at android.view.LayoutInflater.createView(LayoutInflater.java:650)
                                                                                at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
                                                                                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:723)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:791)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
                                                                                at com.test.myapp.ui.activity.base.BaseActivity.setContentView(BaseActivity.java:237)
                                                                                at com.test.myapp.feature2.ui.activity.Feature2Activity.onCreate(Feature2Activity.java:123)
                                                                                at android.app.Activity.performCreate(Activity.java:6980)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                                at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:164)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6540)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                                             Caused by: android.view.InflateException: Class not found LinearLayout
                                                                                at android.graphics.drawable.DrawableInflater.inflateFromClass(DrawableInflater.java:220)
                                                                                at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:139)
                                                                                at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1295)
                                                                                at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1254)
                                                                                at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:744)
                                                                                at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:598at android.content.res.Resources.loadDrawable(Resources.java:885at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953at android.content.res.TypedArray.getDrawable(TypedArray.java:928at android.widget.ProgressBar.<init>(ProgressBar.java:281at android.widget.ProgressBar.<init>(ProgressBar.java:230at android.widget.ProgressBar.<init>(ProgressBar.java:226at java.lang.reflect.Constructor.newInstance0(Native Method) 
                                                                                at java.lang.reflect.Constructor.newInstance(Constructor.java:334at android.view.LayoutInflater.createView(LayoutInflater.java:650at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58at android.view.LayoutInflater.onCreateView(LayoutInflater.java:723at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:791at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733at android.view.LayoutInflater.rInflate(LayoutInflater.java:866at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.rInflate(LayoutInflater.java:869at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.rInflate(LayoutInflater.java:869at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.rInflate(LayoutInflater.java:869at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.rInflate(LayoutInflater.java:869at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.rInflate(LayoutInflater.java:869at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:827at android.view.LayoutInflater.inflate(LayoutInflater.java:518at android.view.LayoutInflater.inflate(LayoutInflater.java:426at android.view.LayoutInflater.inflate(LayoutInflater.java:377at com.test.myapp.ui.activity.base.BaseActivity.setContentView(BaseActivity.java:237at com.test.myapp.feature2.ui.activity.Feature2Activity.onCreate(Feature2Activity.java:123at android.app.Activity.performCreate(Activity.java:6980at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892at android.app.ActivityThread.-wrap11(Unknown Source:0at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593at android.os.Handler.dispatchMessage(Handler.java:105at android.os.Looper.loop(Looper.java:164at android.app.ActivityThread.main(ActivityThread.java:6540at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:76706-18 10:42:37.616 11607-11607/com.test.myapp.qa E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "LinearLayout" on path: DexPathList[[zip file "/data/app/com.test.myapp.qa-ncO99Ptagbu_PYoBeZhFeA==/base.apk", zip file "/data/app/com.test.myapp.qa-ncO99Ptagbu_PYoBeZhFeA==/split_feature2.apk", zip file "/data/app/com.test.myapp.qa-ncO99Ptagbu_PYoBeZhFeA==/split_feature1.apk"],nativeLibraryDirectories=[/data/app/com.test.myapp.qa-ncO99Ptagbu_PYoBeZhFeA==/lib/x86, /system/lib, /system/vendor/lib]]
                                                                                at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
                                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                                at android.graphics.drawable.DrawableInflater.inflateFromClass(DrawableInflater.java:201)
                                                                                    ... 47

      

If we look at the layout file Feature2Activity

, line 76, we see:

<ProgressBar
    android:layout_width="20dp"
    android:layout_height="20dp"
    android:layout_gravity="right"
    android:indeterminateDrawable="@drawable/progress" />

      

Drawable progress.xml

is in feature2

resources. If we remove it or change it to some fetchable from resources base

, everything will be fine.

Another strange thing:

Caused by: android.content.res.Resources$NotFoundException: Drawable com.test.myapp.qa:layout/random_feature1_layout with resource ID #0x82030011

      

The layout random_feature1_layout

is in resources feature1

and shouldn't be mentioned at all. But if we go to the file feature2\R.java

and look for progress.xml

drawable, we find:

public static final int progress=0x80030011;

      

And if you look closer, you will notice that the ids progress

and random_feature1_layout

differ by one digit: 0x80030011

and 0x82030011

. So I made the assumption that feature2

for some unknown reason, I was looking progress

for a drawing opportunity in resources feature1

. I tried to remove the dependencies feature1

and the crash disappeared, which confirms my assumption.

I should also point out that this problem is only observed for the instant application. The installed application works fine.

My question is how is it possible what is feature2

looking for resources in an feature1

apk? Do you have any ideas causing this behavior, or perhaps hints to debug this issue?

+3


source to share


1 answer


Regarding Google Error Tracker , it has been fixed with Android SDK Built-Tools to 27.0.2

Update your Android SDK Built-Tools to 27.0.2 And make sure you are on Android Studio 3.0.1 or newer .



If the problem persists, please report to Google Tracker which they will reopen for inspection. Thank!

+1


source







All Articles