URI: 
       tReadme.md - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       tReadme.md (3785B)
       ---
            1 # Kivy GUI
            2 
            3 The Kivy GUI is used with Electrum on Android devices.
            4 To generate an APK file, follow these instructions.
            5 
            6 ## Android binary with Docker
            7 
            8 ✗ _This script does not produce reproducible output (yet!).
            9    Please help us remedy this._
           10 
           11 This assumes an Ubuntu (x86_64) host, but it should not be too hard to adapt to another
           12 similar system. The docker commands should be executed in the project's root
           13 folder.
           14 
           15 1. Install Docker
           16 
           17     ```
           18     $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
           19     $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
           20     $ sudo apt-get update
           21     $ sudo apt-get install -y docker-ce
           22     ```
           23 
           24 2. Build image
           25 
           26     ```
           27     $ sudo docker build -t electrum-android-builder-img contrib/android
           28     ```
           29 
           30 3. Build locale files
           31 
           32     ```
           33     $ ./contrib/pull_locale
           34     ```
           35 
           36 4. Prepare pure python dependencies
           37 
           38     ```
           39     $ ./contrib/make_packages
           40     ```
           41 
           42 5. Build binaries
           43 
           44     ```
           45     $ mkdir --parents $PWD/.buildozer/.gradle
           46     $ sudo docker run -it --rm \
           47         --name electrum-android-builder-cont \
           48         -v $PWD:/home/user/wspace/electrum \
           49         -v $PWD/.buildozer/.gradle:/home/user/.gradle \
           50         -v ~/.keystore:/home/user/.keystore \
           51         --workdir /home/user/wspace/electrum \
           52         electrum-android-builder-img \
           53         ./contrib/android/make_apk
           54     ```
           55     This mounts the project dir inside the container,
           56     and so the modifications will affect it, e.g. `.buildozer` folder
           57     will be created.
           58 
           59 5. The generated binary is in `./bin`.
           60 
           61 
           62 
           63 ## FAQ
           64 
           65 ### I changed something but I don't see any differences on the phone. What did I do wrong?
           66 You probably need to clear the cache: `rm -rf .buildozer/android/platform/build-*/{build,dists}`
           67 
           68 
           69 ### How do I deploy on connected phone for quick testing?
           70 Assuming `adb` is installed:
           71 ```
           72 $ adb -d install -r bin/Electrum-*-arm64-v8a-debug.apk
           73 $ adb shell monkey -p org.electrum.electrum 1
           74 ```
           75 
           76 
           77 ### How do I get an interactive shell inside docker?
           78 ```
           79 $ sudo docker run -it --rm \
           80     -v $PWD:/home/user/wspace/electrum \
           81     -v $PWD/.buildozer/.gradle:/home/user/.gradle \
           82     --workdir /home/user/wspace/electrum \
           83     electrum-android-builder-img
           84 ```
           85 
           86 
           87 ### How do I get more verbose logs for the build?
           88 See `log_level` in `buildozer.spec`
           89 
           90 
           91 ### How can I see logs at runtime?
           92 This should work OK for most scenarios:
           93 ```
           94 adb logcat | grep python
           95 ```
           96 Better `grep` but fragile because of `cut`:
           97 ```
           98 adb logcat | grep -F "`adb shell ps | grep org.electrum.electrum | cut -c14-19`"
           99 ```
          100 
          101 
          102 ### Kivy can be run directly on Linux Desktop. How?
          103 Install Kivy.
          104 
          105 Build atlas: `(cd contrib/android/; make theming)`
          106 
          107 Run electrum with the `-g` switch: `electrum -g kivy`
          108 
          109 ### debug vs release build
          110 If you just follow the instructions above, you will build the apk
          111 in debug mode. The most notable difference is that the apk will be
          112 signed using a debug keystore. If you are planning to upload
          113 what you build to e.g. the Play Store, you should create your own
          114 keystore, back it up safely, and run `./contrib/make_apk release`.
          115 
          116 See e.g. [kivy wiki](https://github.com/kivy/kivy/wiki/Creating-a-Release-APK)
          117 and [android dev docs](https://developer.android.com/studio/build/building-cmdline#sign_cmdline).
          118 
          119 ### Access datadir on Android from desktop (e.g. to copy wallet file)
          120 Note that this only works for debug builds! Otherwise the security model
          121 of Android does not let you access the internal storage of an app without root.
          122 (See [this](https://stackoverflow.com/q/9017073))
          123 ```
          124 $ adb shell
          125 $ run-as org.electrum.electrum ls /data/data/org.electrum.electrum/files/data
          126 $ run-as org.electrum.electrum cp /data/data/org.electrum.electrum/files/data/wallets/my_wallet /sdcard/some_path/my_wallet
          127 ```