Add scripts and instructions for Linux builds.
This is mostly based on @bensku work. See https://github.com/PhilippC/keepass2android/pull/156
This commit is contained in:
		
							
								
								
									
										20
									
								
								src/build-scripts/build-all.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								src/build-scripts/build-all.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | echo '*****************************************' | ||||||
|  | echo '********** Building Java parts **********' | ||||||
|  | echo '*****************************************' | ||||||
|  | ./build-java.sh | ||||||
|  |  | ||||||
|  | echo '*****************************************' | ||||||
|  | echo '******** Building Xamarin parts *********' | ||||||
|  | echo '*****************************************' | ||||||
|  | ./build-xamarin.sh | ||||||
|  |  | ||||||
|  | echo '*****************************************' | ||||||
|  | echo '************** Building APK *************' | ||||||
|  | echo '*****************************************' | ||||||
|  | ./build-apk.sh | ||||||
|  |  | ||||||
|  | echo | ||||||
|  | echo 'Congratulations! You you can find the target APK in src/keepass2android/bin/Debug/.' | ||||||
							
								
								
									
										8
									
								
								src/build-scripts/build-apk.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								src/build-scripts/build-apk.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | pushd ../keepass2android | ||||||
|  |  | ||||||
|  | xabuild keepass2android.csproj /t:SignAndroidPackage "$@" | ||||||
|  |  | ||||||
|  | popd | ||||||
							
								
								
									
										18
									
								
								src/build-scripts/build-java.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								src/build-scripts/build-java.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | pushd ../java/ | ||||||
|  |  | ||||||
|  | pushd JavaFileStorageTest-AS | ||||||
|  | ./gradlew assemble | ||||||
|  | popd | ||||||
|  |  | ||||||
|  | pushd KP2ASoftkeyboard_AS | ||||||
|  | ./gradlew assemble | ||||||
|  | popd | ||||||
|  |  | ||||||
|  | pushd Keepass2AndroidPluginSDK2 | ||||||
|  | ./gradlew assemble | ||||||
|  | popd | ||||||
|  |  | ||||||
|  | popd | ||||||
							
								
								
									
										25
									
								
								src/build-scripts/build-xamarin.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								src/build-scripts/build-xamarin.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | pushd .. | ||||||
|  |  | ||||||
|  | pushd Kp2aBusinessLogic/Io | ||||||
|  |  | ||||||
|  | if [ -f "DropboxFileStorageKeys.cs" ] | ||||||
|  | then | ||||||
|  |   echo "DropboxFileStorageKeys.cs found." | ||||||
|  | else | ||||||
|  |   cp DropboxFileStorageKeysDummy.cs DropboxFileStorageKeys.cs | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | popd | ||||||
|  |  | ||||||
|  | pushd keepass2android | ||||||
|  | ./UseManifestDebug.sh | ||||||
|  | popd | ||||||
|  |  | ||||||
|  | # call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64 | ||||||
|  |  | ||||||
|  | xabuild KeePass.sln /target:keepass2android /p:BuildProjectReferences=true /p:Configuration="Debug" /p:Platform="Any CPU" "$@" | ||||||
|  |  | ||||||
|  | popd | ||||||
							
								
								
									
										55
									
								
								src/build.readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/build.readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | # 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` | ||||||
|  | - 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` | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| 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. |  | ||||||
|  |  | ||||||
| On Windows you can use |  | ||||||
|  |  | ||||||
| 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 * |  | ||||||
|  - Please don't forget to update the git submodules before building. |  | ||||||
|  - For building the java parts on Windows, 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. |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								src/keepass2android/UseManifestDebug.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								src/keepass2android/UseManifestDebug.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | echo 'Copying debug manifest.' | ||||||
|  | cp Properties/AndroidManifest_debug.xml Properties/AndroidManifest.xml | ||||||
		Reference in New Issue
	
	Block a user
	 Gilbert Gilb's
					Gilbert Gilb's