如何开始使用SQLCipher for android?

时间:2013-07-16 08:32:58

标签: android database android-sqlite sqlcipher

我需要使用SQLCipher for android ...我已经使用SQLite创建了我的应用程序,并希望将其转换为SQLCipher。

问题是,我对SQLCipher一无所知。

我已在此链接中了解到这一点:http://sqlcipher.net/sqlcipher-for-android/

但我还是不太清楚。 我想知道你是否可以为android教程提供一些基本的sqlcipher,其中所有内容都是从绝对基础知识中轻松教授的。

谢谢!

3 个答案:

答案 0 :(得分:25)

要正确使用SQL Cipher for Android,您必须使用外部库并更改与数据库交互的一些代码。

  1. 这些必须首先添加到您的项目中(在libs文件夹中。)请参阅此处获取这些内容:http://sqlcipher.net/sqlcipher-for-android/

  2. 其次,您需要将icudt4dl.zip文件添加到您的assets文件夹中,此Zip附带SQL Cipher库。

  3. 右键单击您的项目,转到属性,然后转到Java构建路径,然后包含诸如commons-codec.jar,guava-r09.jar,sqlcipher.jar之类的库。完成后,执行构建清理。

  4. 然后在您的应用程序中,您将导入import net.sqlcipher.database

  5. ,而不是导入android.database.sqlite。
  6. 更改与DB交互的任何代码,例如:

    SQLiteDatabase.loadLibs(上下文);

    String dbPath = this.getDatabasePath(" dbname.db")。getPath();

    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbPath," dbPassword",null);

  7. 验证数据库是否已加密,转到Eclipse中的DDMS透视图,单击文件资源管理器选项卡,导航到data / data /,单击.db文件并选择获取设备文件,将其保存到桌面并用文本编辑器打开它。查找已插入数据库的纯文本值,如果仍然可以读取它们,则会出现问题。

  8. 在实现SQL Cipher之前查看一些SQLite教程可能也是一个好主意。这里提到一个好的: Android sqlite database - where do i start as the tutorial has gone for notepad?

    <强>更新

    现在这个答案已经过时,并且Eclipse实际上已经不适用于Android开发。我最近不得不在Android Studio for Android 5 + 6上使用SQLCipher构建应用程序,这些是我遵循的步骤。

    在Android Studio中,您可以在构建文件中包含SQLCipher作为依赖项。更新build gradle中的依赖项以包含以下行:

    dependencies{
        compile 'net.zetetic:android-database-sqlcipher:3.5.4@aar'
    }
    

    您可以在此处与版本保持同步: https://mvnrepository.com/artifact/net.zetetic/android-database-sqlcipher

    我的应用程序不会构建,除非我删除了lib文件夹和资产文件夹中的SQLCipher文件,但之后它按预期工作。完成这些更改后,运行构建/清理并检查它是否有效。

    上面提到的更改代码的步骤仍然有效。

答案 1 :(得分:8)

虽然您仍然可以关注Zetetic's Eclipse tutorial并自行添加.so库,但您真的不需要在Android Studio中执行此操作。只需添加一个Gradle依赖项,例如compile net.zetetic:android-database-sqlcipher:3.3.1-2@aar,您就可以开始了!

Here您可以随时查看最新的aar版本,here您可以阅读有关整合的更多信息。

答案 2 :(得分:0)

//in build.gradle
implementation 'net.zetetic:android-database-sqlcipher:4.4.0@aar'
implementation "androidx.sqlite:sqlite:2.1.0"

 // in activity
 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // initialize sqlite libraries
        SQLiteDatabase.loadLibs(this)

        // initializing db
        val database = SQLiteDatabase.openOrCreateDatabase(
            "/some/path",
            "mypassword",
            null
        )

        // creating table if not exists
        database.execSQL("create table if not exists $DB_TABLE_NAME($DB_COLUMN1_NAME,  $DB_COLUMN2_SURNAME)")

        // get data from db
        s = loadFromDB()
    }




  private fun loadFromDb(): String {
        var s = ""
        var i = 0

        createTableIfNotExist()
        val cursor = database.rawQuery("select * from $DB_TABLE_NAME", null)
        cursor?.moveToFirst()
        if (!cursor.isAfterLast) {
            do {
                s += "col_${i++}: name:${cursor.getString(0)} surname:${cursor.getString(1)}\n"
            } while (cursor.moveToNext())

            cursor.close()
            return s
        }

        return s
    }

如果没有真实的示例和文档,入门会有些困难! 这是一个简单的exampledocumentation。使用起来非常简单方便!

如果您喜欢该示例,请不要忘了加注星标并做出贡献)。谢谢!