mirror of
https://github.com/ChristianLight/tutor.git
synced 2025-01-05 15:12:10 +00:00
🤖 1-click android app building
TODO: README
This commit is contained in:
parent
f5a407cae7
commit
71912293a1
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
.*.swp
|
||||
config/openedx/*.json
|
||||
config/nginx/*.conf
|
||||
config/android/*.yaml
|
||||
mysql/config/database
|
||||
mysql/config/username
|
||||
mysql/config/password
|
||||
|
19
Makefile
19
Makefile
@ -1,4 +1,4 @@
|
||||
.PHONY: all configure build update migrate assets up daemon
|
||||
.PHONY: all android configure build update migrate assets up daemon
|
||||
|
||||
USERID ?= $$(id -u)
|
||||
EDX_PLATFORM_SETTINGS ?= universal.production
|
||||
@ -67,6 +67,23 @@ cms-shell:
|
||||
$(DOCKER_COMPOSE_RUN_OPENEDX) cms ./manage.py cms shell
|
||||
|
||||
|
||||
#################### Android app
|
||||
|
||||
android:
|
||||
docker-compose -f docker-compose-android.yml run --rm android
|
||||
@echo "Your APK file is ready: ./data/android/edx-prod-debuggable-2.14.0.apk"
|
||||
|
||||
android-release:
|
||||
# Note that this requires that you edit ./config/android/gradle.properties
|
||||
docker-compose -f docker-compose-android.yml run --rm android ./gradlew assembleProdRelease
|
||||
|
||||
android-build:
|
||||
docker build -t regis/openedx-android:latest android/
|
||||
android-push:
|
||||
docker push regis/openedx-android:latest
|
||||
android-dockerhub: android-build android-push
|
||||
|
||||
|
||||
#################### Deploying to docker hub
|
||||
|
||||
build:
|
||||
|
13
README.md
13
README.md
@ -115,6 +115,19 @@ Open a python shell in the lms or the cms:
|
||||
make cms-shell
|
||||
|
||||
|
||||
## Android app (beta)
|
||||
|
||||
The Android app for your platform can be easily built in just one command:
|
||||
|
||||
make android
|
||||
|
||||
If all goes well, the debuggable APK for your platform should then be available in ./data/android. To obtain a release APK, you will need to obtain credentials from the app store and add them to `config/android/gradle.properties`. The, run:
|
||||
|
||||
make android-release
|
||||
|
||||
Building the Android app for an Open edX platform is currently labeled as a **beta feature** because it was not fully tested yet. In particular, there is no easy mechanism for overriding the edX assets in the mobile app. This is still a work-in-progress.
|
||||
|
||||
|
||||
## For developers
|
||||
|
||||
In addition to running Open edX in production, you can use the docker containers for local development. This means you can hack on Open edX without setting up a Virtual Machine. Essentially, this replaces the devstack provided by edX.
|
||||
|
33
android/Dockerfile
Normal file
33
android/Dockerfile
Normal file
@ -0,0 +1,33 @@
|
||||
FROM ubuntu:16.04
|
||||
|
||||
RUN apt update && \
|
||||
apt upgrade -y && \
|
||||
apt install -y wget unzip git default-jre default-jdk
|
||||
|
||||
RUN mkdir /openedx
|
||||
|
||||
# Install Android SDK
|
||||
# Inspired from https://github.com/LiveXP/docker-android-sdk/blob/master/Dockerfile
|
||||
ENV ANDROID_SDK_VERSION 3859397
|
||||
ENV ANDROID_SDK_PATH /openedx/android-sdk
|
||||
ENV ANDROID_HOME /openedx/android-sdk
|
||||
RUN mkdir /openedx/android-sdk
|
||||
WORKDIR /openedx/android-sdk
|
||||
RUN wget https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip && \
|
||||
unzip sdk-tools-linux-${ANDROID_SDK_VERSION}.zip && \
|
||||
rm sdk-tools-linux-${ANDROID_SDK_VERSION}.zip
|
||||
|
||||
# Install android app repo
|
||||
RUN git clone https://github.com/edx/edx-app-android /openedx/edx-app-android
|
||||
WORKDIR /openedx/edx-app-android
|
||||
|
||||
# User-customized config
|
||||
COPY ./edx.properties ./OpenEdXMobile/edx.properties
|
||||
RUN mkdir /openedx/config
|
||||
RUN ln -s /openedx/config/gradle.properties ./OpenEdXMobile/gradle.properties
|
||||
|
||||
# Accept licenses
|
||||
RUN yes | /openedx/android-sdk/tools/bin/sdkmanager --licenses
|
||||
|
||||
CMD ./gradlew assembleProdDebuggable && \
|
||||
cp OpenEdXMobile/build/outputs/apk/*.apk /openedx/data/
|
1
android/edx.properties
Normal file
1
android/edx.properties
Normal file
@ -0,0 +1 @@
|
||||
edx.dir = '/openedx/config'
|
3
config/android/edx.properties
Normal file
3
config/android/edx.properties
Normal file
@ -0,0 +1,3 @@
|
||||
edx.android {
|
||||
configFiles = ['universal.yaml']
|
||||
}
|
5
config/android/gradle.properties
Normal file
5
config/android/gradle.properties
Normal file
@ -0,0 +1,5 @@
|
||||
APPLICATION_ID=com.example.yourapp
|
||||
RELEASE_STORE_FILE=/openedx/config/your.keystore
|
||||
RELEASE_STORE_PASSWORD=your store password here
|
||||
RELEASE_KEY_PASSWORD=your key password here
|
||||
RELEASE_KEY_ALIAS=your key alias here
|
5
config/android/templates/universal.yaml.templ
Normal file
5
config/android/templates/universal.yaml.templ
Normal file
@ -0,0 +1,5 @@
|
||||
API_HOST_URL: 'http://${LMS_HOST}'
|
||||
ENVIRONMENT_DISPLAY_NAME: 'universal'
|
||||
PLATFORM_NAME: '${PLATFORM_NAME}'
|
||||
PLATFORM_DESTINATION_NAME: '${LMS_HOST}'
|
||||
FEEDBACK_EMAIL_ADDRESS: 'support@${LMS_HOST}'
|
7
configure
vendored
7
configure
vendored
@ -189,6 +189,13 @@ def main():
|
||||
delimiter='£', **configurator.as_dict()
|
||||
)
|
||||
|
||||
# Android
|
||||
substitute(
|
||||
os.path.join('config', 'android', 'templates', 'universal.yaml.templ'),
|
||||
os.path.join('config', 'android', 'universal.yaml'),
|
||||
**configurator.as_dict()
|
||||
)
|
||||
|
||||
print("\nConfiguration files were successfuly generated. You may now run the app containers.")
|
||||
|
||||
|
||||
|
1
data/.gitignore
vendored
1
data/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
android/
|
||||
cms/
|
||||
cms_worker/
|
||||
lms/
|
||||
|
10
docker-compose-android.yml
Normal file
10
docker-compose-android.yml
Normal file
@ -0,0 +1,10 @@
|
||||
version: "3"
|
||||
services:
|
||||
|
||||
android:
|
||||
image: regis/openedx-android:latest
|
||||
build:
|
||||
context: ./android
|
||||
volumes:
|
||||
- ./config/android/:/openedx/config/
|
||||
- ./data/android/:/openedx/data
|
Loading…
Reference in New Issue
Block a user