scripts/lbry-android.sh is a bash script to create a docker container for lbry-android development.
This is a hybrid approach where the apk is built inside docker, but you run
Android Studio, adb
, and the app hot-reload bundler, directly on your host.
- Clones lbry-android source code to a directory on the host, and mounts it inside the container.
- Installs all build dependencies inside the container, leaving your host computer clean.
- Mounted
.buildozer
directory to save container space. (Docker containers should stay under 10GB, and.buildozer
is too big, so it has to stay in a mounted host directory instead.) - The biggest downloads are cached in
.buildozer-downloads
directory so you can easily remove.buildozer
and not have to re-download the large cryostax NDK more than once. - Instructions for installing on a real Android device, and for setting up hot-reload.
- Only a handful of commands to go from zero->hero.
Install all of the following on your host computer:
- Tested on Linux x86_64 with BASH.
- Install Android Studio.
- The normal install auto-creates a directory in
$HOME/Android/Sdk
to store SDK downloads in your home directory.
- The normal install auto-creates a directory in
- Install nodejs.
- Install yarn.
- Install Docker.
- Install
sudo
and give your user account access to runsudo docker
.
Clone lbry-android
:
LBRY_GIT=$HOME/git/vendor/lbryio/
mkdir -p $LBRY_GIT
git clone https://github.com/lbryio/lbry-android.git $LBRY_GIT/lbry-android
cd $LBRY_GIT/lbry-android
git submodule update --init --recursive
Install a bash alias to the scripts/lbry-android.sh script:
echo "alias lbry-android=$LBRY_GIT/lbry-android/scripts/lbry-android.sh" >> $HOME/.bashrc
source ~/.bashrc
- First create the base docker image:
lbry-android docker-build
(If anytime you change the docker build scripts in the scripts subdirectory, you should rebuild the image again.)
- Setup buildozer and install dependencies:
lbry-android setup
- Build the apk:
lbry-android build
The apk will be built and end up in the lbry-android/bin/
subdirectory.
Once you have the apk built, you can install it on a real Android device to start testing.
Follow the Android documentation for enabling USB debugging on your device.
Once you have enabled debugging, do the following:
- Plug your device into a USB port on the host computer.
- Run:
~/Android/Sdk/platform-tools/adb devices
- ADB should list your device like so:
[ryan@t440s lbry-android]$ adb devices
List of devices attached
HT71R0000000 device
-
The first time you connect, you should see a modal dialog on the device asking to confirm the host id. You must approve it, or adb will fail to connect.
-
If after trying several times, adb is still not connecting to your device, and adb lists your device as
unauthorized
, you may need to follow this advice and delete your$HOME/.android
directory. -
Install the apk (whatever the current version is called) to the device:
~/Android/Sdk/platform-tools/adb install ./bin/browser-0.7.5-debug.apk
-
Open the app on your device, and follow the initial steps to get to the main lbry-android browser page.
-
Create a tcp tunnel over the adb bridge, for the app to handle live-reload:
~/Android/Sdk/platform-tools/adb reverse tcp:8081 tcp:8081
- Start the live-reload server on the host:
cd app/
yarn install
yarn start
-
With your device currently running the lbry-android app, shake the device from side to side, and a menu will appear. Choose
Enable Hot Reloading
. -
The app should reload itself.
-
Now make a change to the source code to test hot reload. From the host, open up the main page view source code:
app/src/component/uriBar/view.js
. Find the line that readsSearch movies, music, and more
(This is the main search bar at the top of the app.) - Change some of the text and save the file. -
If hot-reload is working, within a few seconds the phone should reload the page automatically and show the change that you made.
-
If the hot-reload does not work, try closing the app (dismiss the window from the tab overview, via android square button) and reload the app.