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

عملکرد نادرست برخی قسمت های پروژه در نسخه Release

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

پروژه در حالت debug کاملا درست کار میکنه ولی بعد اینکه signed_APK ساختم برخی قسمت هاش عملکرد درستی نداره مثلا یه سری فرگمنت ها محتوا(view) ندارند یا بعضی view ها توی اکتیویتی GONE هستند...

لطفا بفرمایید دلیل این موضوع و راه حلش چیه؟

خیلی ممنون

نظرات

atf 10 سال پیش
پروژه تون رو obfuscate کردید ؟؟؟ اگر این کار رو کردید و احتمالا از لایبری های تو برنامه استفاده شده که اگه اشتباه نکنم باید داخل فایل proguard اون لایبری رو از حالت obfuscate خارج کنید

پاسخ‌ها 1

مشاهده پاسخ صحیح
مسعود فرمانی 10 سال پیش

 پاسخ صحیح

من در برنامم از فرگمنت هایی در فرگمنت هایی استفاده کردم! در یکسری جاها برنامه تصمیماتشو بر اساس رشته متنی نام کلاس که خودم مقدار داده بودم ( نه از طریق getClass.getSimpleName) می گرفت و همونطور که میدونید و من نمیدونستم :D کلاس های برنامه در صورت استفاده از proGuard و obfuscate کردن علاوه بر اینکه کوتاه میشن "shrink" نامشون هم تغییر میکنه "rename" .به خاطر همین موضوع دیگه نام هایی که بین دابل کوتیشن گذاشته بودم valid نبودن و...راه حل اینکه از روش بسیار باحالِ استفاده از متد استاتیک newInstance برای ارسال پارمترهایی به فرگمنت استفاده کردم و تصمیم گیری بر اساس نام کلاس رو تغییر دادم و در نهایت درست شد :)) علاوه بر اینکه درست شد!بعضی از کلاس های فرگمنت هم در هم ادغام شدن و کدهامم کمتر شد..بازم :)))

پ.ن:برای آشنایی با روش newInstance گوگلش کنید :))

نظرات

احمد 10 سال پیش
دقیق تر میگی چیکار باید کرد؟
مسعود فرمانی 10 سال پیش
@احمد شرمنده بابت جوابِ با تاخیر...دقیق تر و ساده تر میشه اینجوری گفت که بعضی قسمت های پروژه از نام دقیق کلاسها مثلا "FragmentOne" برای تصمیم گیری استفاده میشد (بازم مثلا if(name == "FragmentOne") حالا این فرگمنت وان ، مثلا اسم یکی از کلاس های برنامه من بوده که در اثر obfuscate کردن ، دیگه اسمش فرگمنت وان نیست و عملا اون شرط if یجور دیگه نتیجه میشه و ... این بود که از روش های دیگه ای واسه تشخیص فرگمنت های در runTime استفاده کردم (مثلا اومدم واسشون آی دی ساختم و زمان ساخت خودِ فرگمنت آی دی رو بهش دادم و از اون به بعد با همون آی دی فهمیدم که مثلا این فرگمنت نمونه ای از کلاس فلان فرگمنته و ...

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