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

مشکل با obfuscate کردن لایبرری ormlite [حل شد]

PandaStudio  9 سال پیش  9 سال پیش
0 0

سلام دوستان

من از لایبرری ormlite برای کار با پایگاه داده کار میکنم و برنامه خیلی عالی و خوب جواب میده منتها وقتی از Proguard برای obfuscate کردن استفاده میکنم یا با ارور مواجه میشم یا اگه هم obfuscate بشه برنامه را که نصب میکنم وقتی می خوام به پایگاه داده دسترسی پیدا کنم کرش میکنه.

لطفا اگه تو این زمینه کار کردید راهنماییم کنید.

عمده کدهای موجود برای obfuscate کردن هم که باید داخل Proguard بنویسیم هرجا سرچ کردم اینا بود

# OrmLite uses reflection
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }

-keepattributes Signature -keepattributes *Annotation*

-libraryjars libs/ormlite-android-4.48.jar
-libraryjars libs/ormlite-core-4.48.jar
0 0
باید از اتریبیوت های table و column استفاده کنی (حتماً) (9 سال پیش)
0 0
متوجه منظورتون نشدم میشه بیشتر توضیح بدید (9 سال پیش)
0 0
@DatabaseTable - @DatabaseField - رو باید برای کلاس اصلی و فیلداش مشخص کنی، تو داکیومنتش در موردشون نوشته (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
PandaStudio  9 سال پیش
0 0

این کارو انجام دادم نمونشم در زیر گذاشتم منتها بعد از obfuscate برنامه کرش میکنه

@DatabaseTable
public class StructCategories implements Serializable {

    private static final long serailVersionID = -4561728371283721L;

    @DatabaseField(id = true)
    private Integer           id;

    @DatabaseField
    private String            name;


    public Integer getId() {
        return id;
    }


    public void setId(Integer id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    @Override
    public String toString() {
        return name == null ? "<None>" : name;
    }
}
پاسخ به سوال 
PandaStudio  9 سال پیش
+1 0

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

-ignorewarnings

-dontnote
-libraryjars libs/ormlite-android-4.48.jar
-libraryjars libs/ormlite-core-4.48.jar

-keepattributes Signature
#نام پکیجی که کلاس های مدل داخلشه را باید در زیر بنویسید -keep class com.xyz.model.** -keepclassmembers class com.xyz.model.** { *; }
-keep class com.j256.** -keepclassmembers class com.j256.** { *; } -keep enum com.j256.** -keepclassmembers enum com.j256.** { *; } -keep interface com.j256.** -keepclassmembers interface com.j256.** { *; } -keepclassmembers class * { public <init>(android.content.Context); } -keepattributes *Annotation*

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