57 lines
3.3 KiB
Markdown
57 lines
3.3 KiB
Markdown
# How to build Keepass2Android
|
|
|
|
## Overview
|
|
|
|
Keepass2Android is a Mono for Android app. This means that you need Xamarin's Mono for Android to build it. However, it also uses several components written in Java, so there are also Android-Studio projects involved. To make things even worse, parts of the keyboard and kdb-library are written in native code.
|
|
The current build-scripts assume that the native libraries are already built (they are included in the repo).
|
|
|
|
To build KP2A from scratch, make sure that you have Xamarin's Mono for Android installed and also install Android Studio. Make sure that both point to the same Android SDK location.
|
|
|
|
## Prerequisites
|
|
|
|
- Install Xamarin.Android
|
|
- Fetch all submodules (`git submodule init && git submodule update`)
|
|
|
|
## Build
|
|
|
|
### On Windows
|
|
|
|
```bat
|
|
cd build-scripts
|
|
build-java.bat
|
|
build-xamarin.bat
|
|
```
|
|
|
|
build-java.bat will call gradlew for several Java modules. build-xamarin.bat will first make sure that you have all files at their place. (There is a "secret" file for Dropbox SDK keys which is not in the repo, this is replaced with a dummy file. There are also different Android Manifest files depending on the configuration which is selected by calling the appropriate script.)
|
|
|
|
**Notes:**
|
|
|
|
- For building the java parts, it is suggested to keep a short name (e.g. "c:\projects\keepass2android") for the root project directory. Otherwise the Windows path length limit might be hit when building.
|
|
- Before building the java parts, make sure you have set the ANDROID_HOME variable or create a local.properties file inside the directories with a gradlew file. It is recommended to use the same SDK location as that of the Xamarin build.
|
|
|
|
### On Linux
|
|
|
|
- Install [Mono](https://www.mono-project.com/)
|
|
- Install Xamarin.Android
|
|
- Option 1: Use the mono-project [CI builds](https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android-linux/lastSuccessfulBuild/Azure/)
|
|
- Option 2: [Build it from source](https://github.com/xamarin/xamarin-android/blob/master/Documentation/README.md#building-from-source)
|
|
- Setup your environment:
|
|
- Add `xabuild` to your path: `export PATH=/path/to/xamarin.android-oss/bin/Release/bin/:$PATH`
|
|
- Setup your `ANDROID_HOME` if it's not already: `export ANDROID_HOME=/path/to/android/`
|
|
- Alternatively, you can set your `ANDROID_SDK_PATH` and `ANDROID_NDK_PATH`.
|
|
- Build [jar2xml](https://github.com/xamarin/jar2xml) and copy `jar2xml.jar` to `/path/to/xamarin.android-oss/bin/Release/lib/xamarin.android/xbuild/Xamarin/Android/`
|
|
- Install [libzip](https://libzip.org/) for your distribution.
|
|
- Note: Xamarin seems to require `libzip4`, yet most distributions only ships `libzip5`. As a dirty workaround, it's possible to symlink `libzip.so.5` to `libzip.so.4`. Luckily, it appears to be working.
|
|
- `sudo ln -s /usr/lib/libzip.so.5 /usr/lib/libzip.so.4`
|
|
- or `sudo ln -s /usr/lib64/libzip.so.5 /usr/lib/libzip.so.4`
|
|
- Install NuGet dependencies:
|
|
- `cd src/ && nuget restore KeePass.sln`
|
|
- Build:
|
|
- Option 1: `cd build-scripts && ./build-all.sh`
|
|
- Option 2:
|
|
- Build the Java parts: `cd build-scripts/ && ./build-java.sh`
|
|
- Build the Xamarin parts: `./build-xamarin.sh`
|
|
- Build the signed APK: `./build-apk.sh`
|
|
- Enjoy:
|
|
- `adb install ../keepass2android/bin/Debug/keepass2android.keepass2android_debug-Signed.apk`
|