• Stars
    star
    286
  • Rank 143,808 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Open edX mobile app for Android!

edX Android

Get it on Google Play

This is the source code for the edX mobile Android app. It is changing rapidly and its structure should not be relied upon. See http://code.edx.org for other parts of the edX code base.

It has been tested with the "Koa" release of open edX and may not function correctly with previous versions. See https://openedx.atlassian.net/wiki/display/COMM/Open+edX+Releases for more information.

License

This software is licensed under version 2 of the Apache License unless otherwise noted. Please see LICENSE.txt for details.

Building

This project is meant to be built using Android Studio. It can also be built from the gradle command line.

  1. Check out the source code:

     git clone https://github.com/openedx/edx-app-android
    
  2. Setup the Android Studio. The latest tested Android Studio version is v3.3.2, you can download it from the previous versions archive. (You can find further details to run the project on the said version of Android Studio on this PR.

  3. Open Android Studio and choose Open an Existing Android Studio Project

  4. Choose edx-app-android.

  5. Click the Run button.

Configuration

The edX mobile Android app is designed to connect to an Open edX instance. You must configure the app with the correct server address and supply appropriate OAuth credentials. We use a configuration file mechanism similar to that of the Open edX platform. This mechanism is also used to make other values available to the app at runtime and store secret keys for third party services.

There is a default configuration that points to an edX devstack instance running on localhost. See the default_config directory. For the default configuration to work, you must add OAuth credentials specific to your installation.

Setup

To use a custom configuration in place of the default configuration, you will need to complete these tasks:

  1. Create your own configuration directory somewhere else on the file system. For example, create my_config as a sibling of the edx-app-android repository.

  2. Create an edx.properties file inside the OpenEdXMobile directory of edx-app-android. In this edx.properties file, set the edx.dir property to the path to your configuration directory relative to the OpenEdXMobile directory. For example, if I stored my configuration side by side with the edx-app-android repository at my_config then I'd have the following edx.properties:

     edx.dir = '../../my_config'
    
  3. In the configuration directory that you added in step 1, create another edx.properties file. This properties file contains a list of filenames. The files should be in YAML format and are for storing specific keys. These files are specified relative to the configuration directory. Keys in files earlier in the list will be overridden by keys from files later in the list. For example, if I had two files, one shared between ios and android called shared.yaml and one with Android specific keys called android.yaml, I would have the following edx.properties:

    edx.android {
        configFiles = ['shared.yaml', 'android.yaml']
    }
    

The full set of known keys can be found in the org/edx/mobile/util/Config.java file or see additional documentation.

Build Variants

There are 3 Build Variants in this project:

  • prodDebug: Uses prod flavor for debug builds.
  • prodDebuggable: Uses prod flavor for debug builds with debugging enabled.
  • prodRelease: Uses prod flavor for release builds that'll work on devices with Android 4.4.x (KitKat) and above.

Building For Release

To build an APK for release, you have to specify an application ID and signing key.

Specifying your own Application ID

Application ID is the package identifier for your app.
Edit the constants.gradle file inside the edx-app-android directory. For example:

APPLICATION_ID=com.example.yourapp

Specifying the Signing Key

Place your keystore file inside the OpenEdXMobile/signing directory of edx-app-android & then create a keystore.properties file inside the same directory with the following configurations:

RELEASE_STORE_FILE=signing/your_keystore_file.keystore
RELEASE_STORE_PASSWORD=your store password here
RELEASE_KEY_PASSWORD=your key password here
RELEASE_KEY_ALIAS=your key alias here

Now you can build a release build from Android Studio. Or, in the directory of edx-app-android you can build a release build with this gradle command:

./gradlew assembleProdRelease

Note: For release branch naming convention take a look at this PR #774 that creates the versionCode automatically based on branch name. The output APK will be named with the version.

Customization

Resources

To customize images, colors, and layouts, you can specify a custom resource directory. Create or edit the gradle.properties file inside the OpenEdXMobile directory of edx-app-android. For example:

RES_DIR = ../../path/to/your/res

Any resources placed here will override resources of the same name in the OpenEdXMobile/res directory.

To remove all edX branding, override the drawables for: edx_logo, edx_logo_login, ic_launcher, ic_new_cert, and profile_photo_placeholder. These come in a number of resolutions, be sure to replace them all.

If you need to make more in depth UI changes, most of the user interface is specified in standard Android XML files, which you can also override by placing new versions in your RES_DIR.

Assets

To customize assets such as the End User License Agreement (EULA) you can specify a custom assets directory. Create or edit the gradle.properties file inside the OpenEdXMobile directory of edx-app-android. For example:

ASSETS = ../../path/to/your/assets

Any assets placed here will override resources of the same name in the OpenEdXMobile/assets directory.

Third Party Services

The app relies on the presence of several third party services: Facebook, Google+, SegmentIO, and Crashlytics. You may need to remove services you choose not to use. You can comment out the lines of code that mention these services.

We're working on making it easier for Open edX installations to apply customizations and select third party services without modifying the repository itself.

Frequently Asked Questions

Q: I see an error that mentions "Unsupported major.minor version 51.0". How do I fix this?

A: Our build system requires Java 7 or later. If you see this error, install Java 7 or later.

 You will also need to specify the new JDK version in Android Studio. Refer to this Stack Overflow entry for help doing so:

 http://stackoverflow.com/questions/30631286/how-to-specify-the-jdk-version-in-android-studio

Q: After I upgraded to Android Studio v2.3, I've been facing alot of issues while compiling/building the project. How do I fix this?

A: We recently upgraded our project to support Android Studio v2.3.x and below. After the upgrade changes done in PR #938, we too faced some issues. The fixes for the common issues can be seen in the Issues section of this GitHub project. The most common and helpful issue with the fixes is Issue #976.

Q: I want to use Firebase in my project, where do I place my google-services.json file?

A: You don’t need to place the google-services.json into the project, we are generating it through gradle script (AndroidHelper.gradle) that picks keys and values required in the google-services.json file from the app's configuration file. For configuration details see

More Repositories

1

edx-platform

The Open edX LMS & Studio, powering education sites around the world!
Python
6,640
star
2

configuration

A collection of edx configuration scripts and utilities that edx.org uses to deploy openedx.
Jinja
817
star
3

XBlock

Framework for building custom learning components that run in the Open edX LMS!
Python
445
star
4

devstack

Get up and running quickly to develop or extend Open edX services
Shell
394
star
5

codejail

Secure code execution
Python
332
star
6

edx-app-ios

The Open edX mobile app for iOS!
Swift
225
star
7

edx-documentation

Makefile
156
star
8

ecommerce

Service for managing edX's product catalog and handling orders for those products
Python
135
star
9

paragon

πŸ’Ž An accessible, theme-ready design system built for learning applications and Open edX.
JavaScript
118
star
10

edx-analytics-pipeline

Python
90
star
11

edx-analytics-dashboard

Dashboard to display course analytics to course teams
Python
72
star
12

bok-choy

UI-level acceptance test framework
Python
67
star
13

xblock-sdk

Workbench and example xblocks
JavaScript
60
star
14

edx-ora2

Open Response Assessment Suite
Python
58
star
15

event-tracking

a system for tracking events
Python
55
star
16

course-discovery

Service providing access to consolidated course and program metadata
Python
53
star
17

edx-lint

Custom tooling for pylint and other repo management tools
Python
48
star
18

edx-proctoring

Python
45
star
19

frontend-app-learning

Front-end for the Open edX course experience, implemented using React and Paragon.
JavaScript
44
star
20

edx-tools

a collection of miscellaneous tools for use with the edX platform
Python
43
star
21

edx-enterprise

Python
41
star
22

cs_comments_service

server side of the comment service
Ruby
37
star
23

openedx-demo-course

A demonstration course that can be imported into an Open edX instance
JavaScript
36
star
24

open-edx-proposals

Proposals for Open edX architecture, best practices and processes
Python
35
star
25

xqueue

XQueue defines an interface for the LMS to communicate with external grader services.
Python
35
star
26

frontend-template-application

A template repository for creating Open edX frontend applications. πŸ’Ώβž‘οΈπŸ“€
JavaScript
34
star
27

studio-frontend

πŸ“ React front end for edX Studio
JavaScript
33
star
28

edx-bootstrap

Bootstrap theme for Open edX
JavaScript
33
star
29

frontend-platform

A framework for Open edX micro-frontend applications.
JavaScript
31
star
30

license-manager

Django backend for managing licenses and subscriptions
Python
30
star
31

edx-analytics-data-api

Python
29
star
32

repo-tools

Tools for repo maintenance, etc.
Python
28
star
33

django-user-tasks

A Django application for managing user-triggered asynchronous tasks.
Python
27
star
34

edx-cookiecutters

Open edx public templates for apps, libraries and services.
Python
26
star
35

i18n-tools

Tools to help with internationalization and localization of Open edX projects
Python
25
star
36

edx-django-utils

edX utilities for Django Application development.
Python
25
star
37

xblock-lti-consumer

Python
24
star
38

wg-build-test-release

Open edX Build / Test / Release Working Group
24
star
39

auth-backends

Custom authentication backends and views for edX services
Python
22
star
40

frontend-app-admin-portal

edx-portal is a frontend that provides branded learning experiences.
JavaScript
20
star
41

django-config-models

Configuration models for Django allowing config management with auditing.
Python
20
star
42

xblock-utils

Python
20
star
43

openedx-app-ios

The mobile app for iOS for the Open EdX Platform.
Swift
19
star
44

enterprise-catalog

A Django-based microservice for handling Enterprise catalogs, associating enterprise customers with curated courses from the full course catalog.
Python
18
star
45

credentials

Service hosting course and program certificates
Python
18
star
46

xblock-drag-and-drop-v2

JavaScript
17
star
47

frontend-build

Common build scripts and tooling for Open edX micro-frontends.
JavaScript
17
star
48

frontend-app-account

Open edX micro-frontend application for managing user account information.
JavaScript
17
star
49

edx-rest-api-client

Facilitates interaction with edX REST APIs
Python
17
star
50

xqueue-watcher

Python
16
star
51

edx-ui-toolkit

A JavaScript toolkit for building edX user interfaces.
JavaScript
16
star
52

frontend-app-publisher

Publisher frontend to manage course creation and marketing content curation.
JavaScript
15
star
53

cypress-e2e-tests

Cypress E2E Tests for Open edX applications
JavaScript
15
star
54

openedx-app-android

The mobile app for Android for the Open EdX Platform.
Kotlin
15
star
55

edx-notes-api

edx-notes-api
Python
13
star
56

edx-analytics-data-api-client

Python
13
star
57

edx-drf-extensions

edX extensions for Django REST Framework
Python
12
star
58

registrar

A service to facilitate learner-program enrollments.
Python
12
star
59

frontend-app-learner-portal-enterprise

Enterprise Learner Portal
JavaScript
12
star
60

sample-themes

HTML
12
star
61

frontend-app-course-authoring

The micro-frontend for course authoring in Open edX. Frontend interfaces that currently live in Studio/CMS should eventually live here.
JavaScript
12
star
62

frontend-lib-content-components

A library of high-level components for content handling (viewing, editing, etc. of HTML, video, problems, etc.), to be shared by multiple MFEs.
JavaScript
11
star
63

openedx-events

Open edX events from the Hooks Extensions Framework
Python
11
star
64

frontend-app-profile

Open edX micro-frontend application for managing user profile information.
JavaScript
11
star
65

xblock-google-drive

Python
11
star
66

platform-roadmap

Tracking the maintenance, enhancement, and advancement of the Open edX project.
11
star
67

mdrst

Markdown-to-RST Cheatsheet Maker
Python
11
star
68

edx-enterprise-data

The edX Enterprise Data repo is the home to tools and products related to providing access to Enterprise related data.
Python
11
star
69

edx-ace

edX's Automated Communication Engine
Python
11
star
70

edx-search

Python
11
star
71

frontend-app-gradebook

Instructor grade book tool
JavaScript
10
star
72

openedx-wordpress-ecommerce

You can sell your Open edX courses with WooCommerce using this free and open-source WordPress plugin.
PHP
10
star
73

openedx-k8s-harmony

A Prototype Helm Chart for deploying multiple Open edX instances (via Tutor) onto a cluster.
HCL
10
star
74

tutor-contrib-aspects

The Open Analytics Reference System - Tutor plugin
Python
10
star
75

frontend-app-payment

JavaScript
9
star
76

event-routing-backends

Consume edx tracking events and transform/transmit them to other LRSs.
Python
9
star
77

tubular

A repo for edx pipeline related scripts.
Python
9
star
78

edx-val

Python
9
star
79

edx-submissions

API for creating submissions and scores
Python
9
star
80

openedx-webhooks

Webhooks for the Open edX GitHub and JIRA
Python
9
star
81

edx-organizations

Python
8
star
82

completion

A library for tracking completion of blocks by learners in edX courses.
Python
8
star
83

edx-rbac

Library to help managing role based access controls for django apps
Python
8
star
84

web-fragments

Provides the ability to render fragments of web pages
Python
8
star
85

edx-analytics-configuration

Python
7
star
86

opaque-keys

Python
7
star
87

frontend-component-header

JavaScript
7
star
88

xblock-image-explorer

Python
7
star
89

frontend-app-ecommerce

Open edX micro-frontend application for managing e-commerce information.
JavaScript
7
star
90

frontend-app-authn

Open edX micro-frontend application for new login and registration experience.
JavaScript
7
star
91

cc2olx

A library to convert Common Cartridge Courses to OLX.
Python
7
star
92

openedx-filters

Open edX filters from the Hooks Extensions Framework
Python
7
star
93

edx-repo-health

Python
6
star
94

frontend-enterprise

Frontend utilities for enterprise features.
JavaScript
6
star
95

ecommerce-worker

Python
6
star
96

api-doc-tools

Tools for writing and generating API documentation for edX REST APIs
Python
6
star
97

frontend-app-discussions

A React-based micro frontend for the Open edX discussion forums.
JavaScript
6
star
98

frontend-component-footer

Site footer component for edX frontend apps.
JavaScript
6
star
99

frontend-app-learner-portal-programs

The learner portal allows a customized experience of learner-facing micro-frontend page components.
JavaScript
6
star
100

edx-app-test

Automated testing for edX Android and iOS mobile applications.
Python
6
star