Android Tutorial Android database encryption with SQLCipher library

Status
Not open for further replies.

gudino jose luis

Active Member
Licensed User
Longtime User
Hi Erel
works perfect, but my application to increase its size from 3 MB to 53 MB; now is too great that I can do to reduce their size?
 

gudino jose luis

Active Member
Licensed User
Longtime User
Resolved, Erel Thanks for your time, the poblem was that had moved some files .rar and .pds
the "File" folder and obviously was packing the apk,now only 2 meg increase
 
Last edited:

tsteward

Well-Known Member
Licensed User
Longtime User
I have just started a B4J version of my android app and was wondering before going down this path:
Does this library work with B4J?
And run on multiple platforms?
 

JohnD

Active Member
Licensed User
Longtime User
Are you measuring the APK file size? It shouldn't increase it more than 1 or 2mb
When I look at the App info on my device, the Application size increases to 7.46MB from 3MB. The data size lists as 6.81MB, the actual .db size is 231KB. I expected some un-zipping with SQLCipher, but not this much.
 

cdk

Member
Licensed User
Longtime User
thank you for the question
it is good for SQL1.Initialize(File.DirInternal, "MyBooks.sqlite", True,"","")
it is not good for SQL1.Initialize(File.DirInternal, "MyBooks.sqlite", True,"1","")
How can I do exactly for the mistake ? thank you
the message


#Region Project Attributes
#ApplicationLabel: test
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#DebuggerForceStandardAssets: true
#End Region
#Region Activity Attributes
#DebuggerForceStandardAssets: true
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
Dim SQL1 As SQLCipher
Dim cursor1 As Cursor
End Sub
 
Last edited:

cdk

Member
Licensed User
Longtime User
Erel thank you

the logs


** Activity (main) Create, isFirst = true **
net.sqlcipher.database.SQLiteException: file is encrypted or is not a database
at net.sqlcipher.database.SQLiteDatabase.native_setLocale(Native Method)
at net.sqlcipher.database.SQLiteDatabase.setLocale(SQLiteDatabase.java:2102)
at net.sqlcipher.database.SQLiteDatabase.<init>(SQLiteDatabase.java:1968)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:901)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:948)
at anyhwheresoftware.b4a.objects.sqlcipher.SQLCipher.Initialize(SQLCipher.java:51)
at ch14.gui.b4a.example.main._activity_create(main.java:335)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:175)
at ch14.gui.b4a.example.main.afterFirstLayout(main.java:98)
at ch14.gui.b4a.example.main.access$100(main.java:16)
at ch14.gui.b4a.example.main$WaitForLayout.run(main.java:76)
~e: at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
 
Last edited:

tdocs2

Well-Known Member
Licensed User
Longtime User
Thank you, Erel.

The forum is indeed a treasure trove for which I am grateful to you and to the generosity of all who contribute.

Before I start on this path which sounds very appealing, does SQLCipher encrypt table names, column names, and data?

I am also concerned about some of the comments of impact on the size of the data base - double the size?

Best regards and thank you.

Sandy
 

alwaysbusy

Expert
Licensed User
Longtime User
I'm having some trouble using this lib (1.31):

1. added all lib files to the library folder
2. added icudt64l.zip to the files tab
3. added #DebuggerForceStandardAssets: true to the project attributes

Error log:

Installing file.
PackageAdded: package:com.ab.bleemer
** Activity (main) Create, isFirst = true **
java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.ab.bleemer-6.apk,libraryPath=/data/app-lib/com.ab.bleemer-6]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:526)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:112)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:107)
at anyhwheresoftware.b4a.objects.sqlcipher.SQLCipher.Initialize(SQLCipher.java:50)
at com.ab.bleemer.abilglobal._initializedatabase(abilglobal.java:306)
at com.ab.bleemer.main._activity_create(main.java:398)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:175)
at com.ab.bleemer.main.afterFirstLayout(main.java:98)
at com.ab.bleemer.main.access$100(main.java:16)
at com.ab.bleemer.main$WaitForLayout.run(main.java:76)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
 

alwaysbusy

Expert
Licensed User
Longtime User
Galaxy S4 (4.4.2). I had a similar case https://www.b4x.com/android/forum/threads/sqlcipher-runtime-error-s.35636/#content about a year ago in another app, but in this case I don't have a own lib that uses armeabi.

The libs I use are:



ABIndoorLocator is my own lib, but it does not use armeabi (it's a very simple lib that gets the Wifi's around you). The only other ones I've never used in another app are AHLocale and NotificationBuilder.
 

alwaysbusy

Expert
Licensed User
Longtime User
No it did not. I've now created a whole new project, copy and pasted all the code from the bad one and that one does also work. Unfortunately I've overwritten the bad one but I have a strong feeling all I had to do was just restart B4A and it would have been solved. Sorry for bothering you Erel with this. I've done very little with B4A the last 9 months (other language for other client/project), but now I've got a rather big cycle of B4A coming up btw, 4.00 rocks!
 

walterf25

Expert
Licensed User
Longtime User
Ok, so what am I missing here, i'm sure i've done this before but i can't remember how for the life of me. Do I need to create the database file with a different software on my laptop for example SQlite Expert Pro 3?
I've added the icudt46l.zip file under my files tab, and also added to the files folder in my app, i'm using version 1.2 of this library.

In My app i copy the Piko_Meter.db from my assets folder into my package name files folder of my app then when I initialize the db like so
B4X:
recs.Initialize(File.DirDefaultExternal, "piko_records.db", False, "password", "")

I get the following error, I know that Erel replied to someone who posted the same question by saying the reason is that there already is another database with a different password. In my case i have not set any password at all to my database, so what other reason could there be for me to get this error.

net.sqlcipher.database.SQLiteException: file is encrypted or is not a database



Any advice will be greatly appreciated.

Thanks,
Walter
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…