Skip to content

Commit f3c4032

Browse files
Fixed tag message generation with Proguard use (dariuszseweryn#814)
1 parent be3ee50 commit f3c4032

File tree

1 file changed

+24
-6
lines changed
  • rxandroidble/src/main/java/com/polidea/rxandroidble2/internal

1 file changed

+24
-6
lines changed

rxandroidble/src/main/java/com/polidea/rxandroidble2/internal/RxBleLog.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@
22

33
import androidx.annotation.IntDef;
44
import androidx.annotation.Nullable;
5+
56
import android.util.Log;
67

78
import com.polidea.rxandroidble2.LogConstants;
89
import com.polidea.rxandroidble2.LogOptions;
910

1011
import com.polidea.rxandroidble2.internal.logger.LoggerSetup;
12+
import com.polidea.rxandroidble2.internal.logger.LoggerUtil;
13+
import com.polidea.rxandroidble2.internal.logger.LoggerUtilBluetoothServices;
14+
1115
import java.lang.annotation.Retention;
1216
import java.lang.annotation.RetentionPolicy;
17+
import java.util.Arrays;
18+
import java.util.List;
1319
import java.util.regex.Matcher;
1420
import java.util.regex.Pattern;
1521

@@ -142,12 +148,22 @@ private static String createTag() {
142148
return tag;
143149
}
144150

145-
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
146-
if (stackTrace.length < 5) {
151+
List<String> ignoreClasses = Arrays.asList(
152+
RxBleLog.class.getName(),
153+
LoggerUtil.class.getName(),
154+
LoggerUtilBluetoothServices.class.getName());
155+
156+
Throwable throwable = new Throwable();
157+
StackTraceElement[] stackTrace = throwable.getStackTrace();
158+
int i = 0;
159+
while (i < stackTrace.length && ignoreClasses.contains(stackTrace[i].getClassName())) {
160+
i++;
161+
}
162+
if (stackTrace.length <= i) {
147163
throw new IllegalStateException(
148-
"Synthetic stacktrace didn't have enough elements: are you using proguard?");
164+
"Synthetic stacktrace didn't have enough elements: are you using proguard?", throwable);
149165
}
150-
tag = stackTrace[4].getClassName();
166+
tag = stackTrace[i].getClassName();
151167
Matcher m = ANONYMOUS_CLASS.matcher(tag);
152168
if (m.find()) {
153169
tag = m.replaceAll("");
@@ -249,11 +265,13 @@ public static boolean isAtLeast(int expectedLogLevel) {
249265
return loggerSetup.logLevel <= expectedLogLevel;
250266
}
251267

252-
public static @LogConstants.MacAddressLogSetting int getMacAddressLogSetting() {
268+
@LogConstants.MacAddressLogSetting
269+
public static int getMacAddressLogSetting() {
253270
return loggerSetup.macAddressLogSetting;
254271
}
255272

256-
public static @LogConstants.UuidLogSetting int getUuidLogSetting() {
273+
@LogConstants.UuidLogSetting
274+
public static int getUuidLogSetting() {
257275
return loggerSetup.uuidLogSetting;
258276
}
259277

0 commit comments

Comments
 (0)