Nano Hash - криптовалюты, майнинг, программирование

Модуль Instant App ищет ресурсы в другом небазовом модуле

Я разрабатываю мгновенное приложение, в котором есть base модуль и 2 функциональных модуля: feature1 и feature2. Я получаю странный сбой, когда пытаюсь запустить feature2 активность:

    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: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) 
    06-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

Если мы посмотрим на файл макета Feature2Activity, строка 76, мы увидим:

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

Drawable progress.xml находится в feature2 ресурсах. Если мы удалим его или изменим на какой-нибудь вытягиваемый из base ресурсов, все будет работать нормально.

Еще одна странная вещь - это строка:

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

Макет random_feature1_layout расположен в feature1 ресурсах, и на него вообще не следует ссылаться. Но если мы перейдем к feature2\R.java файлу и найдем progress.xml drawable, мы найдем:

public static final int progress=0x80030011;

И если вы присмотритесь, то заметите, что идентификаторы progress и random_feature1_layout отличаются одной цифрой: 0x80030011 и 0x82030011. Поэтому я сделал предположение, что feature2 по неизвестным причинам ищет progress drawable в feature1 ресурсах. Я попытался удалить feature1 зависимость, и вылет исчез, что подтверждает мое предположение.

Я также должен отметить, что эта проблема наблюдается только для приложения Instant. Установленное приложение работает нормально.

У меня вопрос, как это возможно, что feature2 ищет ресурсы в feature1 apk? Есть ли у вас какие-либо идеи, что вызвало такое поведение, или, может быть, подсказки, как решить эту проблему?


  • Доступен ли тот же ресурс или ресурс с таким же именем в разделении Feature1? 20.06.2017
  • @MaruAhues нет, это просто какой-то случайный ресурс с похожим идентификатором, его даже нельзя нарисовать. 20.06.2017
  • Я сталкиваюсь с очень похожей проблемой. Я отправил отчет об ошибке здесь: issuetracker.google.com/issues/62899015. 04.07.2017
  • и обнаружил здесь другой трекер (вероятно, та же проблема): issuetracker.google.com/issues/62852384 04.07.2017
  • @gbaccetta Да, я сообщил об этом :) 04.07.2017
  • @mol да, я добавил комментарий, чтобы пометить свой как дубликат. Вы нашли обходной путь? 04.07.2017
  • @gbaccetta Нет, я отложил разработку до выпуска более стабильной версии. 04.07.2017
  • Об ошибке @mol issuetracker.google.com/issues/62899015 сообщалось как о предполагаемом поведении. 08.12.2017

Ответы:


1

Что касается системы отслеживания проблем Google, то она была исправлена ​​с помощью Android SDK Built-Tools до версии 27.0. 2

Обновите встроенные инструменты Android SDK до версии 27.0.2 и убедитесь, что у вас установлена ​​Android Studio 3.0.1 или новее.

Если какая-либо проблема не устранена, сообщите об этом в системе отслеживания проблем Google, они снова откроются для проверки. Спасибо!

08.12.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..