LBRY-Vault/electrum/gui/kivy
ThomasV d062548e41
Merge pull request #4861 from SomberNight/blockchain_fork_ids
blockchain: generalise fork handling and follow most work chain
2018-11-28 12:54:57 +01:00
..
data android: runtime permission dialog for camera 2018-11-26 17:54:07 +01:00
nfc_scanner fix import error 2018-09-20 01:20:13 +02:00
theming/light remove generated kivy theming 2018-09-06 17:25:11 +02:00
tools android: don't use external storage 2018-11-26 17:54:07 +01:00
uix implement oneserver option for kivy 2018-11-03 17:21:38 +01:00
__init__.py file reorganization with top-level module 2018-07-13 14:01:37 +02:00
i18n.py file reorganization with top-level module 2018-07-13 14:01:37 +02:00
main.kv file reorganization with top-level module 2018-07-13 14:01:37 +02:00
main_window.py blockchain.py: generalise fork ids to get rid of conflicts 2018-11-22 16:57:22 +01:00
Makefile fix paths in buildozer/makefile 2018-07-13 14:45:08 +02:00
Readme.md android: build apk using new python3 p4a toolchain 2018-11-26 17:54:05 +01:00

Kivy GUI

The Kivy GUI is used with Electrum on Android devices. To generate an APK file, follow these instructions.

Recommended env: Ubuntu 18.04

1. Preliminaries

Make sure the current user can write /opt (e.g. sudo chown username: /opt).

We assume that you already got Electrum to run from source on this machine, hence have e.g. git, python3-pip and python3-setuptools.

2. Install kivy

Install kivy for python3 as described here. So for example:

sudo add-apt-repository ppa:kivy-team/kivy
sudo apt-get install python3-kivy

3. Install python-for-android (p4a)

p4a is used to package Electrum, Python, SDL and a bootstrap Java app into an APK file. We need some functionality not in p4a master, so for the time being we have our own fork.

Something like this should work:

cd /opt
git clone https://github.com/kivy/python-for-android
cd python-for-android
git remote add sombernight https://github.com/SomberNight/python-for-android
git fetch --all
git checkout f74226666af69f9915afaee9ef9292db85a6c617

4. Install buildozer

4.1 Buildozer is a frontend to p4a. Luckily we don't need to patch it:

cd /opt
git clone https://github.com/kivy/buildozer
cd buildozer
sudo python3 setup.py install

4.2 Install additional dependencies:

sudo apt-get install python-pip

(from buildozer docs)

sudo pip install --upgrade cython==0.21
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential ccache git libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 python2.7 python2.7-dev openjdk-8-jdk unzip zlib1g-dev zlib1g:i386

4.3 Download Android NDK

cd /opt
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
unzip android-ndk-r14b-linux-x86_64.zip

5. Some more dependencies

python3 -m pip install colorama appdirs sh jinja2 cython==0.29
sudo apt-get install autotools-dev autoconf libtool pkg-config python3.7

6. Create the UI Atlas

In the electrum/gui/kivy directory of Electrum, run make theming.

7. Download Electrum dependencies

sudo contrib/make_packages

8. Try building the APK and fail

1. Try and fail:

contrib/make_apk

Symlink android tools:

ln -sf ~/.buildozer/android/platform/android-sdk-24/tools ~/.buildozer/android/platform/android-sdk-24/tools.save

2. Try and fail:

contrib/make_apk

During this build attempt, buildozer downloaded some tools, e.g. those needed in the next step.

9. Update the Android SDK build tools

Method 1: Using the GUI

Start the Android SDK manager in GUI mode:

~/.buildozer/android/platform/android-sdk-24/tools/android

Check the latest SDK available and install it ("Android SDK Tools" and "Android SDK Platform-tools"). Close the SDK manager. Repeat until there is no newer version.

Reopen the SDK manager, and install the latest build tools ("Android SDK Build-tools"), 28.0.3 at the time of writing.

Install "Android 9">"SDK Platform". Install "Android Support Repository" from the SDK manager (under "Extras").

Method 2: Using the command line:

Repeat the following command until there is nothing to install:

~/.buildozer/android/platform/android-sdk-24/tools/android update sdk -u -t tools,platform-tools

Install Build Tools, android API 19 and Android Support Library:

~/.buildozer/android/platform/android-sdk-24/tools/android update sdk -u -t build-tools-28.0.3,android-28,extra-android-m2repository

(FIXME: build-tools is not getting installed?! use GUI for now.)

10. Build the APK

contrib/make_apk

FAQ

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}