Skip to content

Latest commit

 

History

History
49 lines (39 loc) · 2.88 KB

README.md

File metadata and controls

49 lines (39 loc) · 2.88 KB

SCR Screen Recorder

The most popular screen recording app for Android version prior to Lollipop. Requires root.

This app evolved from the quick-and-dirty prototype and was never properly rewritten/redesigned. You won't find sophisticated architecture or beautiful code here. You may find some interesting hacks and workarounds for Android limitations tho.

This app is no longer maintained.

Since this app got removed from Google Play (for manipulating SELinux settings) I'm not able to support it. Lollipop introduced a MediaProjection API that is used by a growing number of screen recorders that don't require root.

First full build takes DAYS!

SCR Screen Recorder heavily depends on Android private APIs and is rather complex to build. Building whole app from source requires almost 1TB of disk space and takes couple DAYS for the initial build. See my blog post for more details. If you wish to only modify the Java code you can download prebuilt native binaries from here.

Code structure

SCR source code is divided into 3 repositories

Build variants

This project has two [build variants] configured in Gradle file.

  • root - the original SCR app with internal audio recording and support for ICS+. Uses private Android APIs and requires root.
  • nonRoot - (SCR 5+) the version of the app targeting Lollipop and higher. It has a limited functionality but it uses only official APIs and doesn't require root.

Building native code

Native SCR code uses private Android APIs which are not part of SDK/NDK. To build it you need to build whole AOSP tree first.

Separate binary needs to be built for each Android version and placed under ScreenRecorder/src/root/res/raw-vX resource folder where X is na Android version code. The last released version of the app supported platforms Ice Cream Sandwich to Lollipop and required building 8 AOSP source treas for two architectures (arm and x86). See my blog post for further details regarding using private Android APIs.