بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

کی و چگونه باید دستورات obfuscate کردن رو تغییر بدیم؟؟؟ (خطا در obfuscate کردن)

مدیریت گفتگو
ahmad_r 12 سال پیش
آخرین تغییر: 12 سال پیش

مراحل obfuscate کردن رو استاد کاملا توضیح دادند.

سوال من اینکه برای بعضی از پروژه ها (علی الظاهر اونایی که library دارند) با اون کد obfuscate نمیشه و یه چیزهایی باید اضافه و کم بشه.

میخواستم ببینم به چه شکلی باید تغییر بدیم. مثلا در صورت درست بودن فرض بالا (وجود library نیازمند تغییر در کد obfuscate) آیا برای هر library دستور آن فرق میکند؟

کلا چگونه مشکل خطاهای obfuscate رو حل کنیم؟

ممنون

نظرات

پاسخ‌ها 3

مجتبی یگانه 12 سال پیش

شما از هر کتابخانه ای استفاده کنید ، اگه نیاز به اینکار داشته باشه ، قطعا در مستندات هست ، یعنی میگه این خط رو به proguard اضافه کنید

استاد هم یه سری توضیحاتی در مورد اش دادند 

مثلا

-keep class com.google.** { *; }

مثلا برای درست کار کردن easy share action در action bar طبق مستندات اش باید از obfuscate شدن اش جلوگیری کرد

نظرات

hamed 12 سال پیش
من البته تا حالا نیاز نشده obfuscate انجام بدم اما به عنوان سوال نمی شه کلا کتابخانه ها را بی خیال شد و بگیم اینجوریشون نکنه؟ چون عملا هم نیازی به این نیست و هر کسی بخواد می ره کتابخانه را دانلود می کنه. و اگه منظور دوستان اینه که جاهایی که دستوراتی هم به کتابخانه ای ارجاع دارند اون دستور نباید obfuscate بشه؟
hamidd 12 سال پیش
همچنین من یک جایی خوندم : کلاس هایی که داخلشون Reflection به کار برده شده هم نباید obfuscate بشوند.
ahmad_r 12 سال پیش

آقا دستورات زیر چه کارهایی انجام میدن

 -keep class net.sqlcipher.** { *; }
-dontwarn net.sqlcipher.*

هر کاری کردم درست نشد. ایرادم خیلی شبیه ایراد شماست آقای hosseinAmini تو این لینک که گذاشته اید.

اما دقیقا نمیدونم چه چیزی برای کتابخانه هام باید بنویسم. عکس کتابخونه هامو میذارم تا انشاالله حل بشه.

به تازگی برای اضافه کردن شکلک از پروژه emojicon استفاده کردم که تو فایل project.properties این دو خط رو اضافه کرده و اگه خط دوم رو بردارم توی res خطا میده. (نمیدونم به این خط ها هم ربطی داره یا نه)

 android.library=false
android.library.reference.1=../Emojicon

این هم log ها

 Note: there were 4 duplicate class definitions.
Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
.
.
.
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
You should check if you need to specify additional program jars.
Warning: there were 607 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
Warning: there were 13 instances of library classes depending on program classes.
You must avoid such dependencies, since the program classes will
be processed, while the library classes will remain unchanged.
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)

 

نظرات

ahmad_r 12 سال پیش
با توجه به library هام ، توی progurd چه کدی باید اضافه کنم?
ahmad_r 12 سال پیش

دوای درد من این بود.

-ignorewarnings
-keep class org.kobjects.** { *; }
-keep class org.ksoap2.** { *; }
-keep class org.kxml2.** { *; }
-keep class org.xmlpull.** { *; }

نظرات


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