Skip to content

Commit

Permalink
Initial public release
Browse files Browse the repository at this point in the history
  • Loading branch information
Chainfire committed Dec 22, 2020
0 parents commit a2b75ba
Show file tree
Hide file tree
Showing 70 changed files with 11,435 additions and 0 deletions.
38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Windows thumbnail db
Thumbs.db

# OSX files
.DS_Store

# Android Studio
*.iml
.idea
.gradle
build/
.navigation
captures/
output.json

#NDK
obj/
.externalNativeBuild

# ProGuard
proguard/
674 changes: 674 additions & 0 deletions COPYING

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Copyright (C) 2011-2020 Jorrit "Chainfire" Jongma

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
61 changes: 61 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
This is the sauce for the [LiveBoot](https://play.google.com/store/apps/details?id=eu.chainfire.liveboot) app.

## License

Copyright &copy; 2011-2020 Jorrit *Chainfire* Jongma

This code is released under the GPLv3. [LICENSE](./LICENSE), [COPYING](./COPYING).

## Spaghetti Sauce Project

This library is part of the [Spaghetti Sauce Project](https://github.com/Chainfire/spaghetti_sauce_project).

## About

*LiveBoot* is an app for rooted devices that shows the logcat and
dmesg output on-screen during boot. It has been around since
2014, (then) supporting Android 4.x (or 2011 and Android 2.x if you
include its predecessors).

### Opening the source

It does some neat tricks, others could learn from it. It's not really
in active development anymore (and hasn't been for years), but now and
then people nag me to fix it when it breaks, and sometimes I do. Now
*you* can fix it too! A little joy as 2020 finally ends!

### Open source but in-app puchases?

Yes, please still buy it. Or press the *Freeload* button that has been
in most of my apps for many years that gives you all the features for
free. Or recompile it yourself so it does that.

### Download

You can grab actual releases from [Google Play](https://play.google.com/store/apps/details?id=eu.chainfire.liveboot)
or in the [XDA thread](https://forum.xda-developers.com/t/LiveBoot.2976189/).

### Feedback

It puts it in the [XDA thread](https://forum.xda-developers.com/t/LiveBoot.2976189/).

### Disclaimer

This hasn't been in active development for a while, and contains code
that has been copy/pasted and passed around throughout my projects
for many years. It wouldn't surprise me if there's code in here
somewhere that was already smelly back in 2011. This is not a
shining example of how to build apps in 2020.

I did not go through the code to clean it up before dumping it here.
Comments could be outdated or just plain wrong.

If it breaks, you get to keep all the pieces.

### Dependencies

Primarily depends on [libRootJava](https://github.com/Chainfire/librootjava)
and [libCFSurface](https://github.com/Chainfire/libcfsurface).

### Enjoy!
Or not.
18 changes: 18 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
}
}

allprojects {
repositories {
google()
jcenter()
mavenLocal()
}
}
82 changes: 82 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
2014-12-18 - v1.05
- Fixed number of lines being interpreted as hexadecimal
- Fixed various load and display issues on 4.3 and 4.4

2014-12-20 - v1.10
- Possible fix for only showing for two seconds during boot on some devices
- Fixed some typos
- Made logcat buffers configurable (pro)
- Made logcat format configurable (pro)
- Made word wrap configurable
- Added option to darken the background
- Added option to save logs
- Added reboot option

- Added capability to use init.d if not using SuperSU, but this is not officially supported. It might make the app work on more firmwares, but it should be noted that init.d behavior differs between firmwares, and unlike su.d provided by SuperSU, no guarantees are made as to the state of the /data partition or SELinux policies when init.d scripts execute. Therefor it is impossible to officially support - it might work, it might not, and this will differ between firmwares.

2014-12-20 - v1.11
- Added option to disable logcat color coding
- Another possible fix for premature exit

2014-12-20 - v1.12
- ProGuard (reduce APK size)

2014-12-21 - v1.13
- Use alternative shell if default not available (fx HTC One m7, m8)
- Workaround b/7188322 hack (fx Shield Tablet)
- Fixed minor script issues

2015-01-03 - v1.14
- Force remove old boot scripts before placing new one
- Added another watchdog to prevent the animation from never quitting
- (C) 2015

- Note: some devices need SuperSU v2.42 or newer to work

2015-10-30 - v1.20
- Android 6.0 support

2016-05-19 - v1.30
- Android N Preview 3 support

2016-10-30 - v1.40
- Android N 7.1 file-based-encryption support

2016-12-20 - v1.50
- S7@Nougat: stop animation when Android is up
- (C) 2017

2017-09-11 - v1.60
- Add compatibility with Android Oreo
- Add compatibility with SuperSU in SBIN mode
- Fix toolbox/toybox detection on 64-bit, could cause animation to keep running

2018-11-16 - v1.70
- Android 9.0 Pie support
- Improved 64-bit support
- Fix files dir not existing automagically
- Migrated libcfsurface from C hijacks to Java reflection as much as possible (4.2 --> 5.0 minimum support)
- Magisk support
- Adaptive icon
- Updated compile and target API levels
- (C) 2018

2019-01-06 - v1.80
- Magisk: support /data/adb paths
- Magisk: delay startup if /data not available
- Fix script uninstall not working
- Use librootjava's Daemon mode

2019-03-13 - v1.81
- (c) 2019
- Fix script reinstalling every launch
- Fix display not working on some Pie ROMs
- Fix test run not working on some devices

2019-12-31 - v1.83
- Android 10

2020-12-21 - v1.84
- Android 11
- Removed links to Google Plus
- (c) 2020
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
android.enableJetifier=true
android.useAndroidX=true
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
6 changes: 6 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Mon Dec 21 16:40:30 CET 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
164 changes: 164 additions & 0 deletions gradlew
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
#!/usr/bin/env bash

##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn ( ) {
echo "$*"
}

die ( ) {
echo
echo "$*"
echo
exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac

# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`

# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option

if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi

# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
Loading

0 comments on commit a2b75ba

Please sign in to comment.