From 4a402cbe547eb6f1791139c811de3665f44668de Mon Sep 17 00:00:00 2001 From: Conny Duck Date: Tue, 23 May 2017 21:34:31 +0200 Subject: [PATCH 1/2] remove unnecessary Log utility class, replace Exception.printStackTrace with logging --- app/proguard-rules.pro | 1 + .../keylesspalace/tusky/AccountActivity.java | 2 +- .../com/keylesspalace/tusky/BaseActivity.java | 2 +- .../keylesspalace/tusky/ComposeActivity.java | 2 +- .../tusky/EditProfileActivity.java | 2 +- .../keylesspalace/tusky/LoginActivity.java | 4 +- .../com/keylesspalace/tusky/MainActivity.java | 2 +- .../keylesspalace/tusky/ReportActivity.java | 2 +- .../tusky/fragment/AccountListFragment.java | 2 +- .../tusky/fragment/NotificationsFragment.java | 2 +- .../tusky/fragment/TimelineFragment.java | 2 +- .../tusky/fragment/ViewThreadFragment.java | 2 +- .../tusky/util/CustomTabURLSpan.java | 1 + .../com/keylesspalace/tusky/util/Log.java | 53 ------------------- .../tusky/util/NotificationMaker.java | 8 ++- .../keylesspalace/tusky/util/OkHttpUtils.java | 1 + 16 files changed, 21 insertions(+), 67 deletions(-) delete mode 100644 app/src/main/java/com/keylesspalace/tusky/util/Log.java diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 31f778d7..b6c79975 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -46,6 +46,7 @@ # remove all logging from production apk -assumenosideeffects class android.util.Log { + public static *** getStackTraceString(...); public static *** d(...); public static *** w(...); public static *** v(...); diff --git a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.java b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.java index ae6f99ac..624206c1 100644 --- a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.java @@ -37,6 +37,7 @@ import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -51,7 +52,6 @@ import com.keylesspalace.tusky.interfaces.StatusRemoveListener; import com.keylesspalace.tusky.pager.AccountPagerAdapter; import com.keylesspalace.tusky.util.LinkHelper; import com.keylesspalace.tusky.util.Assert; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.TimelineReceiver; import com.keylesspalace.tusky.util.ThemeUtils; import com.pkmmte.view.CircularImageView; diff --git a/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java b/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java index 859b4649..56348aae 100644 --- a/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java @@ -29,6 +29,7 @@ import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.text.Spanned; +import android.util.Log; import android.util.TypedValue; import android.view.Menu; @@ -39,7 +40,6 @@ import com.keylesspalace.tusky.json.StringWithEmoji; import com.keylesspalace.tusky.json.StringWithEmojiTypeAdapter; import com.keylesspalace.tusky.network.MastodonAPI; import com.keylesspalace.tusky.network.TuskyAPI; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.OkHttpUtils; import java.io.IOException; diff --git a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java index f0089fd2..e8e0cc61 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java @@ -58,6 +58,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextWatcher; import android.text.style.URLSpan; +import android.util.Log; import android.view.MenuItem; import android.view.View; import android.webkit.MimeTypeMap; @@ -76,7 +77,6 @@ import com.keylesspalace.tusky.util.DownsizeImageTask; import com.keylesspalace.tusky.util.EditTextTyped; import com.keylesspalace.tusky.util.CountUpDownLatch; import com.keylesspalace.tusky.util.IOUtils; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.SpanUtils; import com.keylesspalace.tusky.util.ThemeUtils; diff --git a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java index 03d9811d..e0bc4798 100644 --- a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java @@ -33,6 +33,7 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.util.Base64; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -44,7 +45,6 @@ import android.widget.ProgressBar; import com.keylesspalace.tusky.entity.Account; import com.keylesspalace.tusky.entity.Profile; import com.keylesspalace.tusky.util.IOUtils; -import com.keylesspalace.tusky.util.Log; import com.pkmmte.view.CircularImageView; import com.squareup.picasso.Picasso; import com.theartofdev.edmodo.cropper.CropImage; diff --git a/app/src/main/java/com/keylesspalace/tusky/LoginActivity.java b/app/src/main/java/com/keylesspalace/tusky/LoginActivity.java index 9226dc6c..5b4473ce 100644 --- a/app/src/main/java/com/keylesspalace/tusky/LoginActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/LoginActivity.java @@ -29,6 +29,7 @@ import android.support.customtabs.CustomTabsIntent; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.text.method.LinkMovementMethod; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -39,7 +40,6 @@ import com.keylesspalace.tusky.entity.AccessToken; import com.keylesspalace.tusky.entity.AppCredentials; import com.keylesspalace.tusky.network.MastodonAPI; import com.keylesspalace.tusky.util.CustomTabsHelper; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.OkHttpUtils; import java.util.HashMap; @@ -201,7 +201,7 @@ public class LoginActivity extends AppCompatActivity { @Override public void onFailure(Call call, Throwable t) { editText.setError(getString(R.string.error_failed_app_registration)); - t.printStackTrace(); + Log.e(TAG, Log.getStackTraceString(t)); } }; diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java index 3d39b81a..edcf404d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java @@ -37,6 +37,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.StyleSpan; +import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -48,7 +49,6 @@ import com.keylesspalace.tusky.entity.Account; import com.keylesspalace.tusky.fragment.SFragment; import com.keylesspalace.tusky.interfaces.StatusRemoveListener; import com.keylesspalace.tusky.pager.TimelinePagerAdapter; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.ThemeUtils; import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.mikepenz.materialdrawer.AccountHeader; diff --git a/app/src/main/java/com/keylesspalace/tusky/ReportActivity.java b/app/src/main/java/com/keylesspalace/tusky/ReportActivity.java index f8e4e447..8b8198fc 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ReportActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/ReportActivity.java @@ -25,6 +25,7 @@ import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -33,7 +34,6 @@ import android.widget.EditText; import com.keylesspalace.tusky.adapter.ReportAdapter; import com.keylesspalace.tusky.entity.Status; import com.keylesspalace.tusky.util.HtmlUtils; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.ThemeUtils; import java.util.ArrayList; diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/AccountListFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/AccountListFragment.java index eed0d72a..b0039671 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/AccountListFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/AccountListFragment.java @@ -25,6 +25,7 @@ import android.support.design.widget.TabLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -43,7 +44,6 @@ import com.keylesspalace.tusky.interfaces.AccountActionListener; import com.keylesspalace.tusky.network.MastodonAPI; import com.keylesspalace.tusky.R; import com.keylesspalace.tusky.util.EndlessOnScrollListener; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.ThemeUtils; import java.util.List; diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java index bef04290..06cb1035 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java @@ -27,6 +27,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -40,7 +41,6 @@ import com.keylesspalace.tusky.entity.Status; import com.keylesspalace.tusky.interfaces.StatusActionListener; import com.keylesspalace.tusky.interfaces.StatusRemoveListener; import com.keylesspalace.tusky.util.EndlessOnScrollListener; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.ThemeUtils; import java.util.List; diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java index 17e9b726..249e238e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java @@ -28,6 +28,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -39,7 +40,6 @@ import com.keylesspalace.tusky.entity.Status; import com.keylesspalace.tusky.interfaces.StatusActionListener; import com.keylesspalace.tusky.interfaces.StatusRemoveListener; import com.keylesspalace.tusky.util.EndlessOnScrollListener; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.TimelineReceiver; import com.keylesspalace.tusky.util.ThemeUtils; diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java index d02f4359..91fced58 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java @@ -25,6 +25,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -39,7 +40,6 @@ import com.keylesspalace.tusky.R; import com.keylesspalace.tusky.interfaces.StatusActionListener; import com.keylesspalace.tusky.interfaces.StatusRemoveListener; import com.keylesspalace.tusky.util.ConversationLineItemDecoration; -import com.keylesspalace.tusky.util.Log; import com.keylesspalace.tusky.util.ThemeUtils; import retrofit2.Call; diff --git a/app/src/main/java/com/keylesspalace/tusky/util/CustomTabURLSpan.java b/app/src/main/java/com/keylesspalace/tusky/util/CustomTabURLSpan.java index bef07fcf..718fd826 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/CustomTabURLSpan.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/CustomTabURLSpan.java @@ -9,6 +9,7 @@ import android.preference.PreferenceManager; import android.support.customtabs.CustomTabsIntent; import android.support.v4.content.ContextCompat; import android.text.style.URLSpan; +import android.util.Log; import android.view.View; import com.keylesspalace.tusky.R; diff --git a/app/src/main/java/com/keylesspalace/tusky/util/Log.java b/app/src/main/java/com/keylesspalace/tusky/util/Log.java deleted file mode 100644 index 26d3d85f..00000000 --- a/app/src/main/java/com/keylesspalace/tusky/util/Log.java +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright 2017 Andrew Dawson - * - * This file is a part of Tusky. - * - * 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. - * - * Tusky 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 Tusky; if not, - * see . */ - -package com.keylesspalace.tusky.util; - -import com.keylesspalace.tusky.BuildConfig; - -/**A wrapper for android.util.Log that allows for disabling logging, such as for release builds.*/ -public class Log { - private static final boolean LOGGING_ENABLED = BuildConfig.DEBUG; - - public static void i(String tag, String string) { - if (LOGGING_ENABLED) { - android.util.Log.i(tag, string); - } - } - - public static void e(String tag, String string) { - if (LOGGING_ENABLED) { - android.util.Log.e(tag, string); - } - } - - public static void d(String tag, String string) { - if (LOGGING_ENABLED) { - android.util.Log.d(tag, string); - } - } - - public static void v(String tag, String string) { - if (LOGGING_ENABLED) { - android.util.Log.v(tag, string); - } - } - - public static void w(String tag, String string) { - if (LOGGING_ENABLED) { - android.util.Log.w(tag, string); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java b/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java index e5bc7003..e0c31280 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java @@ -28,6 +28,7 @@ import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; +import android.util.Log; import com.keylesspalace.tusky.MainActivity; import com.keylesspalace.tusky.R; @@ -39,6 +40,9 @@ import org.json.JSONArray; import org.json.JSONException; public class NotificationMaker { + + public static final String TAG = "NotificationMaker"; + public static void make(final Context context, final int notifyId, Notification body) { final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -66,7 +70,7 @@ public class NotificationMaker { alreadyContains = true; } } catch (JSONException e) { - e.printStackTrace(); + Log.d(TAG, Log.getStackTraceString(e)); } } @@ -127,7 +131,7 @@ public class NotificationMaker { builder.setContentTitle(String.format(context.getString(R.string.notification_title_summary), currentNotifications.length())) .setContentText(truncateWithEllipses(joinNames(context, currentNotifications), 40)); } catch (JSONException e) { - e.printStackTrace(); + Log.d(TAG, Log.getStackTraceString(e)); } } diff --git a/app/src/main/java/com/keylesspalace/tusky/util/OkHttpUtils.java b/app/src/main/java/com/keylesspalace/tusky/util/OkHttpUtils.java index c90002d2..577af8cf 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/OkHttpUtils.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/OkHttpUtils.java @@ -17,6 +17,7 @@ package com.keylesspalace.tusky.util; import android.os.Build; import android.support.annotation.NonNull; +import android.util.Log; import com.keylesspalace.tusky.BuildConfig; From fb7e36acd604b7a65c13b7d964e830e737831357 Mon Sep 17 00:00:00 2001 From: Conny Duck Date: Thu, 25 May 2017 17:21:11 +0200 Subject: [PATCH 2/2] log some more exceptions --- .../main/java/com/keylesspalace/tusky/ComposeActivity.java | 3 +++ .../java/com/keylesspalace/tusky/EditProfileActivity.java | 2 ++ .../java/com/keylesspalace/tusky/util/DownsizeImageTask.java | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java index e8e0cc61..886d9999 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java @@ -677,6 +677,7 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFrag try { descriptor = getContentResolver().openAssetFileDescriptor(uri, "r"); } catch (FileNotFoundException e) { + Log.d(TAG, Log.getStackTraceString(e)); // Eat this exception, having the descriptor be null is sufficient. } if (descriptor != null) { @@ -1037,6 +1038,7 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFrag } buffer.flush(); } catch (IOException e) { + Log.d(TAG, Log.getStackTraceString(e)); return null; } return buffer.toByteArray(); @@ -1062,6 +1064,7 @@ public class ComposeActivity extends BaseActivity implements ComposeOptionsFrag try { stream = getContentResolver().openInputStream(item.uri); } catch (FileNotFoundException e) { + Log.d(TAG, Log.getStackTraceString(e)); return; } diff --git a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java index e0bc4798..88e59072 100644 --- a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.java @@ -486,12 +486,14 @@ public class EditProfileActivity extends BaseActivity { try { inputStream = contentResolver.openInputStream(uri); } catch (FileNotFoundException e) { + Log.d(TAG, Log.getStackTraceString(e)); return false; } Bitmap sourceBitmap; try { sourceBitmap = BitmapFactory.decodeStream(inputStream, null, null); } catch (OutOfMemoryError error) { + Log.d(TAG, Log.getStackTraceString(error)); return false; } finally { IOUtils.closeQuietly(inputStream); diff --git a/app/src/main/java/com/keylesspalace/tusky/util/DownsizeImageTask.java b/app/src/main/java/com/keylesspalace/tusky/util/DownsizeImageTask.java index 0cbc35a8..fe222a70 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/DownsizeImageTask.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/DownsizeImageTask.java @@ -23,6 +23,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.support.annotation.Nullable; import android.support.media.ExifInterface; +import android.util.Log; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; @@ -32,6 +33,7 @@ import java.util.ArrayList; import java.util.List; public class DownsizeImageTask extends AsyncTask { + private static final String TAG = "DownsizeImageTask"; private int sizeLimit; private ContentResolver contentResolver; private Listener listener; @@ -100,6 +102,7 @@ public class DownsizeImageTask extends AsyncTask { try { inputStream = contentResolver.openInputStream(uri); } catch (FileNotFoundException e) { + Log.d(TAG, Log.getStackTraceString(e)); return ExifInterface.ORIENTATION_UNDEFINED; } if (inputStream == null) { @@ -109,6 +112,7 @@ public class DownsizeImageTask extends AsyncTask { try { exifInterface = new ExifInterface(inputStream); } catch (IOException e) { + Log.d(TAG, Log.getStackTraceString(e)); IOUtils.closeQuietly(inputStream); return ExifInterface.ORIENTATION_UNDEFINED; }