├── GhostLog
├── settings.gradle
├── app
│ ├── .gitignore
│ ├── web_hi_res_512.png
│ ├── src
│ │ └── main
│ │ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_add.png
│ │ │ │ ├── ic_stat_ghost.png
│ │ │ │ ├── ic_action_clear.png
│ │ │ │ ├── ic_action_delete.png
│ │ │ │ ├── ic_action_pause.png
│ │ │ │ ├── ic_action_play.png
│ │ │ │ └── ic_action_share.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_add.png
│ │ │ │ ├── ic_stat_ghost.png
│ │ │ │ ├── ic_action_clear.png
│ │ │ │ ├── ic_action_delete.png
│ │ │ │ ├── ic_action_pause.png
│ │ │ │ ├── ic_action_play.png
│ │ │ │ └── ic_action_share.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_add.png
│ │ │ │ ├── ic_action_clear.png
│ │ │ │ ├── ic_action_pause.png
│ │ │ │ ├── ic_action_play.png
│ │ │ │ ├── ic_action_share.png
│ │ │ │ ├── ic_stat_ghost.png
│ │ │ │ └── ic_action_delete.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_add.png
│ │ │ │ ├── ic_action_play.png
│ │ │ │ ├── ic_stat_ghost.png
│ │ │ │ ├── ic_action_clear.png
│ │ │ │ ├── ic_action_delete.png
│ │ │ │ ├── ic_action_pause.png
│ │ │ │ └── ic_action_share.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── attrs.xml
│ │ │ │ ├── styles.xml
│ │ │ │ ├── strings_prefs.xml
│ │ │ │ └── strings.xml
│ │ │ ├── xml
│ │ │ │ ├── pref_blank.xml
│ │ │ │ ├── pref_info.xml
│ │ │ │ ├── pref_headers.xml
│ │ │ │ ├── pref_filters.xml
│ │ │ │ └── pref_appearance.xml
│ │ │ ├── menu
│ │ │ │ ├── activity_tag_filter_list.xml
│ │ │ │ └── activity_tag_filter_list_selection.xml
│ │ │ └── layout
│ │ │ │ ├── window_log.xml
│ │ │ │ ├── activity_tag_filter_list.xml
│ │ │ │ ├── list_item_log.xml
│ │ │ │ ├── alert_dialog_edittext.xml
│ │ │ │ ├── dialog_about.xml
│ │ │ │ └── preference_widget_seekbar.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ ├── readystatesoftware
│ │ │ │ └── ghostlog
│ │ │ │ │ ├── integration
│ │ │ │ │ └── Constants.java
│ │ │ │ │ ├── ShareActivity.java
│ │ │ │ │ ├── LogReceiver.java
│ │ │ │ │ ├── ProcessMonitorAsyncTask.java
│ │ │ │ │ ├── LogReaderAsyncTask.java
│ │ │ │ │ ├── BasePreferenceActivity.java
│ │ │ │ │ ├── LogLine.java
│ │ │ │ │ ├── LogAdapter.java
│ │ │ │ │ ├── TagFilterListActivity.java
│ │ │ │ │ ├── SeekBarPreference.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ └── LogService.java
│ │ │ │ └── nolanlawson
│ │ │ │ └── logcat
│ │ │ │ ├── helper
│ │ │ │ ├── RuntimeHelper.java
│ │ │ │ ├── LogcatHelper.java
│ │ │ │ └── SuperUserHelper.java
│ │ │ │ └── util
│ │ │ │ ├── UtilLogger.java
│ │ │ │ └── ArrayUtil.java
│ │ │ ├── assets
│ │ │ └── licenses.html
│ │ │ └── AndroidManifest.xml
│ ├── proguard-rules.txt
│ └── build.gradle
├── .gitignore
├── build.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew.bat
└── gradlew
├── Integration
├── sample
│ ├── .gitignore
│ ├── src
│ │ └── main
│ │ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ │ ├── styles.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ └── strings.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ └── layout
│ │ │ │ ├── activity_main.xml
│ │ │ │ └── fragment_main.xml
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── readystatesoftware
│ │ │ └── ghostlog
│ │ │ └── integration
│ │ │ └── sample
│ │ │ ├── MainActivity.java
│ │ │ └── Cheeses.java
│ ├── proguard-rules.txt
│ └── build.gradle
├── ghostlog-integration
│ ├── .gitignore
│ ├── gradle.properties
│ ├── proguard-rules.txt
│ ├── src
│ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── readystatesoftware
│ │ │ └── ghostlog
│ │ │ └── integration
│ │ │ ├── Constants.java
│ │ │ ├── IntegrationReceiver.java
│ │ │ └── IntegrationService.java
│ └── build.gradle
├── settings.gradle
├── .gitignore
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── build.gradle
├── gradle.properties
├── gradlew.bat
└── gradlew
├── screens.jpg
├── .gitignore
└── README.md
/GhostLog/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/Integration/sample/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/GhostLog/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | signing.properties
--------------------------------------------------------------------------------
/Integration/ghostlog-integration/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Integration/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':ghostlog-integration', ':sample'
2 |
--------------------------------------------------------------------------------
/screens.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/screens.jpg
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | local.properties
3 | .DS_Store
4 | .idea
5 | build
6 | *.iml
7 |
--------------------------------------------------------------------------------
/GhostLog/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/Integration/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/GhostLog/app/web_hi_res_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/web_hi_res_512.png
--------------------------------------------------------------------------------
/GhostLog/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
--------------------------------------------------------------------------------
/GhostLog/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Integration/ghostlog-integration/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=GhostLog Integration
2 | POM_ARTIFACT_ID=ghostlog-integration
3 | POM_PACKAGING=aar
--------------------------------------------------------------------------------
/Integration/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/Integration/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_add.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_stat_ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_stat_ghost.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_add.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_stat_ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_stat_ghost.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_clear.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_delete.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_play.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-hdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-hdpi/ic_action_share.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_clear.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_delete.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_play.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-mdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-mdpi/ic_action_share.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_add.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_clear.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_play.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_share.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_stat_ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_stat_ghost.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_add.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_play.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_stat_ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_stat_ghost.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xhdpi/ic_action_delete.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_clear.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_delete.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgilfelt/GhostLog/HEAD/GhostLog/app/src/main/res/drawable-xxhdpi/ic_action_share.png
--------------------------------------------------------------------------------
/GhostLog/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
Copyright (C) 2014 readyState Software Ltd. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 |17 |
Copyright (C) Nolan Lawson 19 | 20 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 21 | Version 2, December 2004 22 | 23 | Everyone is permitted to copy and distribute verbatim or modified 24 | copies of this license document, and changing it is allowed as long 25 | as the name is changed. 26 | 27 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS 28 | FOR COPYING, DISTRIBUTION AND MODIFICATION 29 | 30 | 0. You just DO WHAT THE FUCK YOU WANT TO. 31 |32 |
Copyright (C) 2013 The Android Open Source Project 34 | 35 | Licensed under the Apache License, Version 2.0 (the "License"); 36 | you may not use this file except in compliance with the License. 37 | You may obtain a copy of the License at 38 | 39 | http://www.apache.org/licenses/LICENSE-2.0 40 | 41 | Unless required by applicable law or agreed to in writing, software 42 | distributed under the License is distributed on an "AS IS" BASIS, 43 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 44 | See the License for the specific language governing permissions and 45 | limitations under the License. 46 |47 | -------------------------------------------------------------------------------- /GhostLog/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 |
11 |
12 |
13 | **NOTE: Device root (superuser) access is required to read system logs on Android 4.1 and above.**
14 |
15 | Non-root users can still use Ghost Log with their own apps via intent integration - see below.
16 |
17 | Features:
18 |
19 | * Persistent logcat display as a system overlay
20 | * Customisable log filters and display options
21 | * Auto filter by the current foreground Activity process
22 | * Quick access to pause/play, clear & share functions via rich notification
23 | * Integration support for non-root devices
24 |
25 |
26 | Non-root Integration
27 | --------------------
28 |
29 | Developers can use Ghost Log to display log messages generated by their own apps on non-rooted devices via a broadcast intent interface. This is currently in an experimental phase.
30 |
31 | Integration will enable your app to receive messages from the Ghost Log app to start and stop a service inside your app which will monitor and broadcast all log output generated by your application processes back to Ghost Log for display.
32 |
33 | **NOTE: You should enable this integration for debug builds only to avoid exposing log output to third parties in production.**
34 |
35 | #### Gradle
36 |
37 | If you are using the Gradle build system, simply add the following dependency in your `build.gradle` file:
38 |
39 | ```groovy
40 | dependencies {
41 | debugCompile 'com.readystatesoftware.ghostlog:ghostlog-integration:+@aar'
42 | }
43 | ```
44 |
45 | Using `debugCompile` (recommended) ensures the integration library is never compiled into a release build.
46 |
47 | #### Ant/Eclipse
48 |
49 | If you are using the old build system, download and place the integration library [JAR][1] inside your project `libs` folder and add the following to your `AndroidManifest.xml` (inside the `
205 | * It is important to always call through to super methods.
206 | */
207 | private static class SavedState extends BaseSavedState {
208 | int progress;
209 | int max;
210 |
211 | public SavedState(Parcel source) {
212 | super(source);
213 |
214 | // Restore the click counter
215 | progress = source.readInt();
216 | max = source.readInt();
217 | }
218 |
219 | @Override
220 | public void writeToParcel(Parcel dest, int flags) {
221 | super.writeToParcel(dest, flags);
222 |
223 | // Save the click counter
224 | dest.writeInt(progress);
225 | dest.writeInt(max);
226 | }
227 |
228 | public SavedState(Parcelable superState) {
229 | super(superState);
230 | }
231 |
232 | @SuppressWarnings("unused")
233 | public static final Creator