Pull to refresh
0

Компиляция SQLCipher для Android x86

Reading time 3 min
Views 8.4K
Original author: Praveen Kundurthy
Популярная в Android-среде СУБД SQLite позволяет организовывать удобные хранилища данных, её возможностей достаточно для многих приложений, но не для тех, что работают с информацией, которую надо защищать.



Если ваш проект из этой серии, скажем, вы создаёте программу для хранения паролей и пользуетесь SQLite, дополнительные меры безопасности будут очень кстати. Одна из таких мер – шифрование.

Лучшее, что может сделать почти любой разработчик, если речь заходит о шифровании – найти готовое, проверенное временем, широко используемое решение, и внедрить его в свой продукт. Одно из таких решений, подходящих для Android – SQLCipher. Это расширение для SQLite с открытым исходным кодом, которое поддерживает прозрачное 256-битное AES-шифрование файлов баз данных.

SQLCipher применяется во множестве коммерческих разработок и продуктов с открытым исходным кодом. Фактически, это – одна из самых популярных систем шифрования баз данных для мобильных, встраиваемых и настольных платформ.

SQLCipher была выпущена компанией Zeletic в 2008-м году и поначалу использовалась в собственных разработках компании, в частности, в менеджере паролей Strip. Позже надёжность, низкая нагрузка на систему и маленький размер SQLCipher сделали её одним из самых широко используемых решений для шифрования баз данных. В 2011 году, отвечая на многочисленные просьбы о поддержке SQLCipher на Android, Guardian Project и Zeletic выпустили соответствующую версию системы. SQLCipher доступна и на многих других платформах. В частности, это Windows C/C++, .NET, Ruby, Java, PHP, Python, QT, Mac OS X и Linux.

Мы поговорим о том, как скомпилировать SQLCipher для Android-устройств, построенных на платформе Intel x86, используя в качестве рабочей машины компьютер с установленной Linux.

В общих чертах, для интеграции в Android-приложение поддержки SQLCipher, нужно, во-первых, добавить в проект соответствующие библиотеки, во-вторых – вместо средств SQLite из android.database.sqlite.SQLiteDatabase, использовать аналогичные, но уже из net.sqlcipher.database.SQLiteDatabase. Подробнее об этом можно узнать здесь.

Настройка Linux-окружения


Прежде чем скомпилировать SQLCipher для Android, нужно соответствующим образом подготовить компьютер с установленной Linux. В частности, надо загрузить и установить следующее:

  1. Android SDK
  2. Adnroid NDK
  3. Java Development Kit (JDK)

На сайте Zeletic можно найти разные варианты загрузки исходного кода SQLCipher, мы сделаем это с помощью такой команды:

git clone https://github.com/sqlcipher/android-database-sqlcipher.git

После того, как репозиторий будет клонирован в локальную папку, можно начинать процедуру сборки библиотеки.

Сборка библиотеки SQLCipher в Linux


Предположим, исходный код библиотеки находится в папке /home/test/android-database-cipher/. Выполним следующие команды:

Cd /home/test/android-database-cipher/
~/android-database-cipher> make init

Для того чтобы подготовить набор файлов, необходимых для успешной сборки SQLCipher, команде make init может понадобиться некоторое время. В ходе подготовки будут загружены следующие внешние библиотеки:

  • external/sqlcipher
  • external/android-sqlite
  • external/dalvik
  • external/icu4c
  • external/openssl
  • external/platform-frameworks-base

После завершения инициализации для начала компиляции выполните следующую команду:

~/android-database-cipher> make

Выполнение данной команды скомпилирует библиотеки для целевых архитектур, перечисленных в файле Application.mk. В нашем случае этот файл находится по адресу /home/test/android-database-cipher/jni/Application.mk. Для того чтобы получить версию библиотеки, собранную для платформы x86, он должен содержать такую строку:

APP_ABI := x86

При успешной компиляции то, что нам нужно, окажется в папке libs/x86.

Сообщения об ошибках на данном этапе обычно указывают на неправильные настройки системы. Если при выполнении команды make появится сообщение об ошибке вида «android update project fails», то, скорее всего, в системе пути к инструментам Android не добавлены в переменную PATH. Исправить это помогут такие команды:

export PATH=$PATH:~/android-sdk-linux/tools
export PATH=$PATH:~/ android-sdk-linux/platform-tools

Ошибку «ndk-build: command not found» вызывает отсутствие в переменной PATH сведений о расположении ndk-build. Её можно исправить так:

export PATH=$PATH:~/ android-ndk-linux /android-ndk-r10d

Если вы столкнулись с сообщением об ошибке «build.xml not found», автоматически сгенерировать build.xml можно так:

~/sqlcipher/android-database-sqlcipher> cd .. 
~/sqlcipher> android update project --target 1 --path ./ --subprojects

Для того чтобы получить target id, можно воспользоваться командой android list targets.

После того, как проблемы исправлены, снова запустите компиляцию, перейдя в каталог с исходным кодом SQLCipher.

Выводы


Мы рассмотрели здесь процесс подготовки SQLCipher для Android-устройств, построенных на платформе Intel x86 с использованием рабочей Linux-машины. Если вы работаете в Windows, здесь вы можете найти сведения о сборке SQLCipher на Windows-системах. Надеемся, SQLCipher поможет надёжно защитить данные всем, кто решит использовать эту библиотеку в своём проекте.
Tags:
Hubs:
+11
Comments 1
Comments Comments 1

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева