Sugar ORM在Android< 5上完美运行,但在Android 5>它崩溃了。 我使用的是1.4版
请帮帮我。
错误:android.database.sqlite.SQLiteException: no such table: AUDIO (code 1): , while compiling: SELECT * FROM AUDIO
proguard-rules.pro
-keep class me.lobanov.mp3downloadsfree.models.** { *; }
我的模特课:
package me.lobanov.mp3downloadsfree.models;
import com.orm.SugarRecord;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Audio extends SugarRecord {
private long aud_id;
private String aud_artist;
private String aud_title;
private String aud_url;
private long aud_duration;
public Audio() {
}
public Audio(long aud_id, String aud_artist, String aud_title, String aud_url, long aud_duration){
this.aud_id = aud_id;
this.aud_artist = aud_artist;
this.aud_title = aud_title;
this.aud_url = aud_url;
this.aud_duration = aud_duration;
}
}
我的申请类:
public class App extends SugarApp {
@Override
public void onCreate() {
super.onCreate();
}
}
我的清单:
<meta-data android:name="DATABASE" android:value="mp3downloadsfree.db" />
<meta-data android:name="VERSION" android:value="5" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="me.lobanov.mp3downloadsfree.models" />
答案 0 :(得分:14)
禁用即时运行对我有用。
答案 1 :(得分:3)
如果你已经用糖运行你的应用程序,然后你添加了一个“没有这样的表错误”的模型,那么你需要在AndroidManifest.xml中更新(增加)你的数据库VERSION元。这解决了大多数时候即时运行不是问题的问题。看看问题HERE 了解更多信息。
答案 2 :(得分:1)
禁用即时运行后,请确保在再次运行之前从手机/模拟器中卸载应用程序。
答案 3 :(得分:1)
我使用的是版本1.3并遇到了同样的问题。 但我通过使用gradle 1.5版并初始化SugarContext来解决。
在gradle依赖项中:
compile 'com.github.satyan:sugar:1.5'
在onCreate方法中:
SugarContext.init(this);
答案 4 :(得分:0)
请在你的onCreate应用程序类上实现hack findById函数,如下所示
public class App extends SugarApp {
@Override
public void onCreate() {
super.onCreate();
Audio.findById(Audio.class, (long) 1);
}
}
将创建您的音频表
答案 5 :(得分:0)
消息java.lang.NoSuchTable:表示有人试图在没有任何参数的情况下调用构造函数。添加默认构造函数应该可以解决这个问题:
public class User
{
public User() {
}
..
}