1. 程式人生 > >Android5.0以上版本ActiveAndroid報ClassNotFoundException錯誤

Android5.0以上版本ActiveAndroid報ClassNotFoundException錯誤

近日將正在開發的app執行到android lollipop系統上卻出現的閃退,經過查詢發現是ActiveAndroid在5.0上的相容性問題。

通常我們初始化ActiveAndroid的時候,是通過在自定義的Application中的onCreate()方法中呼叫

ActiveAndroid.initialize(this);
或者是自定義的Application直接繼承com.activeandroid.app.Application

如上程式碼在5.0以下的系統不會有問題,以上就會直接導致app在應用的入口處就直接crash。

我們在5.0及以上版本需要換一種宣告方式,如下:

public class MyApplication extends Application {
	@Override
	public void onCreate() {
	    super.onCreate();

	    initializeDB();
	}

	protected void initializeDB() {
	    Configuration.Builder configurationBuilder = new Configuration.Builder(this);
	    configurationBuilder.addModelClasses(Test.class);
	    ActiveAndroid.initialize(configurationBuilder.create());
	}
}
關於上述程式碼做幾點說明:

1. MyApplication繼承的是android原生的Application,必須繼承原生的;

2. 很重要!Test.class為應用用到的ActiveAndroid的資料庫模型,所有的模型必須在此宣告;

3. 如果Configuration類找不到,說明你的ActiveAndroid的jar包版本太低的(需要3.1)

最後再說下,如果碰到了棘手的問題,百度無法解決的時候,多去StackOverflow搜尋下,會有很多的收穫。