Сбой приложения при сборке в режиме выпуска - PullRequest
0 голосов
/ 30 мая 2018

Я создал приложение, которое отлично работает в режиме отладки.Но, когда дело доходит до режима релиза, он начинает падать, и я уверяю, что нет никаких проблем в Code / Proguard.

Когда My SplashActivity имеет нет setContentView , он работает нормально .Но когда он (setContentView) ссылается на программно созданное представление, он начинает падать.

В CrashLog упоминается что-то странное строка XML-файла # 95 .Но я не ссылался на файл макета XML.И CrashLog упоминает Ошибка надувания класса Button .Я только что прошел программно созданный ImageView.

Код в onCreate:

ImageView ivSplash = new ImageView(this);
ivSplash.setScaleType(ImageView.ScaleType.CENTER_CROP);
ivSplash.setImageResource(R.drawable.splash_image);

setContentView(ivSplash);

Даже я только что проверил с пустым TextView, он также дает сбой, с ImageView / Image ничего не связано.Потому что в Release Mode то же самое приложение прекрасно работает два дня назад.Но не сейчас.

Совершенно странно.Пожалуйста, проверьте это и помочь.Пожалуйста, найдите CrashLog в следующем.

Crash Log:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.shriramvalue.shrirampay.dev, PID: 30843
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shriramvalue.shrirampay.dev/com.shriramvalue.shrirampay.SplashActivity}: android.view.InflateException: Binary XML file line #95: Binary XML file line #37: Error inflating class Button
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6123)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
     Caused by: android.view.InflateException: Binary XML file line #95: Binary XML file line #37: Error inflating class Button
     Caused by: android.view.InflateException: Binary XML file line #37: Error inflating class Button
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void agv.a()' on a null object reference
        at android.support.v7.widget.AppCompatButton.setBackgroundDrawable(Unknown Source)
        at android.view.View.setBackground(View.java:18139)
        at android.view.View.<init>(View.java:4575)
        at android.widget.TextView.<init>(TextView.java:710)
        at android.widget.Button.<init>(Button.java:109)
        at android.widget.Button.<init>(Button.java:105)
        at android.support.v7.widget.AppCompatButton.<init>(Unknown Source)
        at android.support.v7.widget.AppCompatButton.<init>(Unknown Source)
        at android.support.v7.app.AppCompatViewInflater.a(Unknown Source)
        at abs.a(Unknown Source)
        at abs.onCreateView(Unknown Source)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:994)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        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 abs.b(Unknown Source)
        at acg.setContentView(Unknown Source)
        at abc.onCreate(Unknown Source)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:389)
        at android.app.Dialog.show(Dialog.java:293)
        at abd.b(Unknown Source)
        at h.f(Unknown Source)
        at com.shriramvalue.shrirampay.SplashActivity.onCreate(Unknown Source)
        at android.app.Activity.performCreate(Activity.java:6672)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6123)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

У вас проблема с Proguard.Класс представления, который вы использовали в своем xml, должен быть исключен из proguard.

Например, в com.example.Myview должен быть исключен класс Myview, который вы использовали в XML, например

<com.example.Myview

-keep public class com.example.Myview
0 голосов
/ 30 мая 2018

После Tracing Mapping.txt agv относится к AppcompatButton.

В SplashActivity я проверил RuntimePermissions и он ссылается на AppcompatButton в AlertDialog.

Итак, яя включил следующие строки в Proguard, чтобы эти классы не были запутаны, и моя проблема была решена.

-keep class android.support.v4.** {
    <fields>;
    <methods>;
}

-keep class android.support.v7.** {
    <fields>;
    <methods>;
}

Но мне интересно, как мое приложение работало нормально, так много дней без этих строк не включеныв Proguard и вдруг вопрос поднимается.

Если кто-нибудь знает эту тайну, пожалуйста, расшифруйте ее.

0 голосов
/ 30 мая 2018

Вы получаете

Причина: java.lang.NullPointerException: Попытка вызвать виртуальный метод void agv.a () для ссылки на пустой объект

применить проверку

if(agv.a()!=null)
//condition

также проверьте ваш xml

Причина: android.view.InflateException: строка двоичного файла XML # 95: строка двоичного файла XML # 37: ошибка надуванияКнопка класса Вызывается: android.view.InflateException: строка двоичного XML-файла # 37: Ошибка наведения класса Button *

в строке номер 37.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...