tMerge pull request #3726 from bauerj/android-docs - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 58d889e4806ab649b52f407bf20500c7bd583ad9 (DIR) parent d580ecfb28d89d6e3bef006fa19c7a840a675b93 (HTM) Author: ThomasV <thomasv@electrum.org> Date: Mon, 15 Jan 2018 18:44:39 +0100 Merge pull request #3726 from bauerj/android-docs Update kivy docs to current build process Diffstat: A gui/kivy/Readme.md | 80 +++++++++++++++++++++++++++++++ D gui/kivy/Readme.txt | 24 ------------------------ 2 files changed, 80 insertions(+), 24 deletions(-) --- (DIR) diff --git a/gui/kivy/Readme.md b/gui/kivy/Readme.md t@@ -0,0 +1,80 @@ +# Kivy GUI + +The Kivy GUI is used with Electrum on Android devices. To generate an APK file, follow these instructions. + +## 1. Install python-for-android (p4a) +p4a is used to package Electrum, Python, SDL and a bootstrap Java app into an APK file. +We patched p4a to add some functionality we need for Electrum. Until those changes are +merged into p4a, you need to merge them locally (into the stable branch): + +1. [kivy/python-for-android#1213](https://github.com/kivy/python-for-android/pull/1213) +2. [kivy/python-for-android#1217](https://github.com/kivy/python-for-android/pull/1217) + +Something like this should work: + +```sh +cd /opt +git clone https://github.com/kivy/python-for-android +cd python-for-android +git remote add agilewalker https://github.com/agilewalker/python-for-android +git remote add bauerj https://github.com/bauerj/python-for-android +git checkout stable +git fetch agilewalker +git merge agilewalker/master +git fetch bauerj +git merge bauerj/add-activity +``` + +## 2. Install buildozer +Buildozer is a frontend to p4a. Of course it needs to be patched too: + +1. [kivy/buildozer#612](https://github.com/kivy/python-for-android/pull/1213) + +```sh +cd /opt +git clone https://github.com/kivy/buildozer +cd buildozer +git remote add bauerj https://github.com/bauerj/buildozer +git fetch bauerj +git merge bauerj/add-activity +``` + +You also want to install it: + +```sh +sudo python3 setup.py install +``` + +## 3. Update the Android SDK build tools +3.1 Start the Android SDK manager: + + ~/.buildozer/android/platform/android-sdk-20/tools/android + +3.2 Check the latest SDK available and install it. + +3.3 Close the SDK manager. + +3.3 Reopen the SDK manager, scroll to the bottom and install the latest build tools (probably v27) + +## 4. Install the Support Library Repository +Install "Android Support Library Repository" from the SDK manager. + +## 5. Create the UI Atlas +In the `gui/kivy` directory of Electrum, run `make theming`. + +## 6. Download Electrum dependencies +Run `contrib/make_packages`. + +## 7. Build the APK +Run `contrib/make_apk`. + +# FAQ +## Why do I get errors like `package me.dm7.barcodescanner.zxing does not exist` while compiling? +Update your Android build tools to version 27 like described above. + +## Why do I get errors like `(use -source 7 or higher to enable multi-catch statement)` while compiling? +Use the `stable` branch of python-for-android. +[This commit](https://github.com/kivy/python-for-android/commit/3534a761b17040755accf941f898cc66b905e8db) in master is the culprit. + +## I changed something but I don't see any differences on the phone. What did I do wrong? +You probably need to clear the cache: `rm -rf .buildozer/android/platform/build/{build,dists}` (DIR) diff --git a/gui/kivy/Readme.txt b/gui/kivy/Readme.txt t@@ -1,24 +0,0 @@ -Before compiling, create packages: `contrib/make_packages` - -Commands:: - - `make theming` to make a atlas out of a list of pngs - - `make apk` to make a apk - - -If something in included modules like kivy or any other module changes -then you need to rebuild the distribution. To do so: - - rm -rf .buildozer/android/platform/python-for-android/dist - - -how to build with ssl: - - rm -rf .buildozer/android/platform/build/ - ./contrib/make_apk - pushd /opt/electrum/.buildozer/android/platform/build/build/libs_collections/Electrum/armeabi-v7a - cp libssl1.0.2g.so /opt/crystax-ndk-10.3.2/sources/openssl/1.0.2g/libs/armeabi-v7a/libssl.so - cp libcrypto1.0.2g.so /opt/crystax-ndk-10.3.2/sources/openssl/1.0.2g/libs/armeabi-v7a/libcrypto.so - popd - ./contrib/make_apk