APP在打开某个页面的时候闪退,报错信息如下:
android.database.sqlite.SQLiteException: near "$change": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS Cache ( serialVersionUID INTEGER,result,key,id INTEGER PRIMARY KEY AUTOINCREMENT,updateTime INTEGER,$change )
在百度上搜索相关报错无果,后来发现SQL执行语气最后的这个$change有点怪异,一路跟踪代码发现:
Field[] fields=entityClazz.getDeclaredFields();通过反射获得方法时带上了$change
百度搜索$change 得到了答案:是Instant Run引起的问题
File->Settings->Build,Execution,Deployment->Instant Run
将所有选项去掉后,问题解决。
参考博文:http://blog.youkuaiyun.com/baidu_17508977/article/details/52955982
至于为什么使用Instant Run会出现该问题,可以看看下面的文章:
http://www.jianshu.com/p/780eb85260b3
最后:
syntax error (code 1) 这种错误类型表示的是语法错误,这个时候首先要检查一下自己的SQL语句。