آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل بعد از Proguard کردن برنامه

احسان  9 سال پیش  9 سال پیش
0 0

سلام دوستان

من یه برنامه دارم که که کامل تست شده و هیچ مشکلی هم نداره منتها وقتی برنامه رو proguard میکنم به ارورهای زیر میخورم:

E/Trace: error opening trace file: No such file or directory (2)
E/dalvikvm: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.internal.zzacw.zzg
E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.a
E/UncaughtException: java.lang.NullPointerException
                         at androidmarket.ehsan.com.weatherstation.tools.G.setBackground(Unknown Source)
                         at androidmarket.ehsan.com.weatherstation.adapter.FavouriteCityAdapter.onBindViewHolder(Unknown Source)
                         at androidmarket.ehsan.com.weatherstation.adapter.FavouriteCityAdapter.onBindViewHolder(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                         at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(Unknown Source)
                         at android.support.v7.widget.ce.a(Unknown Source)
                         at android.support.v7.widget.LinearLayoutManager.a(Unknown Source)
                         at android.support.v7.widget.LinearLayoutManager.a(Unknown Source)
                         at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(Unknown Source)
                         at android.support.v7.widget.RecyclerView.K(Unknown Source)
                         at android.support.v7.widget.RecyclerView.onMeasure(Unknown Source)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
                         at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
                         at android.view.View.measure(View.java:15523)
                         at android.support.constraint.ConstraintLayout.a(Unknown Source)
                         at android.support.constraint.ConstraintLayout.onMeasure(Unknown Source)
                         at android.view.View.measure(View.java:15523)
                         at android.support.v4.widget.DrawerLayout.onMeasure(Unknown Source)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                         at android.support.v7.widget.ContentFrameLayout.onMeasure(Unknown Source)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
                         at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
                         at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                         at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
                         at android.view.View.measure(View.java:15523)
                         at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
                         at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
                         at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
                         at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
                         at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4357)
                         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
                         at android.view.Choreographer.doCallbacks(Choreographer.java:562)
                         at android.view.Choreographer.doFrame(Choreographer.java:532)
                         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
                         at android.os.Handler.handleCallback(Handler.java:725)
                         at android.os.Handler.dispatchMessage(Handler.java:92)
                        at android.os.Looper.loop(Looper.java:137
E/AndroidRuntime: FATAL EXCEPTION: main
                  java.lang.NullPointerException
                      at androidmarket.ehsan.com.weatherstation.tools.G.setBackground(Unknown Source)
                      at androidmarket.ehsan.com.weatherstation.adapter.FavouriteCityAdapter.onBindViewHolder(Unknown Source)
                      at androidmarket.ehsan.com.weatherstation.adapter.FavouriteCityAdapter.onBindViewHolder(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Recycler.a(Unknown Source)
                      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(Unknown Source)
                      at android.support.v7.widget.ce.a(Unknown Source)

این هم از کلاس G من فکر میکنم به یه چیزی توی این کلاس داره گیر میده:

 
public class G extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        context = getApplicationContext();
        preferences = PreferenceManager.getDefaultSharedPreferences(context);
        premiumState = preferences.getBoolean("IS_PREMIUM", false);

        //Setting RecyclerView for menu items
        menuItems.add(getString(R.string.menu_item_main_page));
        menuItems.add(getString(R.string.menu_item_convertDate));
        menuItems.add(getString(R.string.menu_item_reminder));

    }


    public static void setBackground(String icon, RelativeLayout linearLayout, boolean checkTime  , int sunRise , int sunSet) {
        if (dayOrNight(sunRise , sunSet)) {
            //When The sun is on the sky!
            switch (icon) {
                case "01d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                    break;

                case "01n":
                    linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                    break;


                case "02d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_day_bg);
                    break;

                case "02n":
                    linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_day_bg);
                    break;

                case "03d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_overcast_day_bg);
                    break;

                case "03n":

                default:
                    linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                    break;
            }
        } else {

            switch (icon) {
                case "01d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_sunny_night_bg);
                    break;

                case "01n":
                    linearLayout.setBackgroundResource(R.drawable.default_background_sunny_night_bg);
                    break;


                case "02d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_night_bg);
                    break;

                case "02n":
                    linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_night_bg);
                    break;

                case "03d":
                    linearLayout.setBackgroundResource(R.drawable.default_background_overcast_night_bg);
                    break;

                default:
                    linearLayout.setBackgroundResource(R.drawable.default_background_rainy_night_bg);
                    break;
            }
        }
    }
    public static void setBackground(String icon, ImageView img,  boolean checkTime  , int sunRise , int sunSet) {

        if (dayOrNight(sunRise , sunSet)) {
            //When The sun is on the sky!
            switch (icon) {
                case "01d":
                    img.setImageResource(R.drawable.default_background_sunny_day_bg);
                    break;

                case "01n":
                    img.setImageResource(R.drawable.default_background_sunny_day_bg);
                    break;


                case "02d":
                    img.setImageResource(R.drawable.default_background_cloudy_day_bg);
                    break;

                case "02n":
                    img.setImageResource(R.drawable.default_background_cloudy_day_bg);
                    break;

                case "03d":

                default:
                    img.setImageResource(R.drawable.default_background_rainy_night_bg);
                    break;
            }
        }
    }

    public static void setBackground(String icon, ConstraintLayout linearLayout) {

        switch (icon) {
            case "01d":
                linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                break;

            case "01n":
                linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                break;


            case "02d":
                linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_day_bg);
                break;

            case "02n":
                linearLayout.setBackgroundResource(R.drawable.default_background_cloudy_day_bg);
                break;

            case "03d":
                linearLayout.setBackgroundResource(R.drawable.default_background_overcast_day_bg);
                break;

            case "03n":

            default:
                linearLayout.setBackgroundResource(R.drawable.default_background_sunny_day_bg);
                break;

        }
    }
}

کدی هم که برای proguard  استفاده کردم این هستش

# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize and preverify steps (and performs some
# of these optimizations on its own).
-dontoptimize
-dontpreverify
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontshrink
-dontoptimize

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.app.MapActivity
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.content.ContentProvider


#keep all classes that might be used in XML layouts
-keep public class * extends android.view.View
-keep public class * extends android.widget.ImageView
-keep public class * extends android.widget.RelativeLayout
-keep public class * extends android.support.constraint.ConstraintLayout
-keep public class * extends android.app.Fragment
-keep public class * extends android.support.v4.Fragment

#keep all classes
-keep public class *{
public protected *;
}

#keep all public and protected methods that could be used by java reflection
-keepclassmembernames class * {
    public protected <methods>;
}


-keepclasseswithmembernames class * {
    native <methods>;
}




# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <init>(...);
}

##---------------Begin: proguard configuration for G Class ----------
-keep class androidmarket.ehsan.com.weatherstation.tools.G** { *; }
-keep class androidmarket.ehsan.com.weatherstation.activity.ActivityInternet** { *; }
-keep class androidmarket.ehsan.com.weatherstation.adapter.FavouriteCityAdapter** { *; }
##---------------End: proguard configuration for G Class ----------


##---------------Begin: proguard configuration for Payment Class ----------

-keep class androidmarket.ehsan.com.weatherstation.activity.Payment** { *; }

##---------------End: proguard configuration for Payment Class ----------


##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with
#fields. Proguard removes such information by default, so configure it to keep
#all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class androidmarket.ehsan.com.weatherstation.model.** { *; }
-keep class androidmarket.ehsan.com.weatherstation.activity.ActivityInternet.** { *; }
##---------------End: proguard configuration for Gson ----------

-dontwarn android.support.**
-dontwarn com.google.ads.**
-dontwarn com.android.support.**
-dontwarn com.android.support.constraint.**
-dontwarn com.squareup.retrofit2.**
-dontwarn com.amulyakhare.**
-dontwarn com.bignerdranch.android.**
-dontwarn com.mohamadamin.**
-dontwarn com.getbase.**
-dontwarn com.google.firebase.**
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

ممنون میشم راهنمایی کنید .

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .