PDA

View Full Version : تفاوت ریزی در نسخه Debug و نسخه Release فایل های APK



mehdi.safavie
یک شنبه 22 مهر 1397, 11:21 صبح
درود;


دیروز به یه مشکلی خوردم که یک روز نیم کامل وقتم رو گرفت .
یه تفاوتی تو نسخه Debug و Release پروژه وجود داشت ، که به شدت پروژه رو خابوند و وقت رو گرفت . همه چیز تو نسخه Debug داشت خوب کار میکرد ، اما رو نسخه Release اصلا خوب کار نمیکرد . خیلی جستجو کردم و خیلی گشتم اما به هیچ نتیجه ای نرسیدم . تا این که شخصا خط به خط شروع کردم تمام کد ها رو بگردم و در نهایت یه دایره روی یک قسمت از کد ها کشیدم و Zoom کردم رو همون قسمت و بالا خره مشکل حل سد .




این وسط راهنمایی های مهندس کرامتی تنها چیزی بود که من رو به جواب تونست برسونه .
کار با Reflect ها گویا همیشه مشکلات اینچنینی داشته . تو ORM خودم از Reflect تو Java استفاده کردم که همین مساله منجر به ایجاد این مشکل شد .
کدی که استفاده کردم اینطور بود :
گرفتن تمام فیلد های یک کلاس در متغیر آرایه ای از Field و Foreach زدن داخلش و بدست آوردن Name و Value اون ها .
تقریبا این کد :

Field[] mField = mClass.getClass().getDeclaredFields();
int fLenght = mField.length;// Class Fields Count
for (Field mFields : mField) {
mFields.setAccessible(true);
String fName = mFields.getName();
Object Value = mFields.get(MyObjectOrClass);
}

همین چند خط کد ساده تو نسخه Debug و Release تفاوتی دارن .
هر Object که میسازی تو نسخه Debug 2 تا فیلد دیگه هم به غیر از فیلد های اصلی داخلشون ساخته میشه با این مشخصات :

public static transient volatile com.android.tools.ir.runtime.IncrementalChange com.packagename.someclassobject.$change
public static final long com.packagename.someclassobject.serialVersionUID



اما همین 2 تا فیدل تو نسخه Release وجود نداره .
همین تنها مشکلی بود که این همه از زمان پروژه رو گرفت .


امیدوارم این موضوع ، مشکل کسه دیگه ای رو هم حل کنه .