2013-04-12 35 views
0

這是我的程序。Android Library中關於SQLCipher的問題

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     InitializeSQLCipher(); 
    } 



     private void InitializeSQLCipher() { 
       SQLiteDatabase.loadLibs(this); 

       File databaseFile = getDatabasePath("demo.db"); 

       databaseFile.mkdirs(); 

       databaseFile.delete(); 

       SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null); 


       database.execSQL("create table t1(a, b)"); 

       database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money", 
                       "two for the show"}); 
     } 
} 

我有添加一些三個庫在這個方案,這是在這個環節........ https://github.com/sqlcipher/android-database-sqlcipher

現在我的查詢是我收到以下錯誤。如何克服以獲得完美的解決方案...

04-12 11:47:27.379: E/AndroidRuntime(2163): FATAL EXCEPTION: main 
04-12 11:47:27.379: E/AndroidRuntime(2163): java.lang.NoClassDefFoundError: net.sqlcipher.database.SQLiteDatabase 
04-12 11:47:27.379: E/AndroidRuntime(2163): at com.example.testproject.MainActivity.InitializeSQLCipher(MainActivity.java:43) 
04-12 11:47:27.379: E/AndroidRuntime(2163): at com.example.testproject.MainActivity.onCreate(MainActivity.java:37) 
04-12 11:47:27.379: E/AndroidRuntime(2163): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-12 11:47:27.379: E/AndroidRuntime(2163): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) .... and so on ... 

回答

1

它無法找到您的圖書館。如果它是一個jar文件,你把它放在libs文件夾中並將其添加到項目中?您是否將其導出到導出標籤上?如果它是一個圖書館項目,你是否將它添加爲圖書館?如果是這樣,那麼在project.properties中添加引用?

如果所有這些都是正確的,嘗試一個make clean,eclipse可能只需要重新編譯所有東西。

+0

在這個鏈接中有2個庫https://github.com/sqlcipher/andrid-database-sqlcipher,並且我還導入了一些額外的2個庫,然後也即時得到這個錯誤... – user2109950

1

即使庫存有必需的jar文件,我也遇到了同樣的問題。解決它,通過修改Proguard配置文件。顯然,Proguard正在通過刪除lib來優化APK。所以如果你使用Proguard,你可能想看看配置文件。