From 6ec68733e0f1c6a2bbbbb4735e9c1f2de8cf6b8c Mon Sep 17 00:00:00 2001 From: YuutaW <17158086+Trumeet@users.noreply.github.com> Date: Sun, 24 Feb 2019 13:57:18 -0800 Subject: feat(app): implement Fabric Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com> --- app/.gitignore | 1 + app/build.gradle | 16 ++++++++++++++++ app/src/main/AndroidManifest.xml | 3 +++ app/src/main/java/moe/yuuta/workmode/App.kt | 1 + app/src/main/java/moe/yuuta/workmode/MainActivity.kt | 3 +++ app/src/main/java/moe/yuuta/workmode/Setup.kt | 13 +++++++++++++ build.gradle | 3 ++- 7 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/.gitignore b/app/.gitignore index 796b96d..ff4643f 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ /build +private.properties \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e7ddaed..bd8cf7d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'com.google.android.gms.oss-licenses-plugin' +def privateProperties = new Properties() +def conf = project.file("private.properties") +if (conf.exists()) privateProperties.load(conf.newDataInputStream()) + +if (privateProperties['fabric.key'] != null) { + apply plugin: 'io.fabric' +} + android { compileSdkVersion 28 defaultConfig { @@ -13,6 +21,13 @@ android { versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + // Fabric + def fabricKey = privateProperties['fabric.key'] + if (fabricKey == null) fabricKey = System.getenv("FABRIC_KEY") + if (fabricKey == null) fabricKey = "disabled" + buildConfigField "String", "FABRIC_KEY", "\"" + fabricKey + "\"" + manifestPlaceholders.fabricKey = fabricKey } buildTypes { release { @@ -53,4 +68,5 @@ dependencies { implementation 'com.google.android.material:material:1.1.0-alpha03' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.google.android.gms:play-services-oss-licenses:16.0.2' + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 435ee2b..062de4b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -54,5 +54,8 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> + \ No newline at end of file diff --git a/app/src/main/java/moe/yuuta/workmode/App.kt b/app/src/main/java/moe/yuuta/workmode/App.kt index 3735a3e..a1d0d92 100644 --- a/app/src/main/java/moe/yuuta/workmode/App.kt +++ b/app/src/main/java/moe/yuuta/workmode/App.kt @@ -6,5 +6,6 @@ class App : Application() { override fun onCreate() { super.onCreate() Setup.initLogs(Setup.getLogsPath(this).absolutePath) + Setup.initFabric(this) } } \ No newline at end of file diff --git a/app/src/main/java/moe/yuuta/workmode/MainActivity.kt b/app/src/main/java/moe/yuuta/workmode/MainActivity.kt index b1d425b..f18370f 100644 --- a/app/src/main/java/moe/yuuta/workmode/MainActivity.kt +++ b/app/src/main/java/moe/yuuta/workmode/MainActivity.kt @@ -18,6 +18,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.settings.widget.SwitchBar +import com.crashlytics.android.Crashlytics import com.elvishew.xlog.Logger import com.elvishew.xlog.XLog import com.google.android.gms.oss.licenses.OssLicensesMenuActivity @@ -96,6 +97,8 @@ class MainActivity : AppCompatActivity(), SwitchBar.OnSwitchChangeListener, View displayUI() if (!success) { logger.e("Unable scheduleApply settings", e) + if (Setup.FABRIC_ENABLE) + Crashlytics.getInstance().core.logException(e) Toast.makeText(this@MainActivity, R.string.error_apply, Toast.LENGTH_LONG).show() } } diff --git a/app/src/main/java/moe/yuuta/workmode/Setup.kt b/app/src/main/java/moe/yuuta/workmode/Setup.kt index fd75ff0..0553ea6 100644 --- a/app/src/main/java/moe/yuuta/workmode/Setup.kt +++ b/app/src/main/java/moe/yuuta/workmode/Setup.kt @@ -4,6 +4,8 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.core.content.FileProvider +import com.crashlytics.android.Crashlytics +import com.crashlytics.android.answers.Answers import com.elvishew.xlog.LogConfiguration import com.elvishew.xlog.LogUtils import com.elvishew.xlog.XLog @@ -11,12 +13,15 @@ import com.elvishew.xlog.interceptor.BlacklistTagsFilterInterceptor import com.elvishew.xlog.printer.AndroidPrinter import com.elvishew.xlog.printer.file.FilePrinter import com.elvishew.xlog.printer.file.clean.FileLastModifiedCleanStrategy +import io.fabric.sdk.android.Fabric import moe.yuuta.workmode.utils.Utils import java.io.File import java.text.SimpleDateFormat import java.util.* object Setup { + val FABRIC_ENABLE = !BuildConfig.DEBUG && BuildConfig.FABRIC_KEY != "disabled" + fun getLogsPath(context: Context): File = File(context.applicationContext.dataDir.absolutePath + "/logs") @@ -61,4 +66,12 @@ object Setup { intent.putExtra(Intent.EXTRA_STREAM, fileUri) return intent } + + internal fun initFabric(context: Context) { + if (FABRIC_ENABLE) { + Fabric.with(Fabric.Builder(context) + .kits(Crashlytics(), Answers()) + .build()) + } + } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 1a9979d..5ec9780 100644 --- a/build.gradle +++ b/build.gradle @@ -5,12 +5,13 @@ buildscript { repositories { google() jcenter() - + maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:3.5.0-alpha03' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.android.gms:oss-licenses-plugin:0.9.4' + classpath 'io.fabric.tools:gradle:1.27.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } -- cgit v1.2.3