1、現象(異常情況)
手機上調測時報錯:android.database.sqlite.SQLiteException: near "$change": syntax error (code 1):...
在使用SQLite動態創建表時報錯,多了一個$change字段。
於是反覆讀代碼,發現應該不會有$change這個字段。表字段是通過註解方式實現,getDeclareFields方式獲取的字段。
2、經過查找,發現多了一個(發現問題)
public static transient volatile com.android.tools.fd.runtime.IncrementalChange這麼信息,是系統自動生成的。
於是懷疑是工具的原因
3、查找後發現(解決方案)
是android studio2的Instant Run功能導致,默認該功能是開啓的。關閉了該功能就好使了。
總結
以後用android studio使用反射就需要注意了,有可能該問題導致多了字段。如果寫代碼時,也可以加上判斷就比較完美些。
---------------------
轉自:https://blog.csdn.net/danielinbiti/article/details/51301343