Skip to content

Commit

Permalink
Feature/add crashlytics (#14)
Browse files Browse the repository at this point in the history
Add Crashlytics and Logging

- Add Crashlytics to better track crashes only for PlayStore build flavor
- Add Timber to handle logging and include them in crash reports
- Update Oboe lib to v1.4.2
- Set min SDK to Android 6 (API 23)
- general project cleanup
  • Loading branch information
aschober authored Jun 13, 2020
1 parent a1f9268 commit bc634f1
Show file tree
Hide file tree
Showing 21 changed files with 281 additions and 200 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,8 @@ fabric.properties

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.gitignore.io/api/android,androidstudio
# End of https://www.gitignore.io/api/android,androidstudio


# Firebase API Keys
google-services.json
116 changes: 116 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@

# Vinyl Cast

**Listen to vinyl records wirelessly throughout your home.**
**Listen to vinyl records wirelessly throughout your home using an Android device.**

<br>

Vinyl Cast is an Android app used to wirelessly stream the audio of a vinyl record player (or any audio source for that matter) to Google Cast-enabled (Chromecast built-in) devices or groups.

The Vinyl Cast App makes use of Android's USB audio peripheral support, audio recorder, media codecs, Google Oboe libary, media APIs, and Cast API to stream the audio from a connected audio source to Cast-enabled devices.

#### Download: [Latest GitHub Release](https://github.com/aschober/vinyl-cast/releases/latest) or via [Google Play Store](https://play.google.com/store/apps/details?id=tech.schober.vinylcast.playstore)
#### Download: [Latest GitHub Release](https://github.com/aschober/vinyl-cast/releases/latest) or [Google Play Store](https://play.google.com/store/apps/details?id=tech.schober.vinylcast.playstore)

#### Demo: [YouTube](https://youtu.be/HBDkxEvCcHQ)

#### Website: [Vinyl Cast](https://vinylcast.schober.tech)

Note: The initial release of Vinyl Cast included using Audio ACR to detect the song being played, but unfortunately this feature relied on a now discontinued third-party library/service so the feature was removed. Other options are being explored to add this feature back to Vinyl Cast in the future.

#### Simple UI: Tap the record or play button to start streaming
Expand Down
46 changes: 42 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,42 @@ buildscript {
jcenter()
mavenCentral()
}
dependencies {
classpath 'org.ajoberstar.grgit:grgit-gradle:4.0.2'
}
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'

// remove GoogleServices / Firebase for 'github' variants
android.applicationVariants.all { variant ->
if (variant.name.contains('github')) {
project.tasks.getByName('process' + variant.name.capitalize() + 'GoogleServices').enabled = false
}
}

// use grgit to determine versionCode and versionName
ext {
git = org.ajoberstar.grgit.Grgit.open()
gitVersionCode = git.tag.list().size()
gitVersionName = "${git.describe(tags: true)}"
}

task printVersion() {
println("Version Name: $gitVersionName")
println("Version Code: $gitVersionCode")
}

android {
compileSdkVersion 29
defaultConfig {
applicationId 'tech.schober.vinylcast'
minSdkVersion 25
minSdkVersion 23
targetSdkVersion 29
versionCode 2
versionName "1.1.0"
versionCode gitVersionCode
versionName gitVersionName
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
Expand All @@ -27,10 +52,14 @@ android {
buildTypes {
debug {
applicationIdSuffix ".debug"
// INSTABUG_TOKEN_BETA should be defined in gradle.properties
buildConfigField("String", "INSTABUG_TOKEN", INSTABUG_TOKEN_BETA)
debuggable true
}
release {
minifyEnabled true
// INSTABUG_TOKEN_LIVE should be defined in gradle.properties
buildConfigField("String", "INSTABUG_TOKEN", INSTABUG_TOKEN_LIVE)
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Expand All @@ -46,6 +75,13 @@ android {
applicationId 'tech.schober.vinylcast.playstore'
versionNameSuffix "-playstore"
dynamicFeatures = [":audio_acr"]
firebaseCrashlytics {
// Enable processing and uploading of native symbols to Crashlytics
// servers. By default, this is disabled to improve build speeds.
// This flag must be enabled to see properly-symbolicated native
// stack traces in the Crashlytics dashboard.
nativeSymbolUploadEnabled true
}
}
}
externalNativeBuild {
Expand All @@ -69,6 +105,8 @@ dependencies {
implementation 'androidx.preference:preference:1.1.1'
implementation 'androidx.mediarouter:mediarouter:1.1.0'
implementation 'com.google.android.gms:play-services-cast-framework:18.1.0'
// Logging
implementation 'com.jakewharton.timber:timber:4.7.1'
// HTTP Server
implementation 'org.nanohttpd:nanohttpd:2.3.1'
// Apache Commons IO for additional InputStream methods
Expand All @@ -78,8 +116,8 @@ dependencies {
* product flavor: playstore
*/
playstoreApi 'com.google.android.play:core:1.7.2'
playstoreImplementation 'com.google.firebase:firebase-crashlytics-ndk:17.0.0'
playstoreImplementation 'com.instabug.library:instabug:9.1.4'

/*
* Test
*/
Expand Down
Loading

0 comments on commit bc634f1

Please sign in to comment.