Upgrade crashlytics from fabric to firebase

kmm
Laurent 5 years ago
parent 77aab66a81
commit 26cd33c2fc
  1. 6
      app/build.gradle
  2. 24
      app/google-services.json
  3. 22
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  4. 4
      app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 20
      app/src/main/java/net/pokeranalytics/android/model/utils/CrashLogging.kt
  7. 14
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/BaseActivity.kt
  8. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt
  9. 12
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt
  10. 6
      app/src/main/java/net/pokeranalytics/android/ui/graph/GraphExtensions.kt
  11. 4
      app/src/main/java/net/pokeranalytics/android/ui/modules/data/EditableDataFragment.kt
  12. 4
      app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt
  13. 10
      build.gradle

@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services' // Crashlytics
apply plugin: 'com.google.firebase.crashlytics'
repositories {
maven { url 'https://maven.fabric.io/public' }
@ -122,8 +122,8 @@ dependencies {
// Firebase
implementation 'com.google.firebase:firebase-core:17.5.0'
// Crashlytics
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
// Add the Firebase Crashlytics SDK.
implementation 'com.google.firebase:firebase-crashlytics:17.2.2'
// Logs
implementation 'com.jakewharton.timber:timber:4.7.1'

@ -14,6 +14,14 @@
}
},
"oauth_client": [
{
"client_id": "245968016816-hhn8q9hij1njadqg7ut7p1e6pmu0vi5k.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "net.pokeranalytics.android",
"certificate_hash": "25d12647d4391ed03572882b546482746d2b302e"
}
},
{
"client_id": "245968016816-tr2mo4kbe1acn8u3ebbd9nk29iuk8fqr.apps.googleusercontent.com",
"client_type": 1,
@ -29,24 +37,24 @@
],
"api_key": [
{
"current_key": "AIzaSyDERILd3hSujwzqHcS4CyQjiDI7J6WvNZ4"
"current_key": "AIzaSyCXQK-w_eeUMI9hYRXKmTr6SH7QNq0xnh8"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 2,
"other_platform_oauth_client": [
{
"client_id": "245968016816-756j040n0luup2nlfu9e49qm9jv0oih2.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "245968016816-8sklai9sq70m46anv550uttdic6cukn6.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "stax.SlashPoker.nosebleed"
}
}
]
},
"ads_service": {
"status": 2
}
}
}

@ -3,9 +3,7 @@ package net.pokeranalytics.android
import android.app.Application
import android.content.Context
import android.os.Build
import com.crashlytics.android.Crashlytics
import com.crashlytics.android.core.CrashlyticsCore
import io.fabric.sdk.android.Fabric
import com.google.firebase.crashlytics.FirebaseCrashlytics
import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.kotlin.where
@ -51,23 +49,9 @@ class PokerAnalyticsApplication : Application() {
.build()
Realm.setDefaultConfiguration(realmConfiguration)
// val realm = Realm.getDefaultInstance()
// realm.executeTransaction {
// realm.where(Session::class.java).findAll().deleteAllFromRealm()
// }
// realm.close()
// Set up Crashlytics, disabled for debug builds
val crashlyticsKit = Crashlytics.Builder()
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build()
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val locales = resources.configuration.locales
Crashlytics.log("App onCreate. Locales = $locales")
FirebaseCrashlytics.getInstance().log("App onCreate. Locales = $locales")
}
if (BuildConfig.DEBUG) {
@ -85,7 +69,7 @@ class PokerAnalyticsApplication : Application() {
Patcher.patchAll(this.applicationContext)
val locale = Locale.getDefault()
Crashlytics.log("Country: ${locale.country}, language: ${locale.language}")
FirebaseCrashlytics.getInstance().log("Country: ${locale.country}, language: ${locale.language}")
}

@ -1,10 +1,10 @@
package net.pokeranalytics.android.model.filter
import com.crashlytics.android.Crashlytics
import io.realm.RealmModel
import io.realm.RealmResults
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.model.utils.CrashLogging
/**
* We want to be able to store filters in the database:
@ -65,7 +65,7 @@ class FilterHelper {
Transaction::class.java -> Transaction.fieldNameForQueryType(queryCondition)
Result::class.java -> Result.fieldNameForQueryType(queryCondition)
else -> {
Crashlytics.logException(PAIllegalStateException("Filterable type fields are not defined for condition ${queryCondition::class}, class ${T::class}"))
CrashLogging.logException(PAIllegalStateException("Filterable type fields are not defined for condition ${queryCondition::class}, class ${T::class}"))
null
// throw UnmanagedFilterField("Filterable type fields are not defined for class ${T::class}")
}

@ -1,7 +1,6 @@
package net.pokeranalytics.android.model.realm
import android.content.Context
import com.crashlytics.android.Crashlytics
import com.github.mikephil.charting.data.Entry
import io.realm.Realm
import io.realm.RealmList
@ -28,6 +27,7 @@ import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.filter.QueryCondition.*
import net.pokeranalytics.android.model.interfaces.*
import net.pokeranalytics.android.model.realm.handhistory.HandHistory
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.model.utils.SessionSetManager
import net.pokeranalytics.android.ui.adapter.UnmanagedRowRepresentableException
import net.pokeranalytics.android.ui.fragment.GraphFragment
@ -654,14 +654,14 @@ open class Session : RealmObject(), Savable, Editable, RowRepresentable, Timed,
*/
fun delete() {
Crashlytics.log("Deletes session. Id = ${this.id}")
CrashLogging.log("Deletes session. Id = ${this.id}")
if (isValid) {
realm.executeTransaction {
cleanup()
deleteFromRealm()
}
} else {
Crashlytics.log("Attempt to delete an invalid session")
CrashLogging.log("Attempt to delete an invalid session")
}
}

@ -0,0 +1,20 @@
package net.pokeranalytics.android.model.utils
import com.google.firebase.crashlytics.FirebaseCrashlytics
class CrashLogging {
companion object {
fun logException(e: Exception) {
FirebaseCrashlytics.getInstance().recordException(e)
}
fun log(message: String) {
FirebaseCrashlytics.getInstance().log(message)
}
}
}

@ -12,9 +12,9 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.crashlytics.android.Crashlytics
import io.realm.Realm
import net.pokeranalytics.android.model.realm.Location
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.util.LocationManager
@ -53,33 +53,33 @@ abstract class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Crashlytics.log("$this.localClassName onCreate, savedInstanceState=$savedInstanceState")
CrashLogging.log("$this.localClassName onCreate, savedInstanceState=$savedInstanceState")
}
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
Crashlytics.log("$this.localClassName onCreate: bundle=$savedInstanceState, persistentState=$persistentState")
CrashLogging.log("$this.localClassName onCreate: bundle=$savedInstanceState, persistentState=$persistentState")
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT // fixes crash
}
override fun onResume() {
super.onResume()
Crashlytics.log("$this.localClassName onResume")
CrashLogging.log("$this.localClassName onResume")
}
override fun onPause() {
super.onPause()
Crashlytics.log("$this.localClassName onPause")
CrashLogging.log("$this.localClassName onPause")
}
override fun onStop() {
super.onStop()
Crashlytics.log("$this.localClassName onStop")
CrashLogging.log("$this.localClassName onStop")
}
override fun onDestroy() {
super.onDestroy()
Crashlytics.log("$this.localClassName onDestroy")
CrashLogging.log("$this.localClassName onDestroy")
this.realm?.close()
}

@ -22,10 +22,10 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager.widget.ViewPager
import com.android.billingclient.api.*
import com.crashlytics.android.Crashlytics
import kotlinx.android.synthetic.main.fragment_subscription.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.extensions.px
import net.pokeranalytics.android.ui.fragment.components.BaseFragment
import net.pokeranalytics.android.ui.fragment.components.ScreenSlidePageFragment
@ -221,7 +221,7 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
val p = Period.parse(it.freeTrialPeriod)
freeTrialDays = p.days
} catch (e: DateTimeParseException) {
Crashlytics.log("Error parsing period with value: ${it.freeTrialPeriod}")
CrashLogging.log("Error parsing period with value: ${it.freeTrialPeriod}")
}
}
val formattedFreeTrial =

@ -4,8 +4,8 @@ import android.os.Bundle
import android.view.View
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import com.crashlytics.android.Crashlytics
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.activity.components.BaseActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment
@ -31,7 +31,7 @@ abstract class BaseFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Crashlytics.log("$this.localClassName onCreate")
CrashLogging.log("$this.localClassName onCreate")
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -41,22 +41,22 @@ abstract class BaseFragment : Fragment() {
override fun onResume() {
super.onResume()
Crashlytics.log("$this.localClassName onResume")
CrashLogging.log("$this.localClassName onResume")
}
override fun onPause() {
super.onPause()
Crashlytics.log("$this.localClassName onPause")
CrashLogging.log("$this.localClassName onPause")
}
override fun onDestroy() {
super.onDestroy()
Crashlytics.log("$this.localClassName onDestroy")
CrashLogging.log("$this.localClassName onDestroy")
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
Crashlytics.log("$this.localClassName onActivityCreated")
CrashLogging.log("$this.localClassName onActivityCreated")
}
/**

@ -4,11 +4,11 @@ import android.content.Context
import android.content.res.Resources
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import com.crashlytics.android.Crashlytics
import com.github.mikephil.charting.charts.BarChart
import com.github.mikephil.charting.charts.BarLineChartBase
import com.github.mikephil.charting.components.XAxis
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.extensions.px
enum class AxisFormatting {
@ -39,7 +39,7 @@ fun BarLineChartBase<*>.setStyle(
val font = ResourcesCompat.getFont(context, R.font.roboto_medium)
this.xAxis.typeface = font
} catch (e: Resources.NotFoundException) {
Crashlytics.log(e.message)
CrashLogging.log(e.message ?: "BarLineChartBase<*>.setStyle: Resources.NotFoundException")
}
this.xAxis.labelCount = 4
@ -68,7 +68,7 @@ fun BarLineChartBase<*>.setStyle(
val font = ResourcesCompat.getFont(context, R.font.roboto_medium)
this.axisLeft.typeface = font
} catch (e: Resources.NotFoundException) {
Crashlytics.log(e.message)
CrashLogging.log(e.message ?: "BarLineChartBase<*>.setStyle: Resources.NotFoundException")
}
this.axisLeft.labelCount =

@ -5,13 +5,13 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.crashlytics.android.Crashlytics
import io.realm.RealmModel
import kotlinx.android.synthetic.main.fragment_editable_data.*
import kotlinx.android.synthetic.main.fragment_editable_data.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Editable
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -70,7 +70,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat
try {
(this.model.item as Editable).updateValue(value, row)
} catch (e: Exception) {
Crashlytics.log("Exception caught: row = $row, value=$value, class=${this.javaClass}")
CrashLogging.log("Exception caught: row = $row, value=$value, class=${this.javaClass}")
throw e
}

@ -11,7 +11,6 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DiffUtil
import com.crashlytics.android.Crashlytics
import kotlinx.android.synthetic.main.fragment_session.*
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
@ -27,6 +26,7 @@ import net.pokeranalytics.android.model.extensions.getState
import net.pokeranalytics.android.model.extensions.scheduleStopNotification
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.model.utils.FavoriteSessionFinder
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -75,7 +75,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRepr
override fun onResume() {
super.onResume()
Crashlytics.log("session (id=${this.currentSession.id}): valid=${currentSession.isValid}, managed=${currentSession.isManaged}, loaded=${currentSession.isLoaded} ")
CrashLogging.log("session (id=${this.currentSession.id}): valid=${currentSession.isValid}, managed=${currentSession.isManaged}, loaded=${currentSession.isLoaded} ")
this.refreshTimer()
}

@ -1,20 +1,18 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.72'
ext.kotlin_version = '1.4.10'
repositories {
google()
jcenter()
maven {
url 'https://maven.fabric.io/public'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'io.realm:realm-gradle-plugin:5.15.2'
classpath 'com.google.gms:google-services:4.3.3'
classpath 'io.fabric.tools:gradle:1.31.2'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
}
}

Loading…
Cancel
Save