Приложение вылетает на определенном макете, когда для minifyEnable установлено значение true - PullRequest
0 голосов
/ 16 декабря 2018

Сообщение об ошибке:

2018-12-16 11: 08: 28,339 7163-7163 /?E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main
Процесс: com.appz.abhi.shudhbatter, PID: 7163
java.lang.NumberFormatException: null
в java.lang.Long.parseLong (Long.java: Long: java:406)
на java.lang.Long.parseLong (Long.java:485)
на com.appz.abhi.shudhbatter.view.user.main.abba (неизвестный источник)
на androidx.recyclerview.widget.RecyclerView $ aa (неизвестный источник)
на androidx.recyclerview.widget.RecyclerView $ oa (неизвестный источник)
на androidx.recyclerview.widget.RecyclerView $ oa (неизвестный источник)
на androidx.recyclerview.widget.RecyclerView $ ob (неизвестный источник)
в androidx.recyclerview.widget.LinearLayoutManager $ ca (неизвестный источник)
в androidx.recyclerview.widget.LinearLayoutManager.a (неизвестный источник)
в androidx.recyclerview.widget.LinearLayoutManager.a (неизвестный источник)
в androidx.recyclerview.widget.LinearLayoutManager.c (неизвестный источник)
в androidx.recyclerview.widget.RecyclerView.D (неизвестный источник)
вandroidx.recyclerview.widget.RecyclerView.y (неизвестный источник)
в androidx.recyclerview.widget.RecyclerView.onLayout (неизвестный источник)
в android.view.View.layout (View.java:17666)
в android.view.ViewGroup.layout (ViewGroup.java:5577)
в android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
в android.widget.FrameLayout.onLayout (FrameLayout.java:261)
вandroid.view.View.layout (View.java:17666)
в android.view.ViewGroup.layout (ViewGroup.java:5577)
в android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
в android.widget.FrameLayout.onLayout (FrameLayout.java:261)
в android.view.View.layout (View.java:17666)
в android.view.ViewGroup.layout (ViewGroup.java: 5577)
в androidx.constraintlayout.widget.ConstraintLayout.onLayout (неизвестный источник)
в android.view.View.layout (View.java:17666) в android.view.ViewGroup.layout (ViewGroup.Java: 5577) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:323) на android.widget.FrameLayout.onLayout (FrameLayout.java:261) в android.view.View.layout (View.java:17666) в android.view.ViewGroup.layout (ViewGroup.java:5577) в android.widget.FrameLayout.layoutChildren (FrameLayout.java: 323) в android.widget.FrameLayout.onLayout (FrameLayout.java:261) в android.view.View.layout (View.java:17666) в android.view.ViewGroup.layout (ViewGroup.java:5577)на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1741) на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1585) на android.widget.LinearLayout.onLayout (LinearLayout.java:14)View.layout (View.java:17666) на android.view.ViewGroup.layout (ViewGroup.java:5577) на android.widget.FrameLayout.layoutChildren (FrameLayout.java:323) на android.widget.FrameLayout.onLayout (FrameLayout.java: 261) на android.view.View.layout (View.java:17666) на android.view.ViewGroup.layout (ViewGroup.java:5577) на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1741)на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1585) в android.widget.LinearLayout.onLayout (LinearLayout.java:1494) в android.view.View.layout (View.java:17666) в android.view.ViewGroup.layout (ViewGroup.java): 5577) в android.widget.FrameLayout.layoutChildren (FrameLayout.java:323) в android.widget.FrameLayout.onLayout (FrameLayout.java:261)на com.android.internal.policy.DecorView.onLayout (DecorView.java:730) на android.view.View.layout (View.java:17666) на android.view.ViewGroup.layout (ViewGroup.java:5577) наandroid.view.ViewRootImpl.performLayout (ViewRootImpl.java:2390) в android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2112) в android.view.ViewRootImpl.doTraversal (ViewRootImpl.jpg) .jpg$ TraversalRunnable.run (ViewRootImpl.java:6437) в android.view.Choreographer.doFrame (Choreographer.java:623) на android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:862) на android.os.Handler.handleCallback (Handler.java:754)

IЯ получаю вышеуказанную ошибку, когда я использую minifyEnabled=true в сборке выпуска.
Сборка того же проекта в сборке выпуска с minifyEnabled=false не создает ошибку.

Ошибка не появляется в приложении.unch, появляется при отображении фрагмента.

proguard-rules.pro:

-assumenosideeffects class android.util.Log {
    public static *** d(...);
}

build.gradle (приложение) (используемые библиотеки):

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 28

    defaultConfig {
        applicationId "my.package.id"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 3
        versionName "0.3"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }

    buildTypes {
        debug {
            minifyEnabled true
            debuggable true
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
                    'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //  Testing
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

    //  Support library
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    implementation 'com.google.android.material:material:1.1.0-alpha01'
    implementation 'androidx.vectordrawable:vectordrawable:1.0.1'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    //  Architecture components
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

    //  Ads
    implementation 'com.google.android.gms:play-services-ads:17.1.2'

    //  Firebase
    implementation 'com.google.firebase:firebase-core:16.0.6'
    implementation 'com.google.firebase:firebase-firestore:17.1.3'
    implementation 'com.google.firebase:firebase-auth:16.0.5'
    implementation 'com.google.firebase:firebase-invites:16.0.6'
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.5'

    //  FirebaseUI for Firebase Auth
    implementation 'com.firebaseui:firebase-ui-auth:4.2.0'

    //  Circular imageView
    implementation 'com.mikhaellopez:circularimageview:3.2.0'
    implementation 'de.hdodenhof:circleimageview:2.2.0'

    //  About libraries
    implementation 'com.mikepenz:aboutlibraries:6.2.0'
}

Редактировать 1: во фрагменте, который дает сбой, у меня есть RecyclerView, который использует пользовательский адаптер, в котором следующая строка кодаиспользуется:

viewHolder.userOrderRecyclerViewItemDateTv.setText(MyDateUtils.getDateStringFromLong(Long.parseLong(order.getOrderDate())));

MyDateUtils.java:

public class MyDateUtils {

    private static String calenderToDateString(Calendar calendar) {

        //  Convert calender object to date string
        return String.format(Locale.ENGLISH, "%02d - %02d - %04d",
                (calendar.get(Calendar.DAY_OF_MONTH)), (calendar.get(Calendar.MONTH) + 1),
                calendar.get(Calendar.YEAR));
    }

    public static String getDateStringFromLong(long dateLong) {

        //  Create a new calender instance
        Calendar calendar = Calendar.getInstance();

        //  Set calender time to given value
        calendar.setTimeInMillis(dateLong);

        //  Return calender as date in string format
        return calenderToDateString(calendar);
    }
}

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018
    buildTypes {
      debug {
minifyEnabled true  // shrink
useProguard false   // don't obfuscate

proguardFiles getDefaultProguardFile('proguard- 
android.txt'), 'proguard-rules.pro'
 }

 release {
   minifyEnabled true  // shrink
  useProguard true    // obfuscate

   proguardFiles getDefaultProguardFile('proguard- 
  android.txt'), 'proguard-rules.pro'
 }
  }
0 голосов
/ 16 декабря 2018

ProGuard можно включить, используя параметр minifyEnabled для любого типа сборки.Если вы намерены использовать его для производства, настоятельно рекомендуется также включить его в свою разработку (один раз), прежде чем приступать к тестированию.Без полного тестирования ProGuard на ваших сборках разработки вы можете столкнуться с неожиданными сбоями или ситуациями, когда приложение не работает должным образом.

Похоже, вы не добавили правила для библиотек, которые вы используете в сборке.файл Gradle

https://guides.codepath.com/android/Configuring-ProGuard

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