بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل بعد از Proguard کردن برنامه
سلام دوستان
من یه برنامه دارم که که کامل تست شده و هیچ مشکلی هم نداره منتها وقتی برنامه رو 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
ممنون میشم راهنمایی کنید .
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .