这通常不是一个问题,在哪里可以找到分步指南,而是指导本身.
我对这篇文章的意图是给别人一个提示,他在编译驱动程序插件方面遇到的问题和我最近的问题一样.
我正在按照本教程在 Windows 上使用 SQLCipher 编译 SQLite。我对编译的先决条件感到困惑。我发现我需要安装以下来编译它:
在以上所有内容中,我只安装了 Visual Studio 2008。我正在使用 Windows 7。
在 Windows 上使用 SQLCipher 编译 SQLite 的确切先决条件是什么?
我正在尝试将 SQLCipher 添加到我的项目中。我可以将 jar 文件链接到项目,但链接提供的 .so 文件时出现问题。
因此,当我尝试打开数据库时,我收到 UnSatisfiedLinkError 。
谁能告诉我将 .so 文件添加到项目并使其运行的最佳方法。
我试图在我的项目API 16(摩托罗拉Xoom 4.1.2)中使用sqlcipher(2.0.8)并获得以下stacktrace.我在libs中的armeabi文件夹中有3个这样的库,在assets文件夹中有icudt46l.zip.我SQLiteDatabase.loadLibs(context);参与了我的活动.但是,当II创建数据库时,应用程序崩溃了.
11-08 21:00:33.050: E/AndroidRuntime(2222): FATAL EXCEPTION: Main:
11-08 21:00:33.050: E/AndroidRuntime(2222): net.sqlcipher.database.SQLiteException: not an error
11-08 21:00:33.050: E/AndroidRuntime(2222): at net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method)
11-08 21:00:33.050: E/AndroidRuntime(2222): at net.sqlcipher.database.SQLiteDatabase.<init>(SQLiteDatabase.java:1952)
11-08 21:00:33.050: E/AndroidRuntime(2222): at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:902)
11-08 21:00:33.050: E/AndroidRuntime(2222): at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:945)
11-08 21:00:33.050: E/AndroidRuntime(2222): at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:107)
Run Code Online (Sandbox Code Playgroud) 我有一个加密的 sqlite db 及其密钥。(由 android 程序生成)。但是,当我在命令行中打开数据库时,我无法读取数据库。命令行工具通过以下方式安装:
brew install sqlcipher
Run Code Online (Sandbox Code Playgroud)
我通过以下方式打开数据库:
sqlcipher EnDB.db
>pragma key="6b74fcd";
>select * from bizinfo;
Run Code Online (Sandbox Code Playgroud)
它一直告诉我“错误:文件已加密或不是数据库”
但是,如果我使用 gui app sqlite 数据库浏览器(这是一个 Windows 程序,我在 wine 中运行它)打开数据库文件。它弹出一个窗口让我输入密钥,以6b74fcd作为成功读取数据库的密钥。

由于我想在将来自动处理数据库,所以我不能依赖 GUI。你知道为什么命令行不起作用吗?
一直在和Proguard一起战斗,并在官方的Proguard网站和StackOverflow上尝试了很多示例和解决方案.
我有一个需要混淆的大型项目,它有许多引用的库项目和Jars.
我从2个libs,com.google.common和twitter4j收到来自proguard的725个警告.
如果我添加以下内容,我很乐意让项目编译:
-dontwarn com.google.common.**
-dontwarn twitter4j.**
Run Code Online (Sandbox Code Playgroud)
然而,应用程序在打开时立即崩溃,所以这似乎只是一种隐藏问题的方式,而不是修复它.
proguard-project.txt位于项目根目录中,其配置位于project.properties文件中,如下所示.
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
Run Code Online (Sandbox Code Playgroud)
这是我的proguard-project.txt文件
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontshrink
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep class javax.** { *; }
-keep class org.** { *; }
-keep …Run Code Online (Sandbox Code Playgroud) 我无法在Xcode(5.0)上构建sqlcipher(最新的git-source),它失败了:
clang:错误:没有这样的文件或目录:..../sqlite.c
我正在尝试为iOS构建(5,使用v7 SDK).openssl,openssl-xcode和sqlcipher作为子项目包含在文档中,sqlcipher的目标是sqlcipher和amalgamation,但由于某种原因,sqlite3.c没有被构建.任何想法在哪里看得更远?我不是xcode专家......提前谢谢!
我正在ava.lang.NoClassDefFoundError: net/sqlcipher/CursorWindow尝试使用sqlicipher和proguard运行我的应用程序.该项目完美无需启用proguard.我第一次使用sqlcipher创建一个新的db我得到上面的错误.我看过另一个看似相同的问题,但我已经尝试了这个问题的答案,我仍然得到了错误.
Android Proguard SqlCipher NoClassDefFoundError
这是我的全部内容proguard-properties:
-libraryjars libs/commons-codec.jar
-libraryjars libs/guava-r09.jar
-libraryjars libs/httpmime-4.1.2.jar
-libraryjars libs/jsr305-2.0.2.jar
-libraryjars libs/libphonenumber-5.7.jar
-libraryjars libs/sqlcipher.jar
-keep class com.myandroidapp.** { *; }
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-dontobfuscate
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-dontwarn javax.annotation.**
-dontwarn android.app.**
-dontwarn android.support.**
-dontwarn android.view.**
-dontwarn android.widget.**
-dontwarn com.google.common.primitives.**
-dontwarn **CompatHoneycomb
-dontwarn **CompatHoneycombMR2
-dontwarn **CompatCreatorHoneycombMR2
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * { …Run Code Online (Sandbox Code Playgroud) 我已经安装了CocoaPods ..并按照指示加载了工作区.
我收到这些警告,我不明白,这是一个例子:
豆荚-CipherDatabaseSync-SQLCipher sqlite.c /Users/admin/Code/CipherDatabaseSync/Pods/SQLCipher/sqlite3.c:24035:13:宏 'MAX' 的歧义膨胀
我已经四处寻找了几个小时,我对我需要做的事情感到难过,有人可以指点我的方向,提供一些见解吗?
谢谢.
出于安全原因,要求之一是加密 SQLite 数据库。因此,我必须使用 SQLCupher。只要我不使用 启用混淆,应用程序就会按预期工作minifyEnabled true。
一旦我设置minifyEnabled true,我就会得到一个NoSuchFieldError.
我正在 Application 子类中初始化 SQLCipher:
SQLiteDatabase.loadLibs(this);
Run Code Online (Sandbox Code Playgroud)
这是异常日志:
com.iconnectyo: runtime.cc:663] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.NoSuchFieldError: no "J" field "mNativeHandle" in class "Lnet/sqlcipher/database/SQLiteDatabase;" or its superclasses
runtime.cc:663] at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class) (Runtime.java:-2)
runtime.cc:663] at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:1131)
runtime.cc:663] at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.Class, java.lang.String) (Runtime.java:1085)
runtime.cc:663] at void java.lang.Runtime.loadLibrary0(java.lang.Class, java.lang.String) (Runtime.java:1008)
runtime.cc:663] at void java.lang.System.loadLibrary(java.lang.String) (System.java:1664)
runtime.cc:663] at void net.sqlcipher.database.SQLiteDatabase$a.a(java.lang.String[]) (:213) …Run Code Online (Sandbox Code Playgroud)