Android库中有关SQLCipher的问题

时间:2013-04-12 06:45:38

标签: android noclassdeffounderror

这是我的计划。

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 ...

2 个答案:

答案 0 :(得分:1)

无法找到您的图书馆。如果它是一个jar,你把它放在你的libs文件夹中并将它添加到项目中吗?您是否在导出选项卡上导出了它?如果它是一个库项目,你是否将其添加为库?如果是这样,它会在project.properties中添加引用吗?

如果所有这些都是正确的,请尝试make clean,eclipse可能只需要重新编译所有内容。

答案 1 :(得分:1)

即使在库具有必需的jar文件之后,我也遇到了同样的问题。解决了它,通过修改Proguard配置文件。显然,Proguard通过删除lib来优化APK。因此,如果您使用的是Proguard,您可能需要查看配置文件。