2015-07-15 3 views
1

Я использую коды, как показано ниже, но как-то все отлично работает в отладочной версии, но как только я скомпилирую версию релиза приложения, я получаю ошибку.Нет такого столбца Sugar ORM только в версии выпуска

no such column: IMAGE_ID

В настоящее время используется sugarORM версии 1.3 также с помощью ProGuard

public class Favorite extends SugarRecord<Favorite> { 
     private int imageId; 
     private int licenseId; 

    public Favorite(int imageId, int licenseId){ 
      this.imageId = imageId; 
      this.licenseId = licenseId; 
    } 
} 

Это запрос, я использую, чтобы найти image_id

List<Favorite> favorites = Favorite.find 
       (Favorite.class, "IMAGE_ID = ?", ((String) ("" + imageId))); 
     if (!favorites.isEmpty()) { 
      return favorites.get(0); 
     } 

Я попытался с помощью image_idImage_Idimage_Idimage_ID и несколько других , но я всегда получаю ошибку `no такое исключение столбца в моей выпускной версии моего приложения.

Я также попробовал много предложений, заданных в таких типах вопросов, но ничего не работает должным образом.

+0

Будет здорово, если вы добавите действительную причину для downvote –

+0

Вы пытались изменить модификаторы доступа на imageId и licenseId для защиты пакетов? Вот как эти примеры создаются в документации. –

+0

сначала, очевидно: imageId! = Image_id (** edit **: как указано в его комментарии, это не имеет значения, мое плохое) ... второе: вы используете proguard в сборке релизов? – Selvin

ответ

2

Я использую SugarORM с proguard, которые также запутывают классы модели (баз данных).

Чтобы использовать SugarORM с proguard, вам необходимо обновить настройку proguard, чтобы она не обфускала ваши классы базы данных.

-keep public class com.youcompany.appname.xx.<ClassName> extends SugarRecord{*;} 
-keep public class com.youcompany.appname.XX.<ClassName> extends SugarApp{*;} 
2

AS @Harsh упомянул вам нужно добавить правила, чтобы пропустить запутывание классов расширяет SugarRecord и SugarApp.This это просто еще один способ сделать то же самое.

#skip every public class that extends com.orm.SugarRecord 
#and their public/protected members 
-keep public class * extends com.orm.SugarRecord { 
    public protected *; 
} 
-keep class com.orm.** { *; } 

Похожие вопросы

https://github.com/satyan/sugar/issues/219

https://github.com/satyan/sugar/issues/395

Extra: Используйте следующие правила, чтобы включить номера строк в LogCat при запуске Proguard включен АПК сборки, не забудьте удалить, когда издательский.

-keepattributes SourceFile,LineNumberTable 

В противном случае LogCat линии будут как следующие

на android.support.v4.app.Fragment.b (Unknown Source)

Убедитесь, чтобы удалить его, когда издательство ,

 Смежные вопросы

  • Нет связанных вопросов^_^