From 4439a57adeccd5b3b11827a96bab1b2a0c108062 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 8 Jul 2019 13:09:03 +0100 Subject: [PATCH 01/22] rename sdk module to bugsnag-android-core --- {sdk => bugsnag-android-core}/.gitignore | 0 {sdk => bugsnag-android-core}/CMakeLists.txt | 0 {sdk => bugsnag-android-core}/build.gradle | 0 {sdk => bugsnag-android-core}/lint-baseline.xml | 0 {sdk => bugsnag-android-core}/package.json | 0 {sdk => bugsnag-android-core}/proguard-rules.pro | 0 .../src/androidTest/AndroidManifest.xml | 0 .../src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt | 0 .../androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt | 0 .../java/com/bugsnag/android/AppDataSummaryTest.java | 0 .../src/androidTest/java/com/bugsnag/android/AppDataTest.java | 0 .../androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt | 0 .../java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java | 0 .../androidTest/java/com/bugsnag/android/BeforeSendTest.java | 0 .../src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt | 0 .../androidTest/java/com/bugsnag/android/BugsnagTestUtils.java | 0 .../androidTest/java/com/bugsnag/android/CachedThreadTest.java | 0 .../androidTest/java/com/bugsnag/android/ClientConfigTest.java | 0 .../androidTest/java/com/bugsnag/android/ClientNotifyTest.java | 0 .../src/androidTest/java/com/bugsnag/android/ClientTest.java | 0 .../java/com/bugsnag/android/ConcurrentCallbackTest.java | 0 .../androidTest/java/com/bugsnag/android/ConfigurationTest.java | 0 .../androidTest/java/com/bugsnag/android/CustomException.java | 0 .../java/com/bugsnag/android/DeliveryCompatTest.java | 0 .../java/com/bugsnag/android/DeviceDataSummaryTest.java | 0 .../androidTest/java/com/bugsnag/android/DeviceDataTest.java | 0 .../androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt | 0 .../androidTest/java/com/bugsnag/android/ErrorReaderTest.java | 0 .../java/com/bugsnag/android/ErrorReportApiClientTest.java | 0 .../src/androidTest/java/com/bugsnag/android/ErrorTest.java | 0 .../androidTest/java/com/bugsnag/android/EventReceiverTest.java | 0 .../java/com/bugsnag/android/ExceptionHandlerTest.java | 0 .../androidTest/java/com/bugsnag/android/ExceptionsTest.java | 0 .../src/androidTest/java/com/bugsnag/android/FileUtils.java | 0 .../androidTest/java/com/bugsnag/android/HandledStateTest.java | 0 .../androidTest/java/com/bugsnag/android/JsonStreamTest.java | 0 .../java/com/bugsnag/android/JsonWriterBugsnagTest.java | 0 .../androidTest/java/com/bugsnag/android/JsonWriterTest.java | 0 .../androidTest/java/com/bugsnag/android/MetaDataMergeTest.java | 0 .../src/androidTest/java/com/bugsnag/android/MetaDataTest.java | 0 .../src/androidTest/java/com/bugsnag/android/NativeCXXTest.java | 0 .../java/com/bugsnag/android/NativeInterfaceTest.java | 0 .../src/androidTest/java/com/bugsnag/android/NotifierTest.java | 0 .../androidTest/java/com/bugsnag/android/NullMetadataTest.java | 0 .../java/com/bugsnag/android/ObserverInterfaceTest.java | 0 .../androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt | 0 .../src/androidTest/java/com/bugsnag/android/ReportTest.java | 0 .../src/androidTest/java/com/bugsnag/android/RxErrorTest.kt | 0 .../androidTest/java/com/bugsnag/android/SessionStoreTest.java | 0 .../src/androidTest/java/com/bugsnag/android/SessionTest.kt | 0 .../java/com/bugsnag/android/SessionTrackerStopResumeTest.kt | 0 .../java/com/bugsnag/android/SessionTrackerTest.java | 0 .../java/com/bugsnag/android/SessionTrackingPayloadTest.java | 0 .../androidTest/java/com/bugsnag/android/StacktraceTest.java | 0 .../androidTest/java/com/bugsnag/android/StrictModeTest.java | 0 .../androidTest/java/com/bugsnag/android/StrictModeWrapper.java | 0 .../src/androidTest/java/com/bugsnag/android/TestRunListener.kt | 0 .../src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt | 0 .../java/com/bugsnag/android/UniqueBeforeNotifyTest.java | 0 .../src/androidTest/java/com/bugsnag/android/UserTest.java | 0 .../src/androidTest/res/raw/error.json | 0 .../src/androidTest/res/raw/rx_error.json | 0 {sdk => bugsnag-android-core}/src/main/AndroidManifest.xml | 0 {sdk => bugsnag-android-core}/src/main/CMakeLists.txt | 0 {sdk => bugsnag-android-core}/src/main/assets/include/bugsnag.h | 0 {sdk => bugsnag-android-core}/src/main/assets/include/report.h | 0 .../src/main/java/com/bugsnag/android/AppData.java | 0 .../main/java/com/bugsnag/android/AppNotRespondingMonitor.java | 0 .../src/main/java/com/bugsnag/android/Async.java | 0 .../src/main/java/com/bugsnag/android/BadResponseException.java | 0 .../src/main/java/com/bugsnag/android/BeforeNotify.java | 0 .../main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java | 0 .../src/main/java/com/bugsnag/android/BeforeSend.java | 0 .../src/main/java/com/bugsnag/android/BeforeSendSession.java | 0 .../src/main/java/com/bugsnag/android/Breadcrumb.java | 0 .../src/main/java/com/bugsnag/android/BreadcrumbType.java | 0 .../src/main/java/com/bugsnag/android/Breadcrumbs.java | 0 .../src/main/java/com/bugsnag/android/Bugsnag.java | 0 .../src/main/java/com/bugsnag/android/BugsnagException.java | 0 .../src/main/java/com/bugsnag/android/CachedThread.java | 0 .../src/main/java/com/bugsnag/android/Callback.java | 0 .../src/main/java/com/bugsnag/android/Client.java | 0 .../src/main/java/com/bugsnag/android/ConfigFactory.java | 0 .../src/main/java/com/bugsnag/android/Configuration.java | 0 .../src/main/java/com/bugsnag/android/ConnectivityCompat.kt | 0 .../src/main/java/com/bugsnag/android/DateUtils.java | 0 .../src/main/java/com/bugsnag/android/DefaultDelivery.java | 0 .../src/main/java/com/bugsnag/android/Delivery.java | 0 .../src/main/java/com/bugsnag/android/DeliveryCompat.java | 0 .../main/java/com/bugsnag/android/DeliveryFailureException.java | 0 .../src/main/java/com/bugsnag/android/DeliveryStyle.java | 0 .../src/main/java/com/bugsnag/android/DeviceData.java | 0 .../src/main/java/com/bugsnag/android/Error.java | 0 .../src/main/java/com/bugsnag/android/ErrorReader.java | 0 .../src/main/java/com/bugsnag/android/ErrorReportApiClient.java | 0 .../src/main/java/com/bugsnag/android/ErrorStore.java | 0 .../src/main/java/com/bugsnag/android/EventReceiver.java | 0 .../src/main/java/com/bugsnag/android/ExceptionHandler.java | 0 .../src/main/java/com/bugsnag/android/Exceptions.java | 0 .../src/main/java/com/bugsnag/android/FileStore.java | 0 .../src/main/java/com/bugsnag/android/ForegroundDetector.java | 0 .../src/main/java/com/bugsnag/android/HandledState.java | 0 .../src/main/java/com/bugsnag/android/IOUtils.java | 0 .../src/main/java/com/bugsnag/android/InternalApi.java | 0 .../src/main/java/com/bugsnag/android/JsonScope.java | 0 .../src/main/java/com/bugsnag/android/JsonStream.java | 0 .../src/main/java/com/bugsnag/android/JsonWriter.java | 0 .../src/main/java/com/bugsnag/android/Logger.java | 0 .../src/main/java/com/bugsnag/android/MapUtils.java | 0 .../src/main/java/com/bugsnag/android/MetaData.java | 0 .../src/main/java/com/bugsnag/android/NativeInterface.java | 0 .../src/main/java/com/bugsnag/android/NetworkException.java | 0 .../src/main/java/com/bugsnag/android/Notifier.java | 0 .../src/main/java/com/bugsnag/android/NotifyType.java | 0 .../src/main/java/com/bugsnag/android/ObjectJsonStreamer.java | 0 .../src/main/java/com/bugsnag/android/Report.java | 0 .../src/main/java/com/bugsnag/android/Session.java | 0 .../src/main/java/com/bugsnag/android/SessionStore.java | 0 .../src/main/java/com/bugsnag/android/SessionTracker.java | 0 .../main/java/com/bugsnag/android/SessionTrackingApiClient.java | 0 .../main/java/com/bugsnag/android/SessionTrackingPayload.java | 0 .../src/main/java/com/bugsnag/android/Severity.java | 0 .../src/main/java/com/bugsnag/android/Stacktrace.java | 0 .../src/main/java/com/bugsnag/android/StrictModeHandler.java | 0 .../src/main/java/com/bugsnag/android/ThreadSafe.java | 0 .../src/main/java/com/bugsnag/android/ThreadState.java | 0 .../src/main/java/com/bugsnag/android/User.java | 0 .../src/main/java/com/bugsnag/android/ndk/NativeBridge.java | 0 {sdk => bugsnag-android-core}/src/main/jni/bugsnag.c | 0 {sdk => bugsnag-android-core}/src/main/jni/bugsnag_ndk.c | 0 {sdk => bugsnag-android-core}/src/main/jni/bugsnag_ndk.h | 0 .../src/main/jni/deps/parson/package.json | 0 {sdk => bugsnag-android-core}/src/main/jni/deps/parson/parson.c | 0 {sdk => bugsnag-android-core}/src/main/jni/deps/parson/parson.h | 0 .../main/jni/external/libunwind/include/__libunwind_config.h | 0 .../src/main/jni/external/libunwind/include/libunwind.h | 0 .../src/main/jni/handlers/anr_handler.c | 0 .../src/main/jni/handlers/anr_handler.h | 0 .../src/main/jni/handlers/cpp_handler.cpp | 0 .../src/main/jni/handlers/cpp_handler.h | 0 .../src/main/jni/handlers/signal_handler.c | 0 .../src/main/jni/handlers/signal_handler.h | 0 {sdk => bugsnag-android-core}/src/main/jni/metadata.c | 0 {sdk => bugsnag-android-core}/src/main/jni/metadata.h | 0 {sdk => bugsnag-android-core}/src/main/jni/report.c | 0 {sdk => bugsnag-android-core}/src/main/jni/report.h | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/build.h | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/crash_info.c | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/crash_info.h | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/migrate.h | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/serializer.c | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/serializer.h | 0 .../src/main/jni/utils/stack_unwinder.c | 0 .../src/main/jni/utils/stack_unwinder.h | 0 .../src/main/jni/utils/stack_unwinder_libcorkscrew.c | 0 .../src/main/jni/utils/stack_unwinder_libcorkscrew.h | 0 .../src/main/jni/utils/stack_unwinder_libunwind.c | 0 .../src/main/jni/utils/stack_unwinder_libunwind.h | 0 .../src/main/jni/utils/stack_unwinder_libunwindstack.cpp | 0 .../src/main/jni/utils/stack_unwinder_libunwindstack.h | 0 .../src/main/jni/utils/stack_unwinder_simple.c | 0 .../src/main/jni/utils/stack_unwinder_simple.h | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/string.c | 0 {sdk => bugsnag-android-core}/src/main/jni/utils/string.h | 0 {sdk => bugsnag-android-core}/src/test/CMakeLists.txt | 0 .../src/test/cpp/deps/greatest/greatest.h | 0 .../src/test/cpp/deps/greatest/package.json | 0 {sdk => bugsnag-android-core}/src/test/cpp/main.c | 0 {sdk => bugsnag-android-core}/src/test/cpp/test_breadcrumbs.c | 0 .../src/test/cpp/test_utils_serialize.c | 0 {sdk => bugsnag-android-core}/src/test/cpp/test_utils_string.c | 0 sdk/src/main/jni/external/libunwindstack | 1 - settings.gradle | 2 +- 173 files changed, 1 insertion(+), 2 deletions(-) rename {sdk => bugsnag-android-core}/.gitignore (100%) rename {sdk => bugsnag-android-core}/CMakeLists.txt (100%) rename {sdk => bugsnag-android-core}/build.gradle (100%) rename {sdk => bugsnag-android-core}/lint-baseline.xml (100%) rename {sdk => bugsnag-android-core}/package.json (100%) rename {sdk => bugsnag-android-core}/proguard-rules.pro (100%) rename {sdk => bugsnag-android-core}/src/androidTest/AndroidManifest.xml (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/CustomException.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/FileUtils.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/HandledStateTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/MetaDataTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NotifierTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ReportTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StacktraceTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StrictModeTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/TestRunListener.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/UserTest.java (100%) rename {sdk => bugsnag-android-core}/src/androidTest/res/raw/error.json (100%) rename {sdk => bugsnag-android-core}/src/androidTest/res/raw/rx_error.json (100%) rename {sdk => bugsnag-android-core}/src/main/AndroidManifest.xml (100%) rename {sdk => bugsnag-android-core}/src/main/CMakeLists.txt (100%) rename {sdk => bugsnag-android-core}/src/main/assets/include/bugsnag.h (100%) rename {sdk => bugsnag-android-core}/src/main/assets/include/report.h (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/AppData.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Async.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BadResponseException.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeNotify.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeSend.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeSendSession.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Breadcrumb.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BreadcrumbType.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Breadcrumbs.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Bugsnag.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/BugsnagException.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/CachedThread.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Callback.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Client.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ConfigFactory.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Configuration.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ConnectivityCompat.kt (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DateUtils.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DefaultDelivery.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Delivery.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryCompat.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryFailureException.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryStyle.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeviceData.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Error.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorReader.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorReportApiClient.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorStore.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/EventReceiver.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ExceptionHandler.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Exceptions.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/FileStore.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ForegroundDetector.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/HandledState.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/IOUtils.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/InternalApi.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonScope.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonStream.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonWriter.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Logger.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/MapUtils.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/MetaData.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/NativeInterface.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/NetworkException.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Notifier.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/NotifyType.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Report.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Session.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionStore.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTracker.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTrackingPayload.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Severity.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/Stacktrace.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/StrictModeHandler.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ThreadSafe.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ThreadState.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/User.java (100%) rename {sdk => bugsnag-android-core}/src/main/java/com/bugsnag/android/ndk/NativeBridge.java (100%) rename {sdk => bugsnag-android-core}/src/main/jni/bugsnag.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/bugsnag_ndk.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/bugsnag_ndk.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/deps/parson/package.json (100%) rename {sdk => bugsnag-android-core}/src/main/jni/deps/parson/parson.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/deps/parson/parson.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/external/libunwind/include/__libunwind_config.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/external/libunwind/include/libunwind.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/anr_handler.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/anr_handler.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/cpp_handler.cpp (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/cpp_handler.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/signal_handler.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/handlers/signal_handler.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/metadata.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/metadata.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/report.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/report.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/build.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/crash_info.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/crash_info.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/migrate.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/serializer.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/serializer.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libcorkscrew.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libcorkscrew.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libunwind.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libunwind.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libunwindstack.cpp (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_libunwindstack.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_simple.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/stack_unwinder_simple.h (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/string.c (100%) rename {sdk => bugsnag-android-core}/src/main/jni/utils/string.h (100%) rename {sdk => bugsnag-android-core}/src/test/CMakeLists.txt (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/deps/greatest/greatest.h (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/deps/greatest/package.json (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/main.c (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/test_breadcrumbs.c (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/test_utils_serialize.c (100%) rename {sdk => bugsnag-android-core}/src/test/cpp/test_utils_string.c (100%) delete mode 160000 sdk/src/main/jni/external/libunwindstack diff --git a/sdk/.gitignore b/bugsnag-android-core/.gitignore similarity index 100% rename from sdk/.gitignore rename to bugsnag-android-core/.gitignore diff --git a/sdk/CMakeLists.txt b/bugsnag-android-core/CMakeLists.txt similarity index 100% rename from sdk/CMakeLists.txt rename to bugsnag-android-core/CMakeLists.txt diff --git a/sdk/build.gradle b/bugsnag-android-core/build.gradle similarity index 100% rename from sdk/build.gradle rename to bugsnag-android-core/build.gradle diff --git a/sdk/lint-baseline.xml b/bugsnag-android-core/lint-baseline.xml similarity index 100% rename from sdk/lint-baseline.xml rename to bugsnag-android-core/lint-baseline.xml diff --git a/sdk/package.json b/bugsnag-android-core/package.json similarity index 100% rename from sdk/package.json rename to bugsnag-android-core/package.json diff --git a/sdk/proguard-rules.pro b/bugsnag-android-core/proguard-rules.pro similarity index 100% rename from sdk/proguard-rules.pro rename to bugsnag-android-core/proguard-rules.pro diff --git a/sdk/src/androidTest/AndroidManifest.xml b/bugsnag-android-core/src/androidTest/AndroidManifest.xml similarity index 100% rename from sdk/src/androidTest/AndroidManifest.xml rename to bugsnag-android-core/src/androidTest/AndroidManifest.xml diff --git a/sdk/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/AppDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/AppDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/CustomException.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/CustomException.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ErrorTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/FileUtils.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/FileUtils.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/HandledStateTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/HandledStateTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NotifierTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/NotifierTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ReportTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ReportTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/SessionTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/SessionTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/StacktraceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/StacktraceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/StrictModeTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/StrictModeTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/TestRunListener.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/TestRunListener.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java diff --git a/sdk/src/androidTest/java/com/bugsnag/android/UserTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java similarity index 100% rename from sdk/src/androidTest/java/com/bugsnag/android/UserTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java diff --git a/sdk/src/androidTest/res/raw/error.json b/bugsnag-android-core/src/androidTest/res/raw/error.json similarity index 100% rename from sdk/src/androidTest/res/raw/error.json rename to bugsnag-android-core/src/androidTest/res/raw/error.json diff --git a/sdk/src/androidTest/res/raw/rx_error.json b/bugsnag-android-core/src/androidTest/res/raw/rx_error.json similarity index 100% rename from sdk/src/androidTest/res/raw/rx_error.json rename to bugsnag-android-core/src/androidTest/res/raw/rx_error.json diff --git a/sdk/src/main/AndroidManifest.xml b/bugsnag-android-core/src/main/AndroidManifest.xml similarity index 100% rename from sdk/src/main/AndroidManifest.xml rename to bugsnag-android-core/src/main/AndroidManifest.xml diff --git a/sdk/src/main/CMakeLists.txt b/bugsnag-android-core/src/main/CMakeLists.txt similarity index 100% rename from sdk/src/main/CMakeLists.txt rename to bugsnag-android-core/src/main/CMakeLists.txt diff --git a/sdk/src/main/assets/include/bugsnag.h b/bugsnag-android-core/src/main/assets/include/bugsnag.h similarity index 100% rename from sdk/src/main/assets/include/bugsnag.h rename to bugsnag-android-core/src/main/assets/include/bugsnag.h diff --git a/sdk/src/main/assets/include/report.h b/bugsnag-android-core/src/main/assets/include/report.h similarity index 100% rename from sdk/src/main/assets/include/report.h rename to bugsnag-android-core/src/main/assets/include/report.h diff --git a/sdk/src/main/java/com/bugsnag/android/AppData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/AppData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java diff --git a/sdk/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java diff --git a/sdk/src/main/java/com/bugsnag/android/Async.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Async.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java diff --git a/sdk/src/main/java/com/bugsnag/android/BadResponseException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BadResponseException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java diff --git a/sdk/src/main/java/com/bugsnag/android/BeforeNotify.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BeforeNotify.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java diff --git a/sdk/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java diff --git a/sdk/src/main/java/com/bugsnag/android/BeforeSend.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BeforeSend.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java diff --git a/sdk/src/main/java/com/bugsnag/android/BeforeSendSession.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BeforeSendSession.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java diff --git a/sdk/src/main/java/com/bugsnag/android/Breadcrumb.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Breadcrumb.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java diff --git a/sdk/src/main/java/com/bugsnag/android/BreadcrumbType.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BreadcrumbType.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java diff --git a/sdk/src/main/java/com/bugsnag/android/Breadcrumbs.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Breadcrumbs.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java diff --git a/sdk/src/main/java/com/bugsnag/android/Bugsnag.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Bugsnag.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java diff --git a/sdk/src/main/java/com/bugsnag/android/BugsnagException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/BugsnagException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java diff --git a/sdk/src/main/java/com/bugsnag/android/CachedThread.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/CachedThread.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java diff --git a/sdk/src/main/java/com/bugsnag/android/Callback.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Callback.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java diff --git a/sdk/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Client.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java diff --git a/sdk/src/main/java/com/bugsnag/android/ConfigFactory.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ConfigFactory.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java diff --git a/sdk/src/main/java/com/bugsnag/android/Configuration.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Configuration.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java diff --git a/sdk/src/main/java/com/bugsnag/android/ConnectivityCompat.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ConnectivityCompat.kt rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt diff --git a/sdk/src/main/java/com/bugsnag/android/DateUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DateUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java diff --git a/sdk/src/main/java/com/bugsnag/android/DefaultDelivery.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DefaultDelivery.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java diff --git a/sdk/src/main/java/com/bugsnag/android/Delivery.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Delivery.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java diff --git a/sdk/src/main/java/com/bugsnag/android/DeliveryCompat.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DeliveryCompat.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java diff --git a/sdk/src/main/java/com/bugsnag/android/DeliveryFailureException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DeliveryFailureException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java diff --git a/sdk/src/main/java/com/bugsnag/android/DeliveryStyle.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DeliveryStyle.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java diff --git a/sdk/src/main/java/com/bugsnag/android/DeviceData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/DeviceData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java diff --git a/sdk/src/main/java/com/bugsnag/android/Error.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Error.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java diff --git a/sdk/src/main/java/com/bugsnag/android/ErrorReader.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ErrorReader.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java diff --git a/sdk/src/main/java/com/bugsnag/android/ErrorReportApiClient.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ErrorReportApiClient.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java diff --git a/sdk/src/main/java/com/bugsnag/android/ErrorStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ErrorStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java diff --git a/sdk/src/main/java/com/bugsnag/android/EventReceiver.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/EventReceiver.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java diff --git a/sdk/src/main/java/com/bugsnag/android/ExceptionHandler.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ExceptionHandler.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java diff --git a/sdk/src/main/java/com/bugsnag/android/Exceptions.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Exceptions.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java diff --git a/sdk/src/main/java/com/bugsnag/android/FileStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/FileStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java diff --git a/sdk/src/main/java/com/bugsnag/android/ForegroundDetector.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ForegroundDetector.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java diff --git a/sdk/src/main/java/com/bugsnag/android/HandledState.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/HandledState.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java diff --git a/sdk/src/main/java/com/bugsnag/android/IOUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/IOUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java diff --git a/sdk/src/main/java/com/bugsnag/android/InternalApi.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/InternalApi.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java diff --git a/sdk/src/main/java/com/bugsnag/android/JsonScope.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/JsonScope.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java diff --git a/sdk/src/main/java/com/bugsnag/android/JsonStream.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/JsonStream.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java diff --git a/sdk/src/main/java/com/bugsnag/android/JsonWriter.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/JsonWriter.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java diff --git a/sdk/src/main/java/com/bugsnag/android/Logger.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Logger.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java diff --git a/sdk/src/main/java/com/bugsnag/android/MapUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/MapUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java diff --git a/sdk/src/main/java/com/bugsnag/android/MetaData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/MetaData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java diff --git a/sdk/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/NativeInterface.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java diff --git a/sdk/src/main/java/com/bugsnag/android/NetworkException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/NetworkException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java diff --git a/sdk/src/main/java/com/bugsnag/android/Notifier.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Notifier.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java diff --git a/sdk/src/main/java/com/bugsnag/android/NotifyType.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/NotifyType.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java diff --git a/sdk/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java diff --git a/sdk/src/main/java/com/bugsnag/android/Report.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Report.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java diff --git a/sdk/src/main/java/com/bugsnag/android/Session.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Session.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java diff --git a/sdk/src/main/java/com/bugsnag/android/SessionStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/SessionStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java diff --git a/sdk/src/main/java/com/bugsnag/android/SessionTracker.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/SessionTracker.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java diff --git a/sdk/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java diff --git a/sdk/src/main/java/com/bugsnag/android/SessionTrackingPayload.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/SessionTrackingPayload.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java diff --git a/sdk/src/main/java/com/bugsnag/android/Severity.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Severity.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java diff --git a/sdk/src/main/java/com/bugsnag/android/Stacktrace.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/Stacktrace.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java diff --git a/sdk/src/main/java/com/bugsnag/android/StrictModeHandler.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/StrictModeHandler.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java diff --git a/sdk/src/main/java/com/bugsnag/android/ThreadSafe.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ThreadSafe.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java diff --git a/sdk/src/main/java/com/bugsnag/android/ThreadState.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ThreadState.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java diff --git a/sdk/src/main/java/com/bugsnag/android/User.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/User.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/User.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/User.java diff --git a/sdk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ndk/NativeBridge.java similarity index 100% rename from sdk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ndk/NativeBridge.java diff --git a/sdk/src/main/jni/bugsnag.c b/bugsnag-android-core/src/main/jni/bugsnag.c similarity index 100% rename from sdk/src/main/jni/bugsnag.c rename to bugsnag-android-core/src/main/jni/bugsnag.c diff --git a/sdk/src/main/jni/bugsnag_ndk.c b/bugsnag-android-core/src/main/jni/bugsnag_ndk.c similarity index 100% rename from sdk/src/main/jni/bugsnag_ndk.c rename to bugsnag-android-core/src/main/jni/bugsnag_ndk.c diff --git a/sdk/src/main/jni/bugsnag_ndk.h b/bugsnag-android-core/src/main/jni/bugsnag_ndk.h similarity index 100% rename from sdk/src/main/jni/bugsnag_ndk.h rename to bugsnag-android-core/src/main/jni/bugsnag_ndk.h diff --git a/sdk/src/main/jni/deps/parson/package.json b/bugsnag-android-core/src/main/jni/deps/parson/package.json similarity index 100% rename from sdk/src/main/jni/deps/parson/package.json rename to bugsnag-android-core/src/main/jni/deps/parson/package.json diff --git a/sdk/src/main/jni/deps/parson/parson.c b/bugsnag-android-core/src/main/jni/deps/parson/parson.c similarity index 100% rename from sdk/src/main/jni/deps/parson/parson.c rename to bugsnag-android-core/src/main/jni/deps/parson/parson.c diff --git a/sdk/src/main/jni/deps/parson/parson.h b/bugsnag-android-core/src/main/jni/deps/parson/parson.h similarity index 100% rename from sdk/src/main/jni/deps/parson/parson.h rename to bugsnag-android-core/src/main/jni/deps/parson/parson.h diff --git a/sdk/src/main/jni/external/libunwind/include/__libunwind_config.h b/bugsnag-android-core/src/main/jni/external/libunwind/include/__libunwind_config.h similarity index 100% rename from sdk/src/main/jni/external/libunwind/include/__libunwind_config.h rename to bugsnag-android-core/src/main/jni/external/libunwind/include/__libunwind_config.h diff --git a/sdk/src/main/jni/external/libunwind/include/libunwind.h b/bugsnag-android-core/src/main/jni/external/libunwind/include/libunwind.h similarity index 100% rename from sdk/src/main/jni/external/libunwind/include/libunwind.h rename to bugsnag-android-core/src/main/jni/external/libunwind/include/libunwind.h diff --git a/sdk/src/main/jni/handlers/anr_handler.c b/bugsnag-android-core/src/main/jni/handlers/anr_handler.c similarity index 100% rename from sdk/src/main/jni/handlers/anr_handler.c rename to bugsnag-android-core/src/main/jni/handlers/anr_handler.c diff --git a/sdk/src/main/jni/handlers/anr_handler.h b/bugsnag-android-core/src/main/jni/handlers/anr_handler.h similarity index 100% rename from sdk/src/main/jni/handlers/anr_handler.h rename to bugsnag-android-core/src/main/jni/handlers/anr_handler.h diff --git a/sdk/src/main/jni/handlers/cpp_handler.cpp b/bugsnag-android-core/src/main/jni/handlers/cpp_handler.cpp similarity index 100% rename from sdk/src/main/jni/handlers/cpp_handler.cpp rename to bugsnag-android-core/src/main/jni/handlers/cpp_handler.cpp diff --git a/sdk/src/main/jni/handlers/cpp_handler.h b/bugsnag-android-core/src/main/jni/handlers/cpp_handler.h similarity index 100% rename from sdk/src/main/jni/handlers/cpp_handler.h rename to bugsnag-android-core/src/main/jni/handlers/cpp_handler.h diff --git a/sdk/src/main/jni/handlers/signal_handler.c b/bugsnag-android-core/src/main/jni/handlers/signal_handler.c similarity index 100% rename from sdk/src/main/jni/handlers/signal_handler.c rename to bugsnag-android-core/src/main/jni/handlers/signal_handler.c diff --git a/sdk/src/main/jni/handlers/signal_handler.h b/bugsnag-android-core/src/main/jni/handlers/signal_handler.h similarity index 100% rename from sdk/src/main/jni/handlers/signal_handler.h rename to bugsnag-android-core/src/main/jni/handlers/signal_handler.h diff --git a/sdk/src/main/jni/metadata.c b/bugsnag-android-core/src/main/jni/metadata.c similarity index 100% rename from sdk/src/main/jni/metadata.c rename to bugsnag-android-core/src/main/jni/metadata.c diff --git a/sdk/src/main/jni/metadata.h b/bugsnag-android-core/src/main/jni/metadata.h similarity index 100% rename from sdk/src/main/jni/metadata.h rename to bugsnag-android-core/src/main/jni/metadata.h diff --git a/sdk/src/main/jni/report.c b/bugsnag-android-core/src/main/jni/report.c similarity index 100% rename from sdk/src/main/jni/report.c rename to bugsnag-android-core/src/main/jni/report.c diff --git a/sdk/src/main/jni/report.h b/bugsnag-android-core/src/main/jni/report.h similarity index 100% rename from sdk/src/main/jni/report.h rename to bugsnag-android-core/src/main/jni/report.h diff --git a/sdk/src/main/jni/utils/build.h b/bugsnag-android-core/src/main/jni/utils/build.h similarity index 100% rename from sdk/src/main/jni/utils/build.h rename to bugsnag-android-core/src/main/jni/utils/build.h diff --git a/sdk/src/main/jni/utils/crash_info.c b/bugsnag-android-core/src/main/jni/utils/crash_info.c similarity index 100% rename from sdk/src/main/jni/utils/crash_info.c rename to bugsnag-android-core/src/main/jni/utils/crash_info.c diff --git a/sdk/src/main/jni/utils/crash_info.h b/bugsnag-android-core/src/main/jni/utils/crash_info.h similarity index 100% rename from sdk/src/main/jni/utils/crash_info.h rename to bugsnag-android-core/src/main/jni/utils/crash_info.h diff --git a/sdk/src/main/jni/utils/migrate.h b/bugsnag-android-core/src/main/jni/utils/migrate.h similarity index 100% rename from sdk/src/main/jni/utils/migrate.h rename to bugsnag-android-core/src/main/jni/utils/migrate.h diff --git a/sdk/src/main/jni/utils/serializer.c b/bugsnag-android-core/src/main/jni/utils/serializer.c similarity index 100% rename from sdk/src/main/jni/utils/serializer.c rename to bugsnag-android-core/src/main/jni/utils/serializer.c diff --git a/sdk/src/main/jni/utils/serializer.h b/bugsnag-android-core/src/main/jni/utils/serializer.h similarity index 100% rename from sdk/src/main/jni/utils/serializer.h rename to bugsnag-android-core/src/main/jni/utils/serializer.h diff --git a/sdk/src/main/jni/utils/stack_unwinder.c b/bugsnag-android-core/src/main/jni/utils/stack_unwinder.c similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder.c rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder.c diff --git a/sdk/src/main/jni/utils/stack_unwinder.h b/bugsnag-android-core/src/main/jni/utils/stack_unwinder.h similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder.h rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder.h diff --git a/sdk/src/main/jni/utils/stack_unwinder_libcorkscrew.c b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.c similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libcorkscrew.c rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.c diff --git a/sdk/src/main/jni/utils/stack_unwinder_libcorkscrew.h b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.h similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libcorkscrew.h rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.h diff --git a/sdk/src/main/jni/utils/stack_unwinder_libunwind.c b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.c similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libunwind.c rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.c diff --git a/sdk/src/main/jni/utils/stack_unwinder_libunwind.h b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.h similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libunwind.h rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.h diff --git a/sdk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.cpp similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.cpp diff --git a/sdk/src/main/jni/utils/stack_unwinder_libunwindstack.h b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.h similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_libunwindstack.h rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.h diff --git a/sdk/src/main/jni/utils/stack_unwinder_simple.c b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.c similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_simple.c rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.c diff --git a/sdk/src/main/jni/utils/stack_unwinder_simple.h b/bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.h similarity index 100% rename from sdk/src/main/jni/utils/stack_unwinder_simple.h rename to bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.h diff --git a/sdk/src/main/jni/utils/string.c b/bugsnag-android-core/src/main/jni/utils/string.c similarity index 100% rename from sdk/src/main/jni/utils/string.c rename to bugsnag-android-core/src/main/jni/utils/string.c diff --git a/sdk/src/main/jni/utils/string.h b/bugsnag-android-core/src/main/jni/utils/string.h similarity index 100% rename from sdk/src/main/jni/utils/string.h rename to bugsnag-android-core/src/main/jni/utils/string.h diff --git a/sdk/src/test/CMakeLists.txt b/bugsnag-android-core/src/test/CMakeLists.txt similarity index 100% rename from sdk/src/test/CMakeLists.txt rename to bugsnag-android-core/src/test/CMakeLists.txt diff --git a/sdk/src/test/cpp/deps/greatest/greatest.h b/bugsnag-android-core/src/test/cpp/deps/greatest/greatest.h similarity index 100% rename from sdk/src/test/cpp/deps/greatest/greatest.h rename to bugsnag-android-core/src/test/cpp/deps/greatest/greatest.h diff --git a/sdk/src/test/cpp/deps/greatest/package.json b/bugsnag-android-core/src/test/cpp/deps/greatest/package.json similarity index 100% rename from sdk/src/test/cpp/deps/greatest/package.json rename to bugsnag-android-core/src/test/cpp/deps/greatest/package.json diff --git a/sdk/src/test/cpp/main.c b/bugsnag-android-core/src/test/cpp/main.c similarity index 100% rename from sdk/src/test/cpp/main.c rename to bugsnag-android-core/src/test/cpp/main.c diff --git a/sdk/src/test/cpp/test_breadcrumbs.c b/bugsnag-android-core/src/test/cpp/test_breadcrumbs.c similarity index 100% rename from sdk/src/test/cpp/test_breadcrumbs.c rename to bugsnag-android-core/src/test/cpp/test_breadcrumbs.c diff --git a/sdk/src/test/cpp/test_utils_serialize.c b/bugsnag-android-core/src/test/cpp/test_utils_serialize.c similarity index 100% rename from sdk/src/test/cpp/test_utils_serialize.c rename to bugsnag-android-core/src/test/cpp/test_utils_serialize.c diff --git a/sdk/src/test/cpp/test_utils_string.c b/bugsnag-android-core/src/test/cpp/test_utils_string.c similarity index 100% rename from sdk/src/test/cpp/test_utils_string.c rename to bugsnag-android-core/src/test/cpp/test_utils_string.c diff --git a/sdk/src/main/jni/external/libunwindstack b/sdk/src/main/jni/external/libunwindstack deleted file mode 160000 index d781d7b325..0000000000 --- a/sdk/src/main/jni/external/libunwindstack +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d781d7b325a6f64e4f63fc4e269a19944c7fe688 diff --git a/settings.gradle b/settings.gradle index 6c016998f5..beaf8393dd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -include ":sdk", ":sdkAppExample" +include ':bugsnag-android-core', ":sdkAppExample" project(":sdkAppExample").projectDir = new File("examples/sdk-app-example") From b6d8fa747d08487585a1875f91a7853fc3276eef Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 8 Jul 2019 14:36:31 +0100 Subject: [PATCH 02/22] create initial gradle skeleton for modules --- .../CMakeLists.txt | 0 bugsnag-android-anr/build.gradle | 20 +++++ bugsnag-android-anr/proguard-rules.pro | 1 + .../src/main/AndroidManifest.xml | 2 + bugsnag-android-core/.gitignore | 1 - bugsnag-android-core/build.gradle | 83 +------------------ bugsnag-android-core/lint-baseline.xml | 4 - .../com/bugsnag/android/Configuration.java | 2 +- bugsnag-android-ndk/CMakeLists.txt | 8 ++ bugsnag-android-ndk/build.gradle | 20 +++++ bugsnag-android-ndk/proguard-rules.pro | 1 + .../src/main/AndroidManifest.xml | 2 + build.gradle | 46 +++++++++- examples/sdk-app-example/build.gradle | 37 ++------- examples/sdk-app-example/checkstyle.gradle | 11 --- .../example/ExampleActivity.kt | 29 ++++--- settings.gradle | 2 +- 17 files changed, 128 insertions(+), 141 deletions(-) rename {bugsnag-android-core => bugsnag-android-anr}/CMakeLists.txt (100%) create mode 100644 bugsnag-android-anr/build.gradle create mode 100644 bugsnag-android-anr/proguard-rules.pro create mode 100644 bugsnag-android-anr/src/main/AndroidManifest.xml delete mode 100644 bugsnag-android-core/.gitignore delete mode 100644 bugsnag-android-core/lint-baseline.xml create mode 100644 bugsnag-android-ndk/CMakeLists.txt create mode 100644 bugsnag-android-ndk/build.gradle create mode 100644 bugsnag-android-ndk/proguard-rules.pro create mode 100644 bugsnag-android-ndk/src/main/AndroidManifest.xml delete mode 100644 examples/sdk-app-example/checkstyle.gradle diff --git a/bugsnag-android-core/CMakeLists.txt b/bugsnag-android-anr/CMakeLists.txt similarity index 100% rename from bugsnag-android-core/CMakeLists.txt rename to bugsnag-android-anr/CMakeLists.txt diff --git a/bugsnag-android-anr/build.gradle b/bugsnag-android-anr/build.gradle new file mode 100644 index 0000000000..b70c457f04 --- /dev/null +++ b/bugsnag-android-anr/build.gradle @@ -0,0 +1,20 @@ +apply plugin: "com.android.library" +apply plugin: "kotlin-android" +apply plugin: "io.gitlab.arturbosch.detekt" + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.ext.minSdkVersion + externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" + ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : + ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] + } + externalNativeBuild.cmake.path = "CMakeLists.txt" +} + +apply from: "../gradle/dependencies.gradle" +apply from: "../gradle/release.gradle" +apply from: "../gradle/detekt.gradle" +apply from: "../gradle/checkstyle.gradle" diff --git a/bugsnag-android-anr/proguard-rules.pro b/bugsnag-android-anr/proguard-rules.pro new file mode 100644 index 0000000000..bc30bd7cdc --- /dev/null +++ b/bugsnag-android-anr/proguard-rules.pro @@ -0,0 +1 @@ +-keepattributes LineNumberTable,SourceFile diff --git a/bugsnag-android-anr/src/main/AndroidManifest.xml b/bugsnag-android-anr/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..c0e1ef95fa --- /dev/null +++ b/bugsnag-android-anr/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/bugsnag-android-core/.gitignore b/bugsnag-android-core/.gitignore deleted file mode 100644 index 796b96d1c4..0000000000 --- a/bugsnag-android-core/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/bugsnag-android-core/build.gradle b/bugsnag-android-core/build.gradle index 146c3645fe..a8ba9d778f 100644 --- a/bugsnag-android-core/build.gradle +++ b/bugsnag-android-core/build.gradle @@ -1,90 +1,13 @@ -plugins { - id("io.gitlab.arturbosch.detekt").version("1.0.0-RC14") -} - apply plugin: "com.android.library" apply plugin: "kotlin-android" - -repositories { - google() - mavenCentral() - jcenter() -} +apply plugin: "io.gitlab.arturbosch.detekt" android { - compileSdkVersion Integer.parseInt(project.ANDROID_COMPILE_SDK_VERSION) - - defaultConfig { - // Note minSdkVersion must be >=21 for 64 bit architectures - minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK_VERSION) - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - consumerProguardFiles "proguard-rules.pro" - - externalNativeBuild { - cmake { - arguments "-DANDROID_CPP_FEATURES=exceptions", - "-DANDROID_STL=c++_static" - } - } - - ndk { - if (project.hasProperty("ABI_FILTERS")) { - abiFilters project.ABI_FILTERS.split(",") - } else { - abiFilters "arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64" - } - } - } - - lintOptions { - abortOnError true - warningsAsErrors true - checkAllWarnings true - baseline file("lint-baseline.xml") - } - - externalNativeBuild { - cmake { - path "CMakeLists.txt" - } - } - - buildTypes { - debug { - testCoverageEnabled = true - } - } - - buildTypes.each { buildType -> - boolean detectNdkCrashes = project.hasProperty("releaseNdkArtefact") - buildType.buildConfigField("boolean", "DETECT_NDK_CRASHES", "$detectNdkCrashes") - } - - testOptions.unitTests.all { - testLogging { - events "passed", "skipped", "failed", "standardOut", "standardError" - outputs.upToDateWhen {false} - showStandardStreams = true - info.events = ["passed", "skipped", "failed", "standardOut", "standardError"] - } - } -} - -gradle.projectsEvaluated { - tasks.withType(JavaCompile) { - options.compilerArgs << "-Xlint:all" << "-Werror" - } -} - -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { - kotlinOptions { - allWarningsAsErrors = true - } + compileSdkVersion rootProject.ext.compileSdkVersion + defaultConfig.minSdkVersion rootProject.ext.minSdkVersion } apply from: "../gradle/dependencies.gradle" apply from: "../gradle/release.gradle" apply from: "../gradle/detekt.gradle" -apply from: "../gradle/dexcount.gradle" -apply from: "../gradle/coveralls.gradle" apply from: "../gradle/checkstyle.gradle" diff --git a/bugsnag-android-core/lint-baseline.xml b/bugsnag-android-core/lint-baseline.xml deleted file mode 100644 index b51ce56bf2..0000000000 --- a/bugsnag-android-core/lint-baseline.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java index 8929a11418..43032b1019 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java @@ -49,7 +49,7 @@ public class Configuration extends Observable implements Observer { private boolean automaticallyCollectBreadcrumbs = true; private boolean detectAnrs = false; - private boolean detectNdkCrashes = BuildConfig.DETECT_NDK_CRASHES; + private boolean detectNdkCrashes = false; private long anrThresholdMs = 5000; @NonNull diff --git a/bugsnag-android-ndk/CMakeLists.txt b/bugsnag-android-ndk/CMakeLists.txt new file mode 100644 index 0000000000..cd96ddfd6a --- /dev/null +++ b/bugsnag-android-ndk/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.4.1) +project(TEST) +add_subdirectory(src/main) + +if(${CMAKE_BUILD_TYPE} STREQUAL Debug) + enable_testing() + add_subdirectory(src/test) +endif() diff --git a/bugsnag-android-ndk/build.gradle b/bugsnag-android-ndk/build.gradle new file mode 100644 index 0000000000..b70c457f04 --- /dev/null +++ b/bugsnag-android-ndk/build.gradle @@ -0,0 +1,20 @@ +apply plugin: "com.android.library" +apply plugin: "kotlin-android" +apply plugin: "io.gitlab.arturbosch.detekt" + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.ext.minSdkVersion + externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" + ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : + ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] + } + externalNativeBuild.cmake.path = "CMakeLists.txt" +} + +apply from: "../gradle/dependencies.gradle" +apply from: "../gradle/release.gradle" +apply from: "../gradle/detekt.gradle" +apply from: "../gradle/checkstyle.gradle" diff --git a/bugsnag-android-ndk/proguard-rules.pro b/bugsnag-android-ndk/proguard-rules.pro new file mode 100644 index 0000000000..bc30bd7cdc --- /dev/null +++ b/bugsnag-android-ndk/proguard-rules.pro @@ -0,0 +1 @@ +-keepattributes LineNumberTable,SourceFile diff --git a/bugsnag-android-ndk/src/main/AndroidManifest.xml b/bugsnag-android-ndk/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..c0e1ef95fa --- /dev/null +++ b/bugsnag-android-ndk/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/build.gradle b/build.gradle index 7a44b87f61..5493c75179 100644 --- a/build.gradle +++ b/build.gradle @@ -8,12 +8,14 @@ buildscript { ext.agpVersion = "3.3.0" dependencies { - classpath "com.android.tools.build:gradle:$agpVersion" + classpath "com.android.tools.build:gradle:${agpVersion}" classpath "com.github.dcendents:android-maven-gradle-plugin:2.0" classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4" classpath "org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2" classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.5" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC16" + classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.2.0" } } allprojects { @@ -22,8 +24,50 @@ allprojects { mavenCentral() jcenter() } + + gradle.projectsEvaluated { + tasks.withType(JavaCompile) { + options.compilerArgs << "-Xlint:all" << "-Werror" + } + + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { + kotlinOptions { + allWarningsAsErrors = true + } + } + } +} + +subprojects { proj -> + afterEvaluate { + configureAndroidProject(proj) + } } + +private void configureAndroidProject(Project proj) { + def lintOptions = proj.android.lintOptions + lintOptions.abortOnError = true + lintOptions.warningsAsErrors = true + lintOptions.checkAllWarnings = true + + def defaultConfig = proj.android.defaultConfig + defaultConfig.testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" + defaultConfig.consumerProguardFiles = ["proguard-rules.pro"] + + proj.android.testOptions.unitTests.all { + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + info.events = ["passed", "skipped", "failed", "standardOut", "standardError"] + } + } +} + ext { + // Note minSdkVersion must be >=21 for 64 bit architectures + compileSdkVersion = 28 + minSdkVersion = 14 supportLibVersion = "28.0.0" supportTestVersion = "0.5" espressoVersion = "2.2.2" diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index 454da62996..0324dc4713 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -1,20 +1,8 @@ -buildscript { - repositories { - google() - mavenCentral() - jcenter() - } - dependencies { - classpath "com.android.tools.build:gradle:$agpVersion" - classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.2.0" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - apply plugin: "com.android.application" apply plugin: "kotlin-android" repositories { + mavenLocal() google() mavenCentral() jcenter() @@ -29,11 +17,11 @@ android { storePassword "password" } } - compileSdkVersion 28 + compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { - minSdkVersion 14 - targetSdkVersion 28 + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.compileSdkVersion testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.config ndk { @@ -47,15 +35,8 @@ android { signingConfig signingConfigs.config } } - lintOptions { - disable "OnClick" - abortOnError true - } - externalNativeBuild { - cmake { - path "CMakeLists.txt" - } - } + lintOptions.disable "OnClick" + externalNativeBuild.cmake.path "CMakeLists.txt" } // set this value to true if you wish to test with a local artefact @@ -74,12 +55,8 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } -apply from: "checkstyle.gradle" apply plugin: "com.bugsnag.android.gradle" - -bugsnag { - failOnUploadError false -} +bugsnag.failOnUploadError = false if (usingLocalArtefact) { apply from: "ndk_local_setup.gradle" diff --git a/examples/sdk-app-example/checkstyle.gradle b/examples/sdk-app-example/checkstyle.gradle deleted file mode 100644 index 3fbc3b3875..0000000000 --- a/examples/sdk-app-example/checkstyle.gradle +++ /dev/null @@ -1,11 +0,0 @@ -apply plugin: 'checkstyle' - -checkstyle { - toolVersion = "6.16" -} -task("checkstyle", type: Checkstyle) { - configFile rootProject.file("config/checkstyle/checkstyle.xml") - source "src/javaExample/java" - include "**/*.java" - classpath = files() -} diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt index 0076014f89..7223113b7c 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt @@ -50,15 +50,13 @@ class ExampleActivity : AppCompatActivity() { // Add some global metaData Bugsnag.addToTab("user", "age", 31) - - // Mark the following packages as part of your app - Bugsnag.setProjectPackages("com.bugsnag.android.example", "com.bugsnag.android.other") } /** * Throws an unhandled Exception. Bugsnag will automatically capture any uncaught exceptions * in your app and send an error report. */ + @Suppress("UNUSED_PARAMETER") fun crashUnhandled(view: View) { throw CrashyClass.crash("Fatal Crash") } @@ -67,6 +65,7 @@ class ExampleActivity : AppCompatActivity() { * You can call [Bugsnag.notify] to send an error report for exceptions * which are already handled by your app. */ + @Suppress("UNUSED_PARAMETER") fun crashHandled(view: View) { try { throw RuntimeException("Non-Fatal Crash") @@ -80,6 +79,7 @@ class ExampleActivity : AppCompatActivity() { /** * Delivers an error notification from native (C/C++) code */ + @Suppress("UNUSED_PARAMETER") fun notifyNativeHandled(view: View) { notifyFromCXX() } @@ -88,6 +88,7 @@ class ExampleActivity : AppCompatActivity() { * The severity of error reports can be altered. This can be useful for capturing handled * exceptions which occur often but are not visible to the user. */ + @Suppress("UNUSED_PARAMETER") fun crashWithCustomSeverity(view: View) { val e = RuntimeException("Error Report with altered Severity") Bugsnag.notify(e, Severity.INFO) @@ -98,6 +99,7 @@ class ExampleActivity : AppCompatActivity() { * User details can be added globally, which will then appear in all error reports sent * to the Bugsnag dashboard. */ + @Suppress("UNUSED_PARAMETER") fun crashWithUserDetails(view: View) { Bugsnag.setUser("123456", "joebloggs@example.com", "Joe Bloggs") val e = RuntimeException("Error Report with User Info") @@ -110,11 +112,15 @@ class ExampleActivity : AppCompatActivity() { * [Bugsnag.notify], as shown below, or registering a global callback * with [Bugsnag.beforeNotify] that adds metadata to the report. */ + @Suppress("UNUSED_PARAMETER") fun crashWithMetadata(view: View) { val e = RuntimeException("Error report with Additional Metadata") - val metaData = generateUserMetaData() - Bugsnag.notify(e, Severity.ERROR, metaData) + Bugsnag.notify(e) {report -> + val error = report.error + error?.severity = Severity.ERROR + error?.metaData?.addToTab("CustomMetaData", "HasLaunchedGameTutorial", true) + } displayToastNotification() } @@ -123,6 +129,7 @@ class ExampleActivity : AppCompatActivity() { * up to a crash. You can log your own breadcrumbs which will display on the Bugsnag Dashboard - * activity lifecycle callbacks and system intents are also captured automatically. */ + @Suppress("UNUSED_PARAMETER") fun crashWithBreadcrumbs(view: View) { Bugsnag.leaveBreadcrumb("LoginButtonClick") @@ -139,13 +146,14 @@ class ExampleActivity : AppCompatActivity() { * When sending a handled error, a callback can be registered, which allows the Error Report * to be modified before it is sent. */ + @Suppress("UNUSED_PARAMETER") fun crashWithCallback(view: View) { val e = RuntimeException("Customized Error Report") - Bugsnag.notify(e, Callback { report -> + Bugsnag.notify(e) { report -> // modify the report report.error?.metaData = generateUserMetaData() - }) + } displayToastNotification() } @@ -163,6 +171,7 @@ class ExampleActivity : AppCompatActivity() { } } + @Suppress("UNUSED_PARAMETER") fun readDocs(view: View) { val uri = Uri.parse("https://docs.bugsnag.com/platforms/android/sdk/") val intent = Intent(Intent.ACTION_VIEW, uri) @@ -172,7 +181,7 @@ class ExampleActivity : AppCompatActivity() { private fun generateUserMetaData(): MetaData { val completedLevels = Arrays.asList("Level 1 - The Beginning", "Level 2 - Tower Defence") val userDetails = HashMap() - userDetails.put("playerName", "Joe Bloggs the Invincible") + userDetails["playerName"] = "Joe Bloggs the Invincible" val metaData = MetaData() metaData.addToTab("CustomMetaData", "HasLaunchedGameTutorial", true) @@ -180,8 +189,4 @@ class ExampleActivity : AppCompatActivity() { metaData.addToTab("CustomMetaData", "CompletedLevels", completedLevels) return metaData } - - fun sendErrorWithCallback(callback: Callback) { - Bugsnag.notify(RuntimeException(), callback) - } } diff --git a/settings.gradle b/settings.gradle index beaf8393dd..26679c9dd2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -include ':bugsnag-android-core', ":sdkAppExample" +include ":bugsnag-android-core", ":bugsnag-android-anr", ":bugsnag-android-ndk", ":sdkAppExample" project(":sdkAppExample").projectDir = new File("examples/sdk-app-example") From 02e250ea4d3f807233bb740e5f39853195ec2700 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 8 Jul 2019 14:58:39 +0100 Subject: [PATCH 03/22] move ndk to bugsnag-android-ndk module --- .gitmodules | 7 +++- bugsnag-android-anr/CMakeLists.txt | 8 ---- bugsnag-android-anr/build.gradle | 8 ++-- bugsnag-android-core/proguard-rules.pro | 1 - .../src/main/AndroidManifest.xml | 4 +- .../com/bugsnag/android/NativeInterface.java | 18 ++++++-- bugsnag-android-ndk/build.gradle | 4 ++ .../package.json | 0 bugsnag-android-ndk/proguard-rules.pro | 1 + .../bugsnag/android/ndk}/NativeCXXTest.java | 2 - .../src/main/CMakeLists.txt | 42 +++++++++---------- .../src/main/assets/include/bugsnag.h | 0 .../src/main/assets/include/report.h | 0 .../com/bugsnag/android/ndk/NativeBridge.java | 10 ++--- .../src/main/jni/bugsnag.c | 0 .../src/main/jni/bugsnag_ndk.c | 0 .../src/main/jni/bugsnag_ndk.h | 0 .../src/main/jni/deps/parson/package.json | 0 .../src/main/jni/deps/parson/parson.c | 0 .../src/main/jni/deps/parson/parson.h | 0 .../libunwind/include/__libunwind_config.h | 0 .../external/libunwind/include/libunwind.h | 4 +- .../src/main/jni/external/libunwindstack-ndk | 1 + .../src/main/jni/handlers/anr_handler.c | 0 .../src/main/jni/handlers/anr_handler.h | 0 .../src/main/jni/handlers/cpp_handler.cpp | 0 .../src/main/jni/handlers/cpp_handler.h | 0 .../src/main/jni/handlers/signal_handler.c | 0 .../src/main/jni/handlers/signal_handler.h | 0 .../src/main/jni/metadata.c | 0 .../src/main/jni/metadata.h | 0 .../src/main/jni/report.c | 0 .../src/main/jni/report.h | 0 .../src/main/jni/utils/build.h | 0 .../src/main/jni/utils/crash_info.c | 0 .../src/main/jni/utils/crash_info.h | 0 .../src/main/jni/utils/migrate.h | 0 .../src/main/jni/utils/serializer.c | 0 .../src/main/jni/utils/serializer.h | 2 +- .../src/main/jni/utils/stack_unwinder.c | 0 .../src/main/jni/utils/stack_unwinder.h | 0 .../jni/utils/stack_unwinder_libcorkscrew.c | 2 +- .../jni/utils/stack_unwinder_libcorkscrew.h | 0 .../main/jni/utils/stack_unwinder_libunwind.c | 2 +- .../main/jni/utils/stack_unwinder_libunwind.h | 0 .../utils/stack_unwinder_libunwindstack.cpp | 2 +- .../jni/utils/stack_unwinder_libunwindstack.h | 0 .../main/jni/utils/stack_unwinder_simple.c | 2 +- .../main/jni/utils/stack_unwinder_simple.h | 0 .../src/main/jni/utils/string.c | 0 .../src/main/jni/utils/string.h | 0 .../src/test/CMakeLists.txt | 2 +- .../src/test/cpp/deps/greatest/greatest.h | 0 .../src/test/cpp/deps/greatest/package.json | 0 .../src/test/cpp/main.c | 0 .../src/test/cpp/test_breadcrumbs.c | 0 .../src/test/cpp/test_utils_serialize.c | 0 .../src/test/cpp/test_utils_string.c | 0 58 files changed, 65 insertions(+), 57 deletions(-) delete mode 100644 bugsnag-android-anr/CMakeLists.txt rename {bugsnag-android-core => bugsnag-android-ndk}/package.json (100%) rename {bugsnag-android-core/src/androidTest/java/com/bugsnag/android => bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk}/NativeCXXTest.java (90%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/CMakeLists.txt (62%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/assets/include/bugsnag.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/assets/include/report.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/java/com/bugsnag/android/ndk/NativeBridge.java (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/bugsnag.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/bugsnag_ndk.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/bugsnag_ndk.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/deps/parson/package.json (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/deps/parson/parson.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/deps/parson/parson.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/external/libunwind/include/__libunwind_config.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/external/libunwind/include/libunwind.h (99%) create mode 160000 bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/anr_handler.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/anr_handler.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/cpp_handler.cpp (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/cpp_handler.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/signal_handler.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/handlers/signal_handler.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/metadata.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/metadata.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/report.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/report.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/build.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/crash_info.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/crash_info.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/migrate.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/serializer.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/serializer.h (95%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libcorkscrew.c (99%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libcorkscrew.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libunwind.c (99%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libunwind.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libunwindstack.cpp (98%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_libunwindstack.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_simple.c (96%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/stack_unwinder_simple.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/string.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/main/jni/utils/string.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/CMakeLists.txt (93%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/deps/greatest/greatest.h (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/deps/greatest/package.json (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/main.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/test_breadcrumbs.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/test_utils_serialize.c (100%) rename {bugsnag-android-core => bugsnag-android-ndk}/src/test/cpp/test_utils_string.c (100%) diff --git a/.gitmodules b/.gitmodules index 3d29362928..79f86a35ab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ -[submodule "sdk/src/main/jni/external/libunwindstack"] - path = sdk/src/main/jni/external/libunwindstack +[submodule "bugsnag-android-ndk/src/main/jni/external/libunwindstack"] + path = bugsnag-android-ndk/src/main/jni/external/libunwindstack + url = https://github.com/bugsnag/libunwindstack-ndk +[submodule "bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk"] + path = bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk url = https://github.com/bugsnag/libunwindstack-ndk diff --git a/bugsnag-android-anr/CMakeLists.txt b/bugsnag-android-anr/CMakeLists.txt deleted file mode 100644 index cd96ddfd6a..0000000000 --- a/bugsnag-android-anr/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.4.1) -project(TEST) -add_subdirectory(src/main) - -if(${CMAKE_BUILD_TYPE} STREQUAL Debug) - enable_testing() - add_subdirectory(src/test) -endif() diff --git a/bugsnag-android-anr/build.gradle b/bugsnag-android-anr/build.gradle index b70c457f04..7355d2c1c2 100644 --- a/bugsnag-android-anr/build.gradle +++ b/bugsnag-android-anr/build.gradle @@ -7,11 +7,11 @@ android { defaultConfig { minSdkVersion rootProject.ext.minSdkVersion - externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" - ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : - ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] } - externalNativeBuild.cmake.path = "CMakeLists.txt" +} + +dependencies { + api project(":bugsnag-android-core") } apply from: "../gradle/dependencies.gradle" diff --git a/bugsnag-android-core/proguard-rules.pro b/bugsnag-android-core/proguard-rules.pro index cc792bffa1..74acea78f5 100644 --- a/bugsnag-android-core/proguard-rules.pro +++ b/bugsnag-android-core/proguard-rules.pro @@ -4,4 +4,3 @@ -keep class com.bugsnag.android.Breadcrumbs { *; } -keep class com.bugsnag.android.BreadcrumbType { *; } -keep class com.bugsnag.android.Severity { *; } --keep class com.bugsnag.android.ndk.NativeBridge { *; } diff --git a/bugsnag-android-core/src/main/AndroidManifest.xml b/bugsnag-android-core/src/main/AndroidManifest.xml index 30e7fcebe8..68ea68b7b3 100644 --- a/bugsnag-android-core/src/main/AndroidManifest.xml +++ b/bugsnag-android-core/src/main/AndroidManifest.xml @@ -1,8 +1,6 @@ + package="com.bugsnag.android"> diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java index 86767cac62..05377d2671 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java @@ -1,7 +1,5 @@ package com.bugsnag.android; -import com.bugsnag.android.ndk.NativeBridge; - import android.annotation.SuppressLint; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -12,6 +10,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Observer; import java.util.Queue; /** @@ -170,7 +169,20 @@ public static void setClient(@NonNull Client client) { */ public static void configureClientObservers(@NonNull Client client) { setClient(client); - client.addObserver(new NativeBridge()); + + try { + String className = "com.bugsnag.android.ndk.NativeBridge"; + Class clz = Class.forName(className); + Observer observer = (Observer) clz.newInstance(); + client.addObserver(observer); + } catch (ClassNotFoundException exception) { + // ignore this one, will happen if the NDK plugin is not present + Logger.info("Bugsnag NDK integration not available"); + } catch (InstantiationException exception) { + Logger.warn("Failed to instantiate NDK observer", exception); + } catch (IllegalAccessException exception) { + Logger.warn("Could not access NDK observer", exception); + } client.sendNativeSetupNotification(); } diff --git a/bugsnag-android-ndk/build.gradle b/bugsnag-android-ndk/build.gradle index b70c457f04..00f63c2171 100644 --- a/bugsnag-android-ndk/build.gradle +++ b/bugsnag-android-ndk/build.gradle @@ -14,6 +14,10 @@ android { externalNativeBuild.cmake.path = "CMakeLists.txt" } +dependencies { + api project(":bugsnag-android-core") +} + apply from: "../gradle/dependencies.gradle" apply from: "../gradle/release.gradle" apply from: "../gradle/detekt.gradle" diff --git a/bugsnag-android-core/package.json b/bugsnag-android-ndk/package.json similarity index 100% rename from bugsnag-android-core/package.json rename to bugsnag-android-ndk/package.json diff --git a/bugsnag-android-ndk/proguard-rules.pro b/bugsnag-android-ndk/proguard-rules.pro index bc30bd7cdc..7f69d385d1 100644 --- a/bugsnag-android-ndk/proguard-rules.pro +++ b/bugsnag-android-ndk/proguard-rules.pro @@ -1 +1,2 @@ -keepattributes LineNumberTable,SourceFile +-keep class com.bugsnag.android.ndk.NativeBridge { *; } diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java b/bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java similarity index 90% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java rename to bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java index b385f95f94..dd2f0b41da 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeCXXTest.java +++ b/bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java @@ -1,7 +1,5 @@ package com.bugsnag.android.ndk; -import static org.junit.Assert.assertFalse; - import org.junit.Test; public class NativeCXXTest { diff --git a/bugsnag-android-core/src/main/CMakeLists.txt b/bugsnag-android-ndk/src/main/CMakeLists.txt similarity index 62% rename from bugsnag-android-core/src/main/CMakeLists.txt rename to bugsnag-android-ndk/src/main/CMakeLists.txt index fc2834f854..9205f95301 100644 --- a/bugsnag-android-core/src/main/CMakeLists.txt +++ b/bugsnag-android-ndk/src/main/CMakeLists.txt @@ -6,29 +6,29 @@ add_library( # Specifies the name of the library. SHARED # Provides a relative path to your source file(s). - jni/bugsnag_ndk.c - jni/bugsnag.c - jni/metadata.c - jni/report.c - jni/handlers/signal_handler.c - jni/handlers/anr_handler.c - jni/handlers/cpp_handler.cpp - jni/utils/crash_info.c - jni/utils/stack_unwinder.c - jni/utils/stack_unwinder_libunwindstack.cpp - jni/utils/stack_unwinder_libcorkscrew.c - jni/utils/stack_unwinder_libunwind.c - jni/utils/stack_unwinder_simple.c - jni/utils/serializer.c - jni/utils/string.c - jni/deps/parson/parson.c + jni/bugsnag_ndk.c + jni/bugsnag.c + jni/metadata.c + jni/report.c + jni/handlers/signal_handler.c + jni/handlers/anr_handler.c + jni/handlers/cpp_handler.cpp + jni/utils/crash_info.c + jni/utils/stack_unwinder.c + jni/utils/stack_unwinder_libunwindstack.cpp + jni/utils/stack_unwinder_libcorkscrew.c + jni/utils/stack_unwinder_libunwind.c + jni/utils/stack_unwinder_simple.c + jni/utils/serializer.c + jni/utils/string.c + jni/deps/parson/parson.c ) include_directories( - jni/ - jni/deps - jni/external/libunwind/include - jni/external/libunwindstack/include + jni + jni/deps + jni/external/libunwind/include + jni/external/libunwindstack-ndk/include ) target_include_directories(bugsnag-ndk PRIVATE ${BUGSNAG_DIR}/assets/include) @@ -52,7 +52,7 @@ set_target_properties(bugsnag-ndk COMPILE_OPTIONS -Werror -Wall -pedantic) -add_subdirectory(jni/external/libunwindstack/cmake) +add_subdirectory(jni/external/libunwindstack-ndk/cmake) target_link_libraries(bugsnag-ndk unwindstack) if(${ANDROID_ABI} STREQUAL "armeabi" OR ${ANDROID_ABI} STREQUAL "armeabi-v7a") add_library(libunwind STATIC IMPORTED) diff --git a/bugsnag-android-core/src/main/assets/include/bugsnag.h b/bugsnag-android-ndk/src/main/assets/include/bugsnag.h similarity index 100% rename from bugsnag-android-core/src/main/assets/include/bugsnag.h rename to bugsnag-android-ndk/src/main/assets/include/bugsnag.h diff --git a/bugsnag-android-core/src/main/assets/include/report.h b/bugsnag-android-ndk/src/main/assets/include/report.h similarity index 100% rename from bugsnag-android-core/src/main/assets/include/report.h rename to bugsnag-android-ndk/src/main/assets/include/report.h diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ndk/NativeBridge.java rename to bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java index 997abcd4a9..0e26bbecba 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/ndk/NativeBridge.java +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java @@ -1,15 +1,15 @@ package com.bugsnag.android.ndk; -import com.bugsnag.android.Breadcrumb; -import com.bugsnag.android.Configuration; -import com.bugsnag.android.MetaData; -import com.bugsnag.android.NativeInterface; - import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; +import com.bugsnag.android.Breadcrumb; +import com.bugsnag.android.Configuration; +import com.bugsnag.android.MetaData; +import com.bugsnag.android.NativeInterface; + import java.io.File; import java.nio.ByteBuffer; import java.util.List; diff --git a/bugsnag-android-core/src/main/jni/bugsnag.c b/bugsnag-android-ndk/src/main/jni/bugsnag.c similarity index 100% rename from bugsnag-android-core/src/main/jni/bugsnag.c rename to bugsnag-android-ndk/src/main/jni/bugsnag.c diff --git a/bugsnag-android-core/src/main/jni/bugsnag_ndk.c b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c similarity index 100% rename from bugsnag-android-core/src/main/jni/bugsnag_ndk.c rename to bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c diff --git a/bugsnag-android-core/src/main/jni/bugsnag_ndk.h b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.h similarity index 100% rename from bugsnag-android-core/src/main/jni/bugsnag_ndk.h rename to bugsnag-android-ndk/src/main/jni/bugsnag_ndk.h diff --git a/bugsnag-android-core/src/main/jni/deps/parson/package.json b/bugsnag-android-ndk/src/main/jni/deps/parson/package.json similarity index 100% rename from bugsnag-android-core/src/main/jni/deps/parson/package.json rename to bugsnag-android-ndk/src/main/jni/deps/parson/package.json diff --git a/bugsnag-android-core/src/main/jni/deps/parson/parson.c b/bugsnag-android-ndk/src/main/jni/deps/parson/parson.c similarity index 100% rename from bugsnag-android-core/src/main/jni/deps/parson/parson.c rename to bugsnag-android-ndk/src/main/jni/deps/parson/parson.c diff --git a/bugsnag-android-core/src/main/jni/deps/parson/parson.h b/bugsnag-android-ndk/src/main/jni/deps/parson/parson.h similarity index 100% rename from bugsnag-android-core/src/main/jni/deps/parson/parson.h rename to bugsnag-android-ndk/src/main/jni/deps/parson/parson.h diff --git a/bugsnag-android-core/src/main/jni/external/libunwind/include/__libunwind_config.h b/bugsnag-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h similarity index 100% rename from bugsnag-android-core/src/main/jni/external/libunwind/include/__libunwind_config.h rename to bugsnag-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h diff --git a/bugsnag-android-core/src/main/jni/external/libunwind/include/libunwind.h b/bugsnag-android-ndk/src/main/jni/external/libunwind/include/libunwind.h similarity index 99% rename from bugsnag-android-core/src/main/jni/external/libunwind/include/libunwind.h rename to bugsnag-android-ndk/src/main/jni/external/libunwind/include/libunwind.h index 555b1d3b15..29917662a8 100644 --- a/bugsnag-android-core/src/main/jni/external/libunwind/include/libunwind.h +++ b/bugsnag-android-ndk/src/main/jni/external/libunwind/include/libunwind.h @@ -12,7 +12,7 @@ //===----------------------------------------------------------------------===// #ifndef __LIBUNWIND__ #define __LIBUNWIND__ -#include <__libunwind_config.h> +#include "__libunwind_config.h" #include #include #ifdef __APPLE__ @@ -505,4 +505,4 @@ enum { UNW_OR1K_R30 = 30, UNW_OR1K_R31 = 31, }; -#endif \ No newline at end of file +#endif diff --git a/bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk b/bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk new file mode 160000 index 0000000000..d781d7b325 --- /dev/null +++ b/bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk @@ -0,0 +1 @@ +Subproject commit d781d7b325a6f64e4f63fc4e269a19944c7fe688 diff --git a/bugsnag-android-core/src/main/jni/handlers/anr_handler.c b/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/anr_handler.c rename to bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c diff --git a/bugsnag-android-core/src/main/jni/handlers/anr_handler.h b/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/anr_handler.h rename to bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h diff --git a/bugsnag-android-core/src/main/jni/handlers/cpp_handler.cpp b/bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.cpp similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/cpp_handler.cpp rename to bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.cpp diff --git a/bugsnag-android-core/src/main/jni/handlers/cpp_handler.h b/bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.h similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/cpp_handler.h rename to bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.h diff --git a/bugsnag-android-core/src/main/jni/handlers/signal_handler.c b/bugsnag-android-ndk/src/main/jni/handlers/signal_handler.c similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/signal_handler.c rename to bugsnag-android-ndk/src/main/jni/handlers/signal_handler.c diff --git a/bugsnag-android-core/src/main/jni/handlers/signal_handler.h b/bugsnag-android-ndk/src/main/jni/handlers/signal_handler.h similarity index 100% rename from bugsnag-android-core/src/main/jni/handlers/signal_handler.h rename to bugsnag-android-ndk/src/main/jni/handlers/signal_handler.h diff --git a/bugsnag-android-core/src/main/jni/metadata.c b/bugsnag-android-ndk/src/main/jni/metadata.c similarity index 100% rename from bugsnag-android-core/src/main/jni/metadata.c rename to bugsnag-android-ndk/src/main/jni/metadata.c diff --git a/bugsnag-android-core/src/main/jni/metadata.h b/bugsnag-android-ndk/src/main/jni/metadata.h similarity index 100% rename from bugsnag-android-core/src/main/jni/metadata.h rename to bugsnag-android-ndk/src/main/jni/metadata.h diff --git a/bugsnag-android-core/src/main/jni/report.c b/bugsnag-android-ndk/src/main/jni/report.c similarity index 100% rename from bugsnag-android-core/src/main/jni/report.c rename to bugsnag-android-ndk/src/main/jni/report.c diff --git a/bugsnag-android-core/src/main/jni/report.h b/bugsnag-android-ndk/src/main/jni/report.h similarity index 100% rename from bugsnag-android-core/src/main/jni/report.h rename to bugsnag-android-ndk/src/main/jni/report.h diff --git a/bugsnag-android-core/src/main/jni/utils/build.h b/bugsnag-android-ndk/src/main/jni/utils/build.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/build.h rename to bugsnag-android-ndk/src/main/jni/utils/build.h diff --git a/bugsnag-android-core/src/main/jni/utils/crash_info.c b/bugsnag-android-ndk/src/main/jni/utils/crash_info.c similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/crash_info.c rename to bugsnag-android-ndk/src/main/jni/utils/crash_info.c diff --git a/bugsnag-android-core/src/main/jni/utils/crash_info.h b/bugsnag-android-ndk/src/main/jni/utils/crash_info.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/crash_info.h rename to bugsnag-android-ndk/src/main/jni/utils/crash_info.h diff --git a/bugsnag-android-core/src/main/jni/utils/migrate.h b/bugsnag-android-ndk/src/main/jni/utils/migrate.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/migrate.h rename to bugsnag-android-ndk/src/main/jni/utils/migrate.h diff --git a/bugsnag-android-core/src/main/jni/utils/serializer.c b/bugsnag-android-ndk/src/main/jni/utils/serializer.c similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/serializer.c rename to bugsnag-android-ndk/src/main/jni/utils/serializer.c diff --git a/bugsnag-android-core/src/main/jni/utils/serializer.h b/bugsnag-android-ndk/src/main/jni/utils/serializer.h similarity index 95% rename from bugsnag-android-core/src/main/jni/utils/serializer.h rename to bugsnag-android-ndk/src/main/jni/utils/serializer.h index 75ca559b15..391fe0cac7 100644 --- a/bugsnag-android-core/src/main/jni/utils/serializer.h +++ b/bugsnag-android-ndk/src/main/jni/utils/serializer.h @@ -2,7 +2,7 @@ #include #include #include -#include +#include "string.h" #include #include "../bugsnag_ndk.h" #include "build.h" diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder.c b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.c similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder.c rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.c diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder.h b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder.h rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.h diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.c b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c similarity index 99% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.c rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c index 8568cc720f..50da02a02a 100644 --- a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.c +++ b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c @@ -5,7 +5,7 @@ #include #include -#include "../utils/string.h" +#include "string.h" typedef struct { uintptr_t absolute_pc; diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.h b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libcorkscrew.h rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.c b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c similarity index 99% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.c rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c index 487cef8888..40a84e8aa2 100644 --- a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.c +++ b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c @@ -1,4 +1,4 @@ -#include "../utils/build.h" +#include "build.h" #include "stack_unwinder_libunwind.h" #include #include diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.h b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwind.h rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.cpp b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp similarity index 98% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.cpp rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp index 0298601edc..0c67aaa75c 100644 --- a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.cpp +++ b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp @@ -1,4 +1,4 @@ -#include "../utils/string.h" +#include "string.h" #include "stack_unwinder_libunwindstack.h" #include #include diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.h b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_libunwindstack.h rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.c b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.c similarity index 96% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.c rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.c index 83423f2f44..44c716f1fb 100644 --- a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.c +++ b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.c @@ -1,4 +1,4 @@ -#include "../utils/string.h" +#include "string.h" #include "stack_unwinder_simple.h" #include #include diff --git a/bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.h b/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/stack_unwinder_simple.h rename to bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.h diff --git a/bugsnag-android-core/src/main/jni/utils/string.c b/bugsnag-android-ndk/src/main/jni/utils/string.c similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/string.c rename to bugsnag-android-ndk/src/main/jni/utils/string.c diff --git a/bugsnag-android-core/src/main/jni/utils/string.h b/bugsnag-android-ndk/src/main/jni/utils/string.h similarity index 100% rename from bugsnag-android-core/src/main/jni/utils/string.h rename to bugsnag-android-ndk/src/main/jni/utils/string.h diff --git a/bugsnag-android-core/src/test/CMakeLists.txt b/bugsnag-android-ndk/src/test/CMakeLists.txt similarity index 93% rename from bugsnag-android-core/src/test/CMakeLists.txt rename to bugsnag-android-ndk/src/test/CMakeLists.txt index f11eb7aa00..cc54c1bf3e 100644 --- a/bugsnag-android-core/src/test/CMakeLists.txt +++ b/bugsnag-android-ndk/src/test/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories( - ../main/jni/ + ../main/jni ../main/jni/deps cpp cpp/deps diff --git a/bugsnag-android-core/src/test/cpp/deps/greatest/greatest.h b/bugsnag-android-ndk/src/test/cpp/deps/greatest/greatest.h similarity index 100% rename from bugsnag-android-core/src/test/cpp/deps/greatest/greatest.h rename to bugsnag-android-ndk/src/test/cpp/deps/greatest/greatest.h diff --git a/bugsnag-android-core/src/test/cpp/deps/greatest/package.json b/bugsnag-android-ndk/src/test/cpp/deps/greatest/package.json similarity index 100% rename from bugsnag-android-core/src/test/cpp/deps/greatest/package.json rename to bugsnag-android-ndk/src/test/cpp/deps/greatest/package.json diff --git a/bugsnag-android-core/src/test/cpp/main.c b/bugsnag-android-ndk/src/test/cpp/main.c similarity index 100% rename from bugsnag-android-core/src/test/cpp/main.c rename to bugsnag-android-ndk/src/test/cpp/main.c diff --git a/bugsnag-android-core/src/test/cpp/test_breadcrumbs.c b/bugsnag-android-ndk/src/test/cpp/test_breadcrumbs.c similarity index 100% rename from bugsnag-android-core/src/test/cpp/test_breadcrumbs.c rename to bugsnag-android-ndk/src/test/cpp/test_breadcrumbs.c diff --git a/bugsnag-android-core/src/test/cpp/test_utils_serialize.c b/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c similarity index 100% rename from bugsnag-android-core/src/test/cpp/test_utils_serialize.c rename to bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c diff --git a/bugsnag-android-core/src/test/cpp/test_utils_string.c b/bugsnag-android-ndk/src/test/cpp/test_utils_string.c similarity index 100% rename from bugsnag-android-core/src/test/cpp/test_utils_string.c rename to bugsnag-android-ndk/src/test/cpp/test_utils_string.c From 4d4fe656e3419099b4996ec8324d7221e2251f3c Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 8 Jul 2019 16:42:13 +0100 Subject: [PATCH 04/22] begin extracting anr into separate module --- bugsnag-android-anr/CMakeLists.txt | 2 + bugsnag-android-anr/build.gradle | 4 + bugsnag-android-anr/src/main/CMakeLists.txt | 30 ++++++ .../src/main/jni/anr_handler.c | 92 +++++++++++++++++++ .../src/main/jni/anr_handler.h | 30 ++++++ .../src/main/jni/utils/string.c | 13 +++ .../src/main/jni/utils/string.h | 18 ++++ bugsnag-android-ndk/src/main/CMakeLists.txt | 1 - .../com/bugsnag/android/ndk/NativeBridge.java | 9 +- .../src/main/jni/bugsnag_ndk.c | 6 +- 10 files changed, 192 insertions(+), 13 deletions(-) create mode 100644 bugsnag-android-anr/CMakeLists.txt create mode 100644 bugsnag-android-anr/src/main/CMakeLists.txt create mode 100644 bugsnag-android-anr/src/main/jni/anr_handler.c create mode 100644 bugsnag-android-anr/src/main/jni/anr_handler.h create mode 100644 bugsnag-android-anr/src/main/jni/utils/string.c create mode 100644 bugsnag-android-anr/src/main/jni/utils/string.h diff --git a/bugsnag-android-anr/CMakeLists.txt b/bugsnag-android-anr/CMakeLists.txt new file mode 100644 index 0000000000..3d76ae5f2a --- /dev/null +++ b/bugsnag-android-anr/CMakeLists.txt @@ -0,0 +1,2 @@ +cmake_minimum_required(VERSION 3.4.1) +add_subdirectory(src/main) diff --git a/bugsnag-android-anr/build.gradle b/bugsnag-android-anr/build.gradle index 7355d2c1c2..00f63c2171 100644 --- a/bugsnag-android-anr/build.gradle +++ b/bugsnag-android-anr/build.gradle @@ -7,7 +7,11 @@ android { defaultConfig { minSdkVersion rootProject.ext.minSdkVersion + externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" + ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : + ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] } + externalNativeBuild.cmake.path = "CMakeLists.txt" } dependencies { diff --git a/bugsnag-android-anr/src/main/CMakeLists.txt b/bugsnag-android-anr/src/main/CMakeLists.txt new file mode 100644 index 0000000000..fbb4a050cf --- /dev/null +++ b/bugsnag-android-anr/src/main/CMakeLists.txt @@ -0,0 +1,30 @@ +set(BUGSNAG_VERSION 1.0.1) +add_library( # Specifies the name of the library. + bugsnag-android-anr + # Sets the library as a shared library. + SHARED + # Provides a relative path to your source file(s). + jni/anr_handler.c + jni/utils/string.c + ) + +include_directories(jni) + +target_include_directories(bugsnag-android-anr PRIVATE ${BUGSNAG_DIR}/assets/include) + +find_library( # Defines the name of the path variable that stores the + # location of the NDK library. + log-lib + # Specifies the name of the NDK library that + # CMake needs to locate. + log ) + +target_link_libraries( # Specifies the target library. + bugsnag-android-anr + # Links the log library to the target library. + ${log-lib}) + +set_target_properties(bugsnag-android-anr + PROPERTIES + COMPILE_OPTIONS + -Werror -Wall -pedantic) diff --git a/bugsnag-android-anr/src/main/jni/anr_handler.c b/bugsnag-android-anr/src/main/jni/anr_handler.c new file mode 100644 index 0000000000..c359276cf4 --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/anr_handler.c @@ -0,0 +1,92 @@ +#include "anr_handler.h" +#include +#include +#include +#include +#include + +#include "utils/string.h" + +#ifndef BUGSNAG_LOG +#define BUGSNAG_LOG(fmt, ...) \ + __android_log_print(ANDROID_LOG_WARN, "BugsnagNDK", fmt, ##__VA_ARGS__) +#endif + +static pthread_t bsg_watchdog_thread; +static sigset_t bsg_anr_sigmask; +static char *bsg_anr_indicator_buffer = NULL; + +/* The previous SIGQUIT handler */ +struct sigaction bsg_sigquit_sigaction_previous; + +/* Write a sentinel value to the shared memory buffer to allow + * detection of ANR state from JVM layer + */ +void bsg_handle_sigquit(int signum, siginfo_t *info, void *user_context) { + static char *const anr_indicator = "a"; + if (bsg_anr_indicator_buffer != NULL) { + bsg_strncpy(bsg_anr_indicator_buffer, anr_indicator, 2); + } + // Invoke previous handler, if a custom handler has been set + struct sigaction previous = bsg_sigquit_sigaction_previous; + if (previous.sa_flags & SA_SIGINFO) { + previous.sa_sigaction(SIGQUIT, info, user_context); + } else if (previous.sa_handler == SIG_DFL) { + // Do nothing, the default action is nothing + } else if (previous.sa_handler != SIG_IGN) { + void (*previous_handler)(int) = previous.sa_handler; + previous_handler(signum); + } +} + +/** + * Configure ANR detection using a signal handler listening for SIGQUIT + */ +void *bsg_monitor_anrs(void *_arg) { + struct sigaction handler; + sigemptyset(&handler.sa_mask); + handler.sa_sigaction = bsg_handle_sigquit; + handler.sa_flags = SA_SIGINFO | SA_ONSTACK; + int success = sigaction(SIGQUIT, &handler, &bsg_sigquit_sigaction_previous); + if (success != 0) { + BUGSNAG_LOG("Failed to install SIGQUIT handler: %s", strerror(errno)); + } + + return NULL; +} + +bool bsg_handler_install_anr(void *byte_buffer) { + static pthread_mutex_t bsg_anr_handler_config = PTHREAD_MUTEX_INITIALIZER; + pthread_mutex_lock(&bsg_anr_handler_config); + if (bsg_anr_indicator_buffer != NULL) { + // Handler already configured + pthread_mutex_unlock(&bsg_anr_handler_config); + return true; + } + bsg_anr_indicator_buffer = byte_buffer; + + sigemptyset(&bsg_anr_sigmask); + sigaddset(&bsg_anr_sigmask, SIGQUIT); + + int mask_status = pthread_sigmask(SIG_SETMASK, &bsg_anr_sigmask, NULL); + if (mask_status != 0) { + BUGSNAG_LOG("Failed to mask SIGQUIT: %s", strerror(mask_status)); + } else { + pthread_create(&bsg_watchdog_thread, NULL, bsg_monitor_anrs, NULL); + // unblock the current thread + pthread_sigmask(SIG_UNBLOCK, &bsg_anr_sigmask, NULL); + } + + pthread_mutex_unlock(&bsg_anr_handler_config); + + return true; +} + +void bsg_handler_uninstall_anr() { + if (bsg_anr_indicator_buffer == NULL) { + return; + } + bsg_anr_indicator_buffer = NULL; + sigaction(SIGQUIT, &bsg_sigquit_sigaction_previous, NULL); + pthread_kill(bsg_watchdog_thread, SIGKILL); +} diff --git a/bugsnag-android-anr/src/main/jni/anr_handler.h b/bugsnag-android-anr/src/main/jni/anr_handler.h new file mode 100644 index 0000000000..18a0a5c244 --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/anr_handler.h @@ -0,0 +1,30 @@ +#ifndef BUGSNAG_ANR_HANDLER_H +#define BUGSNAG_ANR_HANDLER_H +#include + +/** + * The Application Not Responding (ANR) handler captures SIGQUIT being raised, + * interpreting it as the operating system sending an indication that the app + * has not responded to user input for some time. + * + * References: + * * https://android.googlesource.com/platform/dalvik2/+/refs/heads/master/vm/SignalCatcher.cpp + * * https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/AppErrors.java + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Monitor for ANRs, writing to a byte buffer when detected + * @param byte_buffer a pre-allocated reference to a direct byte buffer + */ +bool bsg_handler_install_anr(void *byte_buffer); + +void bsg_handler_uninstall_anr(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/bugsnag-android-anr/src/main/jni/utils/string.c b/bugsnag-android-anr/src/main/jni/utils/string.c new file mode 100644 index 0000000000..d1a38a304a --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/utils/string.c @@ -0,0 +1,13 @@ +#include + +void bsg_strncpy(char *dst, char *src, size_t len) { + int i = 0; + while (i <= len) { + char current = src[i]; + dst[i] = current; + if (current == '\0') { + break; + } + i++; + } +} diff --git a/bugsnag-android-anr/src/main/jni/utils/string.h b/bugsnag-android-anr/src/main/jni/utils/string.h new file mode 100644 index 0000000000..3dc7613c0f --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/utils/string.h @@ -0,0 +1,18 @@ +#ifndef BUGSNAG_UTILS_STRING_H +#define BUGSNAG_UTILS_STRING_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * Copy the contents of src to dst where src is null-terminated + */ +void bsg_strncpy(char *dst, char *src, size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/bugsnag-android-ndk/src/main/CMakeLists.txt b/bugsnag-android-ndk/src/main/CMakeLists.txt index 9205f95301..b76c9ff1be 100644 --- a/bugsnag-android-ndk/src/main/CMakeLists.txt +++ b/bugsnag-android-ndk/src/main/CMakeLists.txt @@ -11,7 +11,6 @@ add_library( # Specifies the name of the library. jni/metadata.c jni/report.c jni/handlers/signal_handler.c - jni/handlers/anr_handler.c jni/handlers/cpp_handler.cpp jni/utils/crash_info.c jni/utils/stack_unwinder.c diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java index 0e26bbecba..6a5bc31ab9 100644 --- a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java @@ -36,8 +36,7 @@ public class NativeBridge implements Observer { private static final AtomicBoolean installed = new AtomicBoolean(false); public static native void install(@NonNull String reportingDirectory, boolean autoNotify, - int apiLevel, boolean is32bit, - @Nullable ByteBuffer anrSentinel); + int apiLevel, boolean is32bit); public static native void deliverReportAtPath(@NonNull String filePath); @@ -238,13 +237,9 @@ private void handleInstallMessage(@NonNull Object arg) { List values = (List)arg; if (values.size() > 0 && values.get(0) instanceof Configuration) { Configuration config = (Configuration)values.get(0); - ByteBuffer anrBuffer = null; - if (values.size() > 1 && values.get(1) instanceof ByteBuffer) { - anrBuffer = (ByteBuffer)values.get(1); - } String reportPath = reportDirectory + UUID.randomUUID().toString() + ".crash"; install(reportPath, config.getDetectNdkCrashes(), Build.VERSION.SDK_INT, - is32bit(), anrBuffer); + is32bit()); installed.set(true); } } else { diff --git a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c index 4073424833..e5e855f042 100644 --- a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c +++ b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c @@ -45,7 +45,7 @@ bsg_unwinder bsg_configured_unwind_style() { JNIEXPORT void JNICALL Java_com_bugsnag_android_ndk_NativeBridge_install( JNIEnv *env, jobject _this, jstring _report_path, jboolean auto_notify, - jint _api_level, jboolean is32bit, jobject anr_buffer) { + jint _api_level, jboolean is32bit) { bsg_environment *bugsnag_env = calloc(1, sizeof(bsg_environment)); bsg_set_unwind_types((int)_api_level, (bool)is32bit, &bugsnag_env->signal_unwind_style, @@ -60,10 +60,6 @@ JNIEXPORT void JNICALL Java_com_bugsnag_android_ndk_NativeBridge_install( bsg_handler_install_signal(bugsnag_env); bsg_handler_install_cpp(bugsnag_env); } - // Presumes ANR detection is enabled if Buffer exists - if (!(*env)->IsSameObject(env, anr_buffer, NULL)) { - bsg_handler_install_anr((*env)->GetDirectBufferAddress(env, anr_buffer)); - } // populate metadata from Java layer bsg_populate_report(env, &bugsnag_env->next_report); From 8829d811790f5e4412554541fac7861c6607f8d6 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 10 Jul 2019 16:12:32 +0100 Subject: [PATCH 05/22] setup plugin interface for ndk --- .../java/com/bugsnag/android/AnrPlugin.kt | 17 ++++ .../android/BugsnagPluginInterfaceTest.kt | 33 +++++++ .../bugsnag/android/BugsnagPluginInterface.kt | 30 +++++++ .../main/java/com/bugsnag/android/Client.java | 6 +- .../main/java/com/bugsnag/android/Logger.java | 2 +- .../com/bugsnag/android/NativeInterface.java | 23 ----- .../java/com/bugsnag/android/NdkPlugin.kt | 26 ++++++ .../src/main/jni/bugsnag_ndk.c | 1 - .../src/main/jni/handlers/anr_handler.c | 88 ------------------- .../src/main/jni/handlers/anr_handler.h | 30 ------- 10 files changed, 112 insertions(+), 144 deletions(-) create mode 100644 bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt create mode 100644 bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt create mode 100644 bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt create mode 100644 bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt delete mode 100644 bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c delete mode 100644 bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h diff --git a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt new file mode 100644 index 0000000000..85e3e5049a --- /dev/null +++ b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt @@ -0,0 +1,17 @@ +package com.bugsnag.android + +internal class AnrPlugin : BugsnagPlugin { + companion object { + init { + BugsnagPluginInterface.registerPlugin(AnrPlugin::class.java) + System.loadLibrary("bugsnag-android-anr") + } + + // FIXME right jni name, bytebuffer + external fun bsg_handler_install_anr(): Boolean + } + + override fun initialisePlugin(client: Client) { + bsg_handler_install_anr() + } +} diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt new file mode 100644 index 0000000000..633a5f34df --- /dev/null +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt @@ -0,0 +1,33 @@ +package com.bugsnag.android + +import org.junit.Test + +import org.junit.Assert.* +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class BugsnagPluginInterfaceTest { + + @Mock + lateinit var client: Client + + @Test + fun registerPlugin() { + BugsnagPluginInterface.registerPlugin(FakePlugin::class.java) + BugsnagPluginInterface.loadPlugins(client) + assertTrue(FakePlugin.initialised) + } +} + +internal class FakePlugin: BugsnagPlugin { + companion object { + var initialised = false + } + + override fun initialisePlugin(client: Client) { + initialised = true + } +} + diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt new file mode 100644 index 0000000000..5118700810 --- /dev/null +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt @@ -0,0 +1,30 @@ +package com.bugsnag.android + +interface BugsnagPlugin { + fun initialisePlugin(client: Client) +} + +object BugsnagPluginInterface { + + private val plugins = mutableSetOf>() + + fun registerPlugin(clz: Class<*>) { + plugins.add(clz) + } + + @JvmName("loadPlugins") + internal fun loadPlugins(client: Client) { + plugins + .toSet() + .mapNotNull { convertClzToPlugin(it) } + .forEach { it.initialisePlugin(client) } + } + + private fun convertClzToPlugin(it: Class<*>): BugsnagPlugin? { + return try { + it.newInstance() as BugsnagPlugin + } catch (exc: Exception) { + null + } + } +} diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java index c24aebf572..9a9af1a823 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java @@ -254,8 +254,12 @@ public void onOrientationChanged(int orientation) { // Flush any on-disk errors errorStore.flushOnLaunch(); + + NativeInterface.setClient(this); + BugsnagPluginInterface.INSTANCE.loadPlugins(this); + if (config.getDetectNdkCrashes() || config.getDetectAnrs()) { - NativeInterface.configureClientObservers(this); + // FIXME respect this flag! } } diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java index 331ebd037a..707a08c87a 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java @@ -3,7 +3,7 @@ import android.util.Log; @ThreadSafe -final class Logger { +public final class Logger { private static final String LOG_TAG = "Bugsnag"; private static volatile boolean enabled = true; diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java index 05377d2671..1ddf441e45 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java @@ -163,29 +163,6 @@ public static void setClient(@NonNull Client client) { NativeInterface.client = client; } - /** - * Sets up observers for the NDK client - * @param client the client - */ - public static void configureClientObservers(@NonNull Client client) { - setClient(client); - - try { - String className = "com.bugsnag.android.ndk.NativeBridge"; - Class clz = Class.forName(className); - Observer observer = (Observer) clz.newInstance(); - client.addObserver(observer); - } catch (ClassNotFoundException exception) { - // ignore this one, will happen if the NDK plugin is not present - Logger.info("Bugsnag NDK integration not available"); - } catch (InstantiationException exception) { - Logger.warn("Failed to instantiate NDK observer", exception); - } catch (IllegalAccessException exception) { - Logger.warn("Could not access NDK observer", exception); - } - client.sendNativeSetupNotification(); - } - @Nullable public static String getContext() { return getClient().getContext(); diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt new file mode 100644 index 0000000000..7cfc543484 --- /dev/null +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt @@ -0,0 +1,26 @@ +package com.bugsnag.android + +import com.bugsnag.android.ndk.NativeBridge + +internal class NdkPlugin : BugsnagPlugin { + companion object { + init { + BugsnagPluginInterface.registerPlugin(NdkPlugin::class.java) + } + } + + override fun initialisePlugin(client: Client) { + try { + val nativeBridge = NativeBridge() + client.addObserver(nativeBridge) + } catch (exception: ClassNotFoundException) { + // ignore this one, will happen if the NDK plugin is not present + Logger.info("Bugsnag NDK integration not available") + } catch (exception: InstantiationException) { + Logger.warn("Failed to instantiate NDK observer", exception) + } catch (exception: IllegalAccessException) { + Logger.warn("Could not access NDK observer", exception) + } + client.sendNativeSetupNotification() + } +} diff --git a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c index e5e855f042..498236fc3a 100644 --- a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c +++ b/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c @@ -8,7 +8,6 @@ #include "handlers/signal_handler.h" #include "handlers/cpp_handler.h" -#include "handlers/anr_handler.h" #include "metadata.h" #include "report.h" #include "utils/serializer.h" diff --git a/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c b/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c deleted file mode 100644 index f90858f45f..0000000000 --- a/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "anr_handler.h" -#include -#include -#include -#include - -#include "../utils/crash_info.h" -#include "../utils/serializer.h" -#include "../utils/string.h" - -static pthread_t bsg_watchdog_thread; -static sigset_t bsg_anr_sigmask; -static char *bsg_anr_indicator_buffer = NULL; - -/* The previous SIGQUIT handler */ -struct sigaction bsg_sigquit_sigaction_previous; - -/* Write a sentinel value to the shared memory buffer to allow - * detection of ANR state from JVM layer - */ -void bsg_handle_sigquit(int signum, siginfo_t *info, void *user_context) { - static char *const anr_indicator = "a"; - if (bsg_anr_indicator_buffer != NULL) { - bsg_strncpy(bsg_anr_indicator_buffer, anr_indicator, 2); - } - // Invoke previous handler, if a custom handler has been set - struct sigaction previous = bsg_sigquit_sigaction_previous; - if (previous.sa_flags & SA_SIGINFO) { - previous.sa_sigaction(SIGQUIT, info, user_context); - } else if (previous.sa_handler == SIG_DFL) { - // Do nothing, the default action is nothing - } else if (previous.sa_handler != SIG_IGN) { - void (*previous_handler)(int) = previous.sa_handler; - previous_handler(signum); - } -} - -/** - * Configure ANR detection using a signal handler listening for SIGQUIT - */ -void *bsg_monitor_anrs(void *_arg) { - struct sigaction handler; - sigemptyset(&handler.sa_mask); - handler.sa_sigaction = bsg_handle_sigquit; - handler.sa_flags = SA_SIGINFO | SA_ONSTACK; - int success = sigaction(SIGQUIT, &handler, &bsg_sigquit_sigaction_previous); - if (success != 0) { - BUGSNAG_LOG("Failed to install SIGQUIT handler: %s", strerror(errno)); - } - - return NULL; -} - -bool bsg_handler_install_anr(void *byte_buffer) { - static pthread_mutex_t bsg_anr_handler_config = PTHREAD_MUTEX_INITIALIZER; - pthread_mutex_lock(&bsg_anr_handler_config); - if (bsg_anr_indicator_buffer != NULL) { - // Handler already configured - pthread_mutex_unlock(&bsg_anr_handler_config); - return true; - } - bsg_anr_indicator_buffer = byte_buffer; - - sigemptyset(&bsg_anr_sigmask); - sigaddset(&bsg_anr_sigmask, SIGQUIT); - - int mask_status = pthread_sigmask(SIG_SETMASK, &bsg_anr_sigmask, NULL); - if (mask_status != 0) { - BUGSNAG_LOG("Failed to mask SIGQUIT: %s", strerror(mask_status)); - } else { - pthread_create(&bsg_watchdog_thread, NULL, bsg_monitor_anrs, NULL); - // unblock the current thread - pthread_sigmask(SIG_UNBLOCK, &bsg_anr_sigmask, NULL); - } - - pthread_mutex_unlock(&bsg_anr_handler_config); - - return true; -} - -void bsg_handler_uninstall_anr() { - if (bsg_anr_indicator_buffer == NULL) { - return; - } - bsg_anr_indicator_buffer = NULL; - sigaction(SIGQUIT, &bsg_sigquit_sigaction_previous, NULL); - pthread_kill(bsg_watchdog_thread, SIGKILL); -} diff --git a/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h b/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h deleted file mode 100644 index 18a0a5c244..0000000000 --- a/bugsnag-android-ndk/src/main/jni/handlers/anr_handler.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef BUGSNAG_ANR_HANDLER_H -#define BUGSNAG_ANR_HANDLER_H -#include - -/** - * The Application Not Responding (ANR) handler captures SIGQUIT being raised, - * interpreting it as the operating system sending an indication that the app - * has not responded to user input for some time. - * - * References: - * * https://android.googlesource.com/platform/dalvik2/+/refs/heads/master/vm/SignalCatcher.cpp - * * https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/AppErrors.java - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Monitor for ANRs, writing to a byte buffer when detected - * @param byte_buffer a pre-allocated reference to a direct byte buffer - */ -bool bsg_handler_install_anr(void *byte_buffer); - -void bsg_handler_uninstall_anr(void); - -#ifdef __cplusplus -} -#endif -#endif From 219a1b87e198494a17fa143c73bf21093b0dc32b Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 08:44:23 +0100 Subject: [PATCH 06/22] create separate artefacts that compile in example project --- bugsnag-android-anr/gradle.properties | 2 ++ bugsnag-android-anr/src/main/AndroidManifest.xml | 2 +- bugsnag-android-core/gradle.properties | 2 ++ bugsnag-android-core/src/main/AndroidManifest.xml | 2 +- bugsnag-android-ndk/gradle.properties | 2 ++ bugsnag-android-ndk/src/main/AndroidManifest.xml | 2 +- build.gradle | 6 ++++-- examples/sdk-app-example/build.gradle | 15 ++++++++++----- .../example/ExampleActivity.kt | 6 +++--- gradle.properties | 2 +- gradle/release.gradle | 8 +++----- 11 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 bugsnag-android-anr/gradle.properties create mode 100644 bugsnag-android-core/gradle.properties create mode 100644 bugsnag-android-ndk/gradle.properties diff --git a/bugsnag-android-anr/gradle.properties b/bugsnag-android-anr/gradle.properties new file mode 100644 index 0000000000..95b8920988 --- /dev/null +++ b/bugsnag-android-anr/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android ANR +artefactId=bugsnag-android-anr diff --git a/bugsnag-android-anr/src/main/AndroidManifest.xml b/bugsnag-android-anr/src/main/AndroidManifest.xml index c0e1ef95fa..869f2a5000 100644 --- a/bugsnag-android-anr/src/main/AndroidManifest.xml +++ b/bugsnag-android-anr/src/main/AndroidManifest.xml @@ -1,2 +1,2 @@ - + diff --git a/bugsnag-android-core/gradle.properties b/bugsnag-android-core/gradle.properties new file mode 100644 index 0000000000..99e420b0a5 --- /dev/null +++ b/bugsnag-android-core/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android Core +artefactId=bugsnag-android-core diff --git a/bugsnag-android-core/src/main/AndroidManifest.xml b/bugsnag-android-core/src/main/AndroidManifest.xml index 68ea68b7b3..15e2e4fac7 100644 --- a/bugsnag-android-core/src/main/AndroidManifest.xml +++ b/bugsnag-android-core/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.bugsnag.android.core"> diff --git a/bugsnag-android-ndk/gradle.properties b/bugsnag-android-ndk/gradle.properties new file mode 100644 index 0000000000..709baa2c86 --- /dev/null +++ b/bugsnag-android-ndk/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android NDK +artefactId=bugsnag-android-ndk diff --git a/bugsnag-android-ndk/src/main/AndroidManifest.xml b/bugsnag-android-ndk/src/main/AndroidManifest.xml index c0e1ef95fa..6d65208857 100644 --- a/bugsnag-android-ndk/src/main/AndroidManifest.xml +++ b/bugsnag-android-ndk/src/main/AndroidManifest.xml @@ -1,2 +1,2 @@ - + diff --git a/build.gradle b/build.gradle index 5493c75179..587cee55ab 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import com.android.build.gradle.LibraryPlugin + buildscript { repositories { google() @@ -5,7 +7,7 @@ buildscript { jcenter() } ext.kotlin_version = "1.3.21" - ext.agpVersion = "3.3.0" + ext.agpVersion = "3.4.2" dependencies { classpath "com.android.tools.build:gradle:${agpVersion}" @@ -15,7 +17,7 @@ buildscript { classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.5" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC16" - classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.2.0" + classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.4.1" } } allprojects { diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index 0324dc4713..cff8a227ab 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -44,11 +44,16 @@ android { def usingLocalArtefact = false dependencies { - if (usingLocalArtefact) { - implementation project(path: ":sdk", configuration: "default") - } else { - implementation "com.bugsnag:bugsnag-android-ndk:4.15.0" - } + +// implementation "com.bugsnag:bugsnag-android-core:9.9.9" +// implementation "com.bugsnag:bugsnag-android-ndk:9.9.9" +// implementation "com.bugsnag:bugsnag-android-anr:9.9.9" + +// if (usingLocalArtefact) { +// implementation project(path: ":sdk", configuration: "default") +// } else { + implementation "com.bugsnag:bugsnag-android-ndk:4.16.1" +// } implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:support-v4:$supportLibVersion" diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt index 7223113b7c..3d71a20ac0 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt @@ -118,8 +118,8 @@ class ExampleActivity : AppCompatActivity() { Bugsnag.notify(e) {report -> val error = report.error - error?.severity = Severity.ERROR - error?.metaData?.addToTab("CustomMetaData", "HasLaunchedGameTutorial", true) + error.severity = Severity.ERROR + error.metaData.addToTab("CustomMetaData", "HasLaunchedGameTutorial", true) } displayToastNotification() } @@ -152,7 +152,7 @@ class ExampleActivity : AppCompatActivity() { Bugsnag.notify(e) { report -> // modify the report - report.error?.metaData = generateUserMetaData() + report.error.metaData = generateUserMetaData() } displayToastNotification() } diff --git a/gradle.properties b/gradle.properties index a1eb385057..2fec1fb5e9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=4.16.0 +VERSION_NAME=9.9.9 GROUP=com.bugsnag POM_SCM_URL=https://github.com/bugsnag/bugsnag-android POM_SCM_CONNECTION=scm:git@github.com:bugsnag/bugsnag-android.git diff --git a/gradle/release.gradle b/gradle/release.gradle index fb576cd2ee..2c072c524b 100644 --- a/gradle/release.gradle +++ b/gradle/release.gradle @@ -2,10 +2,8 @@ apply plugin: "maven-publish" apply plugin: "signing" apply plugin: "com.jfrog.bintray" -boolean releaseNdkArtefact = project.hasProperty("releaseNdkArtefact") -String pomName = releaseNdkArtefact ? "Bugsnag Android NDK" : "Bugsnag Android" - -archivesBaseName = releaseNdkArtefact ? "bugsnag-android-ndk" : "bugsnag-android" +String pomName = project.getProperties().get("pomName") +archivesBaseName = project.getProperties().get("artefactId") version = "${project.VERSION_NAME}" group = "${project.GROUP}" @@ -53,7 +51,7 @@ publishing { artifactId archivesBaseName version version artifact(sourceJar) - artifact("$buildDir/outputs/aar/$archivesBaseName-${project.VERSION_NAME}.aar") + artifact("$buildDir/outputs/aar/$archivesBaseName-release.aar") pom.withXml { Node root = asNode() From d7420c1011f0b715ce375c4ed47ab85182106adf Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 10:04:47 +0100 Subject: [PATCH 07/22] create working ANR + NDK plugins --- bugsnag-android-anr/proguard-rules.pro | 1 + bugsnag-android-anr/src/main/CMakeLists.txt | 3 +- .../java/com/bugsnag/android/AnrPlugin.kt | 27 ++++++---- .../android/AppNotRespondingMonitor.java | 0 .../src/main/jni/bugsnag_anr.c | 18 +++++++ .../src/main/jni/bugsnag_anr.h | 21 ++++++++ .../main/java/com/bugsnag/android/Client.java | 51 ++++++++----------- bugsnag-android-ndk/proguard-rules.pro | 1 + .../java/com/bugsnag/android/NdkPlugin.kt | 20 ++------ .../com/bugsnag/android/ndk/NativeBridge.java | 3 -- 10 files changed, 84 insertions(+), 61 deletions(-) rename {bugsnag-android-core => bugsnag-android-anr}/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java (100%) create mode 100644 bugsnag-android-anr/src/main/jni/bugsnag_anr.c create mode 100644 bugsnag-android-anr/src/main/jni/bugsnag_anr.h diff --git a/bugsnag-android-anr/proguard-rules.pro b/bugsnag-android-anr/proguard-rules.pro index bc30bd7cdc..f53af57439 100644 --- a/bugsnag-android-anr/proguard-rules.pro +++ b/bugsnag-android-anr/proguard-rules.pro @@ -1 +1,2 @@ -keepattributes LineNumberTable,SourceFile +-keep class com.bugsnag.android.AnrPlugin { *; } diff --git a/bugsnag-android-anr/src/main/CMakeLists.txt b/bugsnag-android-anr/src/main/CMakeLists.txt index fbb4a050cf..8ab76fb888 100644 --- a/bugsnag-android-anr/src/main/CMakeLists.txt +++ b/bugsnag-android-anr/src/main/CMakeLists.txt @@ -5,13 +5,12 @@ add_library( # Specifies the name of the library. SHARED # Provides a relative path to your source file(s). jni/anr_handler.c + jni/bugsnag_anr.c jni/utils/string.c ) include_directories(jni) -target_include_directories(bugsnag-android-anr PRIVATE ${BUGSNAG_DIR}/assets/include) - find_library( # Defines the name of the path variable that stores the # location of the NDK library. log-lib diff --git a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt index 85e3e5049a..c4ae346e86 100644 --- a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt +++ b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt @@ -1,17 +1,26 @@ package com.bugsnag.android +import java.nio.ByteBuffer + internal class AnrPlugin : BugsnagPlugin { - companion object { - init { - BugsnagPluginInterface.registerPlugin(AnrPlugin::class.java) - System.loadLibrary("bugsnag-android-anr") - } - // FIXME right jni name, bytebuffer - external fun bsg_handler_install_anr(): Boolean - } + private external fun installAnrDetection(sentinelBuffer: ByteBuffer) override fun initialisePlugin(client: Client) { - bsg_handler_install_anr() + System.loadLibrary("bugsnag-android-anr") + val monitor = AppNotRespondingMonitor { thread -> handleAnr(thread, client) } + monitor.start() + installAnrDetection(monitor.sentinelBuffer) + Logger.info("Initialised ANR Plugin") + } + + private fun handleAnr(thread: Thread, client: Client) { + val errMsg = "Application did not respond to UI input" + val exc = BugsnagException("ANR", errMsg, thread.stackTrace) + + client.cacheAndNotify( + exc, Severity.ERROR, MetaData(), + HandledState.REASON_ANR, null, thread + ) } } diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java rename to bugsnag-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java diff --git a/bugsnag-android-anr/src/main/jni/bugsnag_anr.c b/bugsnag-android-anr/src/main/jni/bugsnag_anr.c new file mode 100644 index 0000000000..873ee9cba4 --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/bugsnag_anr.c @@ -0,0 +1,18 @@ +#include "bugsnag_anr.h" +#include "anr_handler.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +JNIEXPORT void JNICALL Java_com_bugsnag_android_AnrPlugin_installAnrDetection( + JNIEnv *env, jobject _this, jobject byteBuffer) { + bsg_handler_install_anr((*env)->GetDirectBufferAddress(env, byteBuffer)); + BUGSNAG_LOG("Initialization complete!"); +} + +#ifdef __cplusplus +} +#endif diff --git a/bugsnag-android-anr/src/main/jni/bugsnag_anr.h b/bugsnag-android-anr/src/main/jni/bugsnag_anr.h new file mode 100644 index 0000000000..419003ecff --- /dev/null +++ b/bugsnag-android-anr/src/main/jni/bugsnag_anr.h @@ -0,0 +1,21 @@ +/** + * JNI interface between bugsnag-android-anr JVM and C++ + */ +#ifndef BUGSNAG_ANR_H +#define BUGSNAG_ANR_H + +#include + +#ifndef BUGSNAG_LOG +#define BUGSNAG_LOG(fmt, ...) \ + __android_log_print(ANDROID_LOG_WARN, "BugsnagANR", fmt, ##__VA_ARGS__) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif // BUGSNAG_NDK_H diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java index 9a9af1a823..11d5c17d09 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java @@ -12,8 +12,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.Resources; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; @@ -76,7 +74,6 @@ public class Client extends Observable implements Observer { final SharedPreferences sharedPrefs; private final OrientationEventListener orientationListener; - private AppNotRespondingMonitor anrMonitor; private final Connectivity connectivity; /** @@ -209,10 +206,6 @@ public void onErrorReadFailure(Error error) { enableExceptionHandler(); } - if (config.getDetectAnrs()) { - enableAnrDetection(); - } - // register a receiver for automatic breadcrumbs try { @@ -253,41 +246,37 @@ public void onOrientationChanged(int orientation) { // Flush any on-disk errors errorStore.flushOnLaunch(); + loadPlugins(); + } - + private void loadPlugins() { NativeInterface.setClient(this); - BugsnagPluginInterface.INSTANCE.loadPlugins(this); + BugsnagPluginInterface pluginInterface = BugsnagPluginInterface.INSTANCE; - if (config.getDetectNdkCrashes() || config.getDetectAnrs()) { - // FIXME respect this flag! + if (config.getDetectNdkCrashes()) { + try { + pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.NdkPlugin")); + } catch (ClassNotFoundException e) { + Logger.warn("bugsnag-android-ndk artefact not found on classpath, " + + "NDK errors will not be captured."); + } } - } - - private void enableAnrDetection() { - AppNotRespondingMonitor.Delegate delegate = new AppNotRespondingMonitor.Delegate() { - @Override - public void onAppNotResponding(Thread thread) { - String errMsg = "Application did not respond to UI input"; - BugsnagException exc = new BugsnagException("ANR", errMsg, thread.getStackTrace()); - - cacheAndNotify(exc, Severity.ERROR, new MetaData(), - HandledState.REASON_ANR, null, thread); + if (config.getDetectAnrs()) { + try { + pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.AnrPlugin")); + } catch (ClassNotFoundException e) { + Logger.warn("bugsnag-android-anr artefact not found on classpath, " + + "ANR errors will not be captured."); } - }; - anrMonitor = new AppNotRespondingMonitor(delegate); - anrMonitor.start(); // begin monitoring for ANRs + } + pluginInterface.loadPlugins(this); } void sendNativeSetupNotification() { setChanged(); ArrayList messageArgs = new ArrayList<>(); messageArgs.add(config); - if (anrMonitor != null) { - Object buffer = anrMonitor.getSentinelBuffer(); - if (buffer != null) { - messageArgs.add(buffer); - } - } + super.notifyObservers(new Message(NativeInterface.MessageType.INSTALL, messageArgs)); try { Async.run(new Runnable() { diff --git a/bugsnag-android-ndk/proguard-rules.pro b/bugsnag-android-ndk/proguard-rules.pro index 7f69d385d1..7020a10281 100644 --- a/bugsnag-android-ndk/proguard-rules.pro +++ b/bugsnag-android-ndk/proguard-rules.pro @@ -1,2 +1,3 @@ -keepattributes LineNumberTable,SourceFile -keep class com.bugsnag.android.ndk.NativeBridge { *; } +-keep class com.bugsnag.android.NdkPlugin { *; } diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt index 7cfc543484..33c9265c8f 100644 --- a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt @@ -3,24 +3,12 @@ package com.bugsnag.android import com.bugsnag.android.ndk.NativeBridge internal class NdkPlugin : BugsnagPlugin { - companion object { - init { - BugsnagPluginInterface.registerPlugin(NdkPlugin::class.java) - } - } override fun initialisePlugin(client: Client) { - try { - val nativeBridge = NativeBridge() - client.addObserver(nativeBridge) - } catch (exception: ClassNotFoundException) { - // ignore this one, will happen if the NDK plugin is not present - Logger.info("Bugsnag NDK integration not available") - } catch (exception: InstantiationException) { - Logger.warn("Failed to instantiate NDK observer", exception) - } catch (exception: IllegalAccessException) { - Logger.warn("Could not access NDK observer", exception) - } + System.loadLibrary("bugsnag-ndk") + val nativeBridge = NativeBridge() + client.addObserver(nativeBridge) client.sendNativeSetupNotification() + Logger.info("Initialised NDK Plugin") } } diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java index 6a5bc31ab9..ccc31bfbd6 100644 --- a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java @@ -24,9 +24,6 @@ * Observes changes in the Bugsnag environment, propagating them to the native layer */ public class NativeBridge implements Observer { - static { - System.loadLibrary("bugsnag-ndk"); - } private static final int METADATA_SECTION = 0; private static final int METADATA_KEY = 1; From 979d68d53bd4d7c1e736d55530c6954a91b476fa Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 10:39:17 +0100 Subject: [PATCH 08/22] add readmes to modules --- bugsnag-android-anr/README.md | 9 +++++++++ bugsnag-android-core/README.md | 9 +++++++++ bugsnag-android-ndk/README.md | 9 +++++++++ bugsnag-android/README.md | 17 +++++++++++++++++ bugsnag-android/build.gradle | 14 ++++++++++++++ bugsnag-android/gradle.properties | 2 ++ bugsnag-android/src/main/AndroidManifest.xml | 2 ++ examples/sdk-app-example/build.gradle | 12 ++---------- settings.gradle | 3 ++- 9 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 bugsnag-android-anr/README.md create mode 100644 bugsnag-android-core/README.md create mode 100644 bugsnag-android-ndk/README.md create mode 100644 bugsnag-android/README.md create mode 100644 bugsnag-android/build.gradle create mode 100644 bugsnag-android/gradle.properties create mode 100644 bugsnag-android/src/main/AndroidManifest.xml diff --git a/bugsnag-android-anr/README.md b/bugsnag-android-anr/README.md new file mode 100644 index 0000000000..a10eed70cb --- /dev/null +++ b/bugsnag-android-anr/README.md @@ -0,0 +1,9 @@ +# bugsnag-android + +This module detects ANRs and reports them to bugsnag. + +## High-level Overview + +When an ANR dialog is shown SIGQUIT is raised. This module installs a SIGQUIT handler and sets a +ByteBuffer that is continuously monitored from the JVM. When the JVM code detects a ByteBuffer has +been modified, it generates a report of the ANR. diff --git a/bugsnag-android-core/README.md b/bugsnag-android-core/README.md new file mode 100644 index 0000000000..45c94fad69 --- /dev/null +++ b/bugsnag-android-core/README.md @@ -0,0 +1,9 @@ +# bugsnag-android + +This module detects JVM exceptions and reports them to bugsnag. + +## High-level Overview + +An `UncaughtExceptionHandler` is installed which generates an error report whenever an uncaught +`Throwable` propagates. This module is also responsible for the delivery of JSON payloads to the +Error Reporting API, and also provides the main public API for bugsnag-android. diff --git a/bugsnag-android-ndk/README.md b/bugsnag-android-ndk/README.md new file mode 100644 index 0000000000..737bfa1add --- /dev/null +++ b/bugsnag-android-ndk/README.md @@ -0,0 +1,9 @@ +# bugsnag-android + +This module detects NDK signals/exceptions and reports them to bugsnag. + +## High-level Overview + +This module installs C signal handlers and a CPP exception handler. When a native crash occurs, +it writes a report to disk. This is then converted to a JVM report on the next app launch, and is +delivered to the error reporting API. diff --git a/bugsnag-android/README.md b/bugsnag-android/README.md new file mode 100644 index 0000000000..7e5283121c --- /dev/null +++ b/bugsnag-android/README.md @@ -0,0 +1,17 @@ +# bugsnag-android + +This module is a meta package which contains no code itself. Its primary purpose is to +publish an AAR + POM that adds a dependency on _all_ the bugsnag-android-* artefacts. This allows +users to include bugsnag-android in their applications using the following syntax: + +``` +implementation "com.bugsnag:bugsnag-android:$version" +``` + +Which is simpler than manually specifying every single dependency: + +``` +implementation "com.bugsnag:bugsnag-android-core:$version" +implementation "com.bugsnag:bugsnag-android-ndk:$version" +implementation "com.bugsnag:bugsnag-android-anr:$version" +``` diff --git a/bugsnag-android/build.gradle b/bugsnag-android/build.gradle new file mode 100644 index 0000000000..9f438d921b --- /dev/null +++ b/bugsnag-android/build.gradle @@ -0,0 +1,14 @@ +apply plugin: "com.android.library" + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + defaultConfig.minSdkVersion rootProject.ext.minSdkVersion +} + +dependencies { + api project(":bugsnag-android-core") + api project(":bugsnag-android-anr") + api project(":bugsnag-android-ndk") +} + +apply from: "../gradle/release.gradle" diff --git a/bugsnag-android/gradle.properties b/bugsnag-android/gradle.properties new file mode 100644 index 0000000000..16f72c6159 --- /dev/null +++ b/bugsnag-android/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android +artefactId=bugsnag-android diff --git a/bugsnag-android/src/main/AndroidManifest.xml b/bugsnag-android/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..c0e1ef95fa --- /dev/null +++ b/bugsnag-android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index cff8a227ab..27f44161a7 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -44,16 +44,8 @@ android { def usingLocalArtefact = false dependencies { - -// implementation "com.bugsnag:bugsnag-android-core:9.9.9" -// implementation "com.bugsnag:bugsnag-android-ndk:9.9.9" -// implementation "com.bugsnag:bugsnag-android-anr:9.9.9" - -// if (usingLocalArtefact) { -// implementation project(path: ":sdk", configuration: "default") -// } else { - implementation "com.bugsnag:bugsnag-android-ndk:4.16.1" -// } +// implementation "com.bugsnag:bugsnag-android:9.9.9" + implementation "com.bugsnag:bugsnag-android-ndk:4.16.1" implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:support-v4:$supportLibVersion" diff --git a/settings.gradle b/settings.gradle index 26679c9dd2..d9fef9278d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,3 @@ -include ":bugsnag-android-core", ":bugsnag-android-anr", ":bugsnag-android-ndk", ":sdkAppExample" +include ":bugsnag-android", ":bugsnag-android-core", ":bugsnag-android-anr", + ":bugsnag-android-ndk", ":sdkAppExample" project(":sdkAppExample").projectDir = new File("examples/sdk-app-example") From 6d7f330071e676be8a645c131519ad6585dc71ab Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 11:07:03 +0100 Subject: [PATCH 09/22] begin passing lint --- Makefile | 24 ++------------- README.md | 3 -- TESTING.md | 29 ++++++++++--------- .../java/com/bugsnag/android/AnrPlugin.kt | 3 +- .../main/java/com/bugsnag/android/Client.java | 12 ++++---- .../com/bugsnag/android/ndk/NativeBridge.java | 11 ++++--- 6 files changed, 30 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index 68e7d1a2ab..c6b8290de6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: build -.PHONY: build test clean bump badge release +.PHONY: build test clean bump release build: ./gradlew sdk:build @@ -37,7 +37,7 @@ else @APP_LOCATION=/app/build/fixture.apk docker-compose run android-maze-runner endif -bump: badge +bump: ifneq ($(shell git diff --staged),) @git diff --staged @$(error You have uncommitted changes. Push or discard them to continue) @@ -51,26 +51,6 @@ endif sdk/src/main/java/com/bugsnag/android/Notifier.java @sed -i '' "s/## TBD/## $(VERSION) ($(shell date '+%Y-%m-%d'))/" CHANGELOG.md -badge: build -ifneq ($(shell git diff),) - @git diff - @$(error You have unstaged changes. Commit or discard them to continue) -endif - @echo "Counting ..." - @./gradlew countReleaseDexMethods > counter.txt - @awk 'BEGIN{ \ - "cat counter.txt | grep \"com.bugsnag.android\$\"" | getline output;\ - split(output, counts);\ - "du -k sdk/build/outputs/aar/bugsnag-android-*.aar | cut -f1" | getline size;\ - printf "![Method count and size](https://img.shields.io/badge/Methods%%20and%%20size-";\ - printf counts[1] "%%20classes%%20|%%20" counts[2] "%%20methods%%20|%%20" counts[3] "%%20fields%%20|%%20";\ - printf size "%%20KB-e91e63.svg)";\ - };' > tmp_url.txt - @awk '/!.*Method count and size.*/ { getline < "tmp_url.txt" }1' README.md > README.md.tmp - @mv README.md.tmp README.md - @rm counter.txt tmp_url.txt - - # Makes a release release: ifneq ($(shell git diff origin/master..master),) diff --git a/README.md b/README.md index 8c58b7f276..3ccb8cdd31 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,6 @@ # Bugsnag error monitoring & exception reporter for Android [![Documentation](https://img.shields.io/badge/documentation-latest-blue.svg)](https://docs.bugsnag.com/platforms/android/) [![Build status](https://api.travis-ci.com/bugsnag/bugsnag-android.svg?branch=master)](https://travis-ci.com/bugsnag/bugsnag-android) -[![Coverage Status](https://coveralls.io/repos/github/bugsnag/bugsnag-android/badge.svg?branch=master)](https://coveralls.io/github/bugsnag/bugsnag-android?branch=master) - -![Method count and size](https://img.shields.io/badge/Methods%20and%20size-103%20classes%20|%20822%20methods%20|%20408%20fields%20|%202052%20KB-e91e63.svg) Get comprehensive [Android crash reports](https://www.bugsnag.com/platforms/android/) to quickly debug errors. diff --git a/TESTING.md b/TESTING.md index e508aba127..d643afcdf9 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1,18 +1,27 @@ # Testing the Bugsnag Android notifier -## Running Tests Locally +Commands can be run on the entire project, or on an individual module: -Running the test suite requires a connected android device or emulator. +```shell +./gradlew build // builds whole project +./gradlew bugsnag-android-anr:build // builds bugsnag-android-anr module only +``` + +## Static analysis + +```shell +./gradlew lint checkstyle detekt +``` -### Unit tests +## Running Tests Locally -You can run the test suite on a device/emulator as follows from within the sdk directory: +Running the test suite requires a connected android device or emulator. ```shell ./gradlew connectedCheck ``` -### End-to-end tests +## End-to-end tests To run the end-to-end tests, first set up the environment by running [Bundler](https://bundler.io): @@ -32,14 +41,6 @@ Then run the tests using: bundle exec maze-runner ``` -### Running Lint - -You can run lint on the project using the following command: - -```shell -./gradlew lint checkstyle detekt -``` - ## Running remote tests These tests are implemented with our notifier testing tool [Maze runner](https://github.com/bugsnag/maze-runner). @@ -95,4 +96,4 @@ Run `make remote-integration-tests` If you wish to test a single feature, set the `TEST_FEATURE` environment variable to the name of the feature file. For example, to test the `breadcrumb` feature, use the following command: -`TEST_FEATURE=breadcrumb.feature make remote-integration-tests` \ No newline at end of file +`TEST_FEATURE=breadcrumb.feature make remote-integration-tests` diff --git a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt index c4ae346e86..c1132d5fa1 100644 --- a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt +++ b/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt @@ -8,7 +8,8 @@ internal class AnrPlugin : BugsnagPlugin { override fun initialisePlugin(client: Client) { System.loadLibrary("bugsnag-android-anr") - val monitor = AppNotRespondingMonitor { thread -> handleAnr(thread, client) } + val delegate: (Thread) -> Unit = { handleAnr(it, client) } + val monitor = AppNotRespondingMonitor(delegate) monitor.start() installAnrDetection(monitor.sentinelBuffer) Logger.info("Initialised ANR Plugin") diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java index 11d5c17d09..dea972b883 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java @@ -256,17 +256,17 @@ private void loadPlugins() { if (config.getDetectNdkCrashes()) { try { pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.NdkPlugin")); - } catch (ClassNotFoundException e) { - Logger.warn("bugsnag-android-ndk artefact not found on classpath, " + - "NDK errors will not be captured."); + } catch (ClassNotFoundException exc) { + Logger.warn("bugsnag-android-ndk artefact not found on classpath, " + + "NDK errors will not be captured."); } } if (config.getDetectAnrs()) { try { pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.AnrPlugin")); - } catch (ClassNotFoundException e) { - Logger.warn("bugsnag-android-anr artefact not found on classpath, " + - "ANR errors will not be captured."); + } catch (ClassNotFoundException exc) { + Logger.warn("bugsnag-android-anr artefact not found on classpath, " + + "ANR errors will not be captured."); } } pluginInterface.loadPlugins(this); diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java index ccc31bfbd6..3699e11782 100644 --- a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java +++ b/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java @@ -1,17 +1,16 @@ package com.bugsnag.android.ndk; -import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.util.Log; - import com.bugsnag.android.Breadcrumb; import com.bugsnag.android.Configuration; import com.bugsnag.android.MetaData; import com.bugsnag.android.NativeInterface; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.Log; + import java.io.File; -import java.nio.ByteBuffer; import java.util.List; import java.util.Observable; import java.util.Observer; From ea0973d8d1f1e6854b88c72286a9e7aae428690a Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 11:30:58 +0100 Subject: [PATCH 10/22] pass unit tests --- .../java/com/bugsnag/android/AppDataTest.java | 4 ++-- .../java/com/bugsnag/android/ClientTest.java | 2 +- .../java/com/bugsnag/android/ErrorReaderTest.java | 6 ++++-- .../java/com/bugsnag/android/ProjectPackagesTest.kt | 2 +- .../java/com/bugsnag/android/RxErrorTest.kt | 12 +++--------- .../androidTest/{res/raw => resources}/error.json | 0 .../androidTest/{res/raw => resources}/rx_error.json | 0 .../src/test/cpp/test_utils_serialize.c | 2 +- 8 files changed, 12 insertions(+), 16 deletions(-) rename bugsnag-android-core/src/androidTest/{res/raw => resources}/error.json (100%) rename bugsnag-android-core/src/androidTest/{res/raw => resources}/rx_error.json (100%) diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java index 49453b1abe..3471e1e42c 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java @@ -52,7 +52,7 @@ public void setUp() throws Exception { @Test public void testAccessors() { - assertEquals("com.bugsnag.android.test", appData.get("packageName")); + assertEquals("com.bugsnag.android.core.test", appData.get("packageName")); assertNull(appData.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); @@ -68,7 +68,7 @@ public void testJsonSerialisation() throws JSONException { assertEquals("1.0", appDataJson.get("version")); assertEquals("development", appDataJson.get("releaseStage")); assertEquals("android", appDataJson.get("type")); - assertEquals("com.bugsnag.android.test", appDataJson.get("id")); + assertEquals("com.bugsnag.android.core.test", appDataJson.get("id")); assertNotNull(appDataJson.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java index 5868e1e2ef..a4aba8e64d 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java @@ -330,7 +330,7 @@ public void testAppDataMetaData() { Map app = client.getAppData().getAppDataMetaData(); assertEquals(6, app.size()); assertEquals("Bugsnag Android Tests", app.get("name")); - assertEquals("com.bugsnag.android.test", app.get("packageName")); + assertEquals("com.bugsnag.android.core.test", app.get("packageName")); assertEquals("1.0", app.get("versionName")); assertNotNull(app.get("memoryUsage")); assertTrue(app.containsKey("activeScreen")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java index c76480a340..3a10948305 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java @@ -13,6 +13,8 @@ import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; +import com.bugsnag.android.core.R; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -41,8 +43,8 @@ public class ErrorReaderTest { /** Constructs an Error from a JSON file */ @BeforeClass public static void setUp() throws IOException { - InputStream input = InstrumentationRegistry.getContext().getResources() - .openRawResource(com.bugsnag.android.test.R.raw.error); + ClassLoader classLoader = ErrorReaderTest.class.getClassLoader(); + InputStream input = classLoader.getResourceAsStream("error.json"); File fixtureFile = File.createTempFile("error", ".json"); OutputStream output = new FileOutputStream(fixtureFile); try { diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt index d4facf62d9..d653e946a2 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt @@ -13,7 +13,7 @@ class ProjectPackagesTest { assertNull(configuration.projectPackages) val client = Client(InstrumentationRegistry.getContext(), configuration) - assertArrayEquals(arrayOf("com.bugsnag.android.test"), client.config.projectPackages) + assertArrayEquals(arrayOf("com.bugsnag.android.core.test"), client.config.projectPackages) client.close() } diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt index 3ea3cc82cb..55a30a226c 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt @@ -1,15 +1,10 @@ package com.bugsnag.android -import android.support.test.InstrumentationRegistry import com.bugsnag.android.BugsnagTestUtils.streamableToJsonArray -import com.bugsnag.android.test.R import org.json.JSONObject -import org.junit.Assert.* - +import org.junit.Assert.assertEquals import org.junit.Test - import java.io.File -import java.io.FileOutputStream class RxErrorTest { @@ -48,10 +43,9 @@ class RxErrorTest { } private fun loadErrorFromFile(): Error? { - val input = InstrumentationRegistry.getContext().resources - .openRawResource(R.raw.rx_error) + val fileContents = javaClass.classLoader!!.getResource("rx_error.json")!!.readText() val fixtureFile = File.createTempFile("rx_error", ".json") - input.copyTo(FileOutputStream(fixtureFile)) + fixtureFile.writeText(fileContents) return ErrorReader.readError(Configuration("key"), fixtureFile) } } diff --git a/bugsnag-android-core/src/androidTest/res/raw/error.json b/bugsnag-android-core/src/androidTest/resources/error.json similarity index 100% rename from bugsnag-android-core/src/androidTest/res/raw/error.json rename to bugsnag-android-core/src/androidTest/resources/error.json diff --git a/bugsnag-android-core/src/androidTest/res/raw/rx_error.json b/bugsnag-android-core/src/androidTest/resources/rx_error.json similarity index 100% rename from bugsnag-android-core/src/androidTest/res/raw/rx_error.json rename to bugsnag-android-core/src/androidTest/resources/rx_error.json diff --git a/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c b/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c index 00248e7a44..7d107ef64b 100644 --- a/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c +++ b/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c @@ -3,7 +3,7 @@ #include #include -#define SERIALIZE_TEST_FILE "/data/data/com.bugsnag.android.test/cache/foo.crash" +#define SERIALIZE_TEST_FILE "/data/data/com.bugsnag.android.ndk.test/cache/foo.crash" bugsnag_breadcrumb *init_breadcrumb(const char *name, const char *message, bsg_breadcrumb_t type); From f46f06297e83c8919882ea4bb2ab5c390730ae55 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 11:40:15 +0100 Subject: [PATCH 11/22] update contributing docs --- CONTRIBUTING.md | 57 +++++++++++++------------------------------------ 1 file changed, 15 insertions(+), 42 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 008f57d241..717d5afa8f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -84,10 +84,10 @@ git submodule update --init --recursive You can build new `.aar` files as follows: ```shell -./gradlew sdk:assemble +./gradlew assembleRelease ``` -Files are generated into`sdk/build/outputs/aar`. +Files are generated into`/build/outputs/aar`. ### Building with custom ABIs @@ -95,7 +95,7 @@ To build the NDK module with specific ABIs, use the `ABI_FILTERS` project option: ```shell -./gradlew assemble -PABI_FILTERS=x86,arm64-v8a +./gradlew assembleRelease -PABI_FILTERS=x86,arm64-v8a ``` ## Testing @@ -104,7 +104,7 @@ Full details of how to build and run tests can be found in [the testing guide](` ## Building the Example App -You can build and install the example app to as follows: +You can build and install the example app as follows: ```shell ./gradlew installDebug @@ -115,41 +115,15 @@ device/emulator. ## Installing/testing against a local maven repository -Sometimes its helpful to build and install the bugsnag-android libraries into a -local repository and test the entire dependency flow inside of a sample -application. - -To get started: - -1. In the `bugsnag-android` directory, run - `./gradlew assembleRelease publishSDKPublicationToMavenLocal && ./gradlew assembleRelease publishSDKPublicationToMavenLocal -PreleaseNdkArtefact=true`. - This installs `bugsnag-android` and `bugsnag-android-ndk` into your local - maven repository. -2. In your sample application `build.gradle`, add `mavenLocal()` to the *top* of - your `allprojects` repositories section: - - ```groovy - allprojects { - repositories { - mavenLocal() - // other repos as needed - } - } - ``` -3. In your sample application `app/build.gradle`, add the following to the - dependencies section, inserting the exact version number required: - - ```groovy - dependencies { - implementation 'com.bugsnag:bugsnag-android-ndk:[VERSION NUMBER]' - } - ``` -4. Clean your sample application and reload dependencies *every time* you - rebuild/republish the local dependencies: - - ``` - ./gradlew clean --refresh-dependencies - ``` +Change `VERSION_NAME` in `gradle.properties` to a version higher than the currently +released bugsnag-android, then run: + +```shell +./gradlew assembleRelease publishToMavenLocal +``` + +This installs bugsnag-android to a local maven repository. The example app should automatically use +this version when you next run the app. # Releasing a New Version @@ -224,12 +198,11 @@ If you are a project maintainer, you can build and release a new version of - [ ] Update the version number and dex count badge by running `make VERSION=[number] bump` - [ ] Inspect the updated CHANGELOG, README, and version files to ensure they are correct - Once merged: - - Pull the latest changes (checking out master if necessary) and build by running `./gradlew sdk:assembleRelease` + - Pull the latest changes (checking out master if necessary) and build by running `./gradlew assembleRelease` - Release to GitHub: - [ ] Run `git tag vX.X.X && git push origin --tags` - [ ] Create a release from your new tag on [GitHub Releases](https://github.com/bugsnag/bugsnag-android/releases) - - [ ] Upload the generated `.aar` file from `{sdk,ndk}/build/outputs/aar/bugsnag-android-*.aar` - - [ ] Release to Maven Central and Bintray by running `./gradlew sdk:assembleRelease publish bintrayUpload && ./gradlew sdk:assembleRelease publish bintrayUpload -PreleaseNdkArtefact=true` + - [ ] Release to Maven Central and Bintray by running `./gradlew assembleRelease publish bintrayUpload` - [ ] "Promote" the release build on Maven Central: - Go to the [sonatype open source dashboard](https://oss.sonatype.org/index.html#stagingRepositories) - Click the search box at the top right, and type “com.bugsnag” From 95642a15d1c190643b8e4168f37c15583bfa32a7 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 13:21:34 +0100 Subject: [PATCH 12/22] remove unused git submodule --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 79f86a35ab..1e09e98ec9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "bugsnag-android-ndk/src/main/jni/external/libunwindstack"] - path = bugsnag-android-ndk/src/main/jni/external/libunwindstack - url = https://github.com/bugsnag/libunwindstack-ndk [submodule "bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk"] path = bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk url = https://github.com/bugsnag/libunwindstack-ndk From 4e05aa088e466454c2ab734dc998208ba0fe0d53 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 11 Jul 2019 14:17:35 +0100 Subject: [PATCH 13/22] alter mazerunner tests to build against modularised artefacts --- .buildkite/pipeline.yml | 8 ++++---- Makefile | 2 +- bugsnag-android-anr/README.md | 2 +- bugsnag-android-core/README.md | 2 +- .../com/bugsnag/android/ErrorReaderTest.java | 3 --- bugsnag-android-ndk/README.md | 2 +- dockerfiles/Dockerfile.android-base | 8 ++++++-- dockerfiles/Dockerfile.android-builder | 10 ++++++--- .../Dockerfile.android-instrumentation-tests | 10 ++++++--- dockerfiles/Dockerfile.android-linter | 13 +++++++++--- examples/sdk-app-example/build.gradle | 10 +++++---- examples/sdk-app-example/fakekeys.jks | Bin 0 -> 2065 bytes .../example/ExampleActivity.kt | 9 +++++---- .../example/ExampleApplication.kt | 1 - features/fixtures/mazerunner/build.gradle | 18 ++++++++++++----- features/support/env.rb | 17 ++++++---------- gradle.properties | 2 +- scripts/build-instrumentation-tests.sh | 2 +- .../features/fixtures/mazerunner/build.gradle | 19 ++++++++++++------ 19 files changed, 83 insertions(+), 55 deletions(-) create mode 100644 examples/sdk-app-example/fakekeys.jks diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 9cef806461..923058d93b 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -141,7 +141,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/sdk/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r12b" concurrency: 5 @@ -152,7 +152,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/sdk/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r16b" concurrency: 5 @@ -163,8 +163,8 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/sdk/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r19" concurrency: 5 - concurrency_group: 'browserstack-app' \ No newline at end of file + concurrency_group: 'browserstack-app' diff --git a/Makefile b/Makefile index c6b8290de6..27b4bf5753 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ endif ifeq ($(BROWSER_STACK_ACCESS_KEY),) @$(error BROWSER_STACK_ACCESS_KEY is not defined) endif - @APP_LOCATION=/app/sdk/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk \ + @APP_LOCATION=/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk \ INSTRUMENTATION_DEVICES='["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' \ docker-compose up --build android-instrumentation-tests diff --git a/bugsnag-android-anr/README.md b/bugsnag-android-anr/README.md index a10eed70cb..ee012eecfa 100644 --- a/bugsnag-android-anr/README.md +++ b/bugsnag-android-anr/README.md @@ -1,4 +1,4 @@ -# bugsnag-android +# bugsnag-android-anr This module detects ANRs and reports them to bugsnag. diff --git a/bugsnag-android-core/README.md b/bugsnag-android-core/README.md index 45c94fad69..3d48abdb06 100644 --- a/bugsnag-android-core/README.md +++ b/bugsnag-android-core/README.md @@ -1,4 +1,4 @@ -# bugsnag-android +# bugsnag-android-core This module detects JVM exceptions and reports them to bugsnag. diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java index 3a10948305..30398be794 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java @@ -9,12 +9,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; -import com.bugsnag.android.core.R; - import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/bugsnag-android-ndk/README.md b/bugsnag-android-ndk/README.md index 737bfa1add..e1f8f7c013 100644 --- a/bugsnag-android-ndk/README.md +++ b/bugsnag-android-ndk/README.md @@ -1,4 +1,4 @@ -# bugsnag-android +# bugsnag-android-ndk This module detects NDK signals/exceptions and reports them to bugsnag. diff --git a/dockerfiles/Dockerfile.android-base b/dockerfiles/Dockerfile.android-base index 4845430430..bc099e7442 100644 --- a/dockerfiles/Dockerfile.android-base +++ b/dockerfiles/Dockerfile.android-base @@ -18,9 +18,13 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ -COPY sdk/ sdk/ +COPY bugsnag-android/ bugsnag-android/ +COPY bugsnag-android-anr/ bugsnag-android-anr/ +COPY bugsnag-android-core/ bugsnag-android-core/ +COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY examples/ examples/ COPY scripts/ scripts/ RUN scripts/install-ndk.sh -RUN ./gradlew \ No newline at end of file +RUN ./gradlew diff --git a/dockerfiles/Dockerfile.android-builder b/dockerfiles/Dockerfile.android-builder index 69e9de01c0..d74a9f4344 100644 --- a/dockerfiles/Dockerfile.android-builder +++ b/dockerfiles/Dockerfile.android-builder @@ -18,7 +18,11 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ -COPY sdk/ sdk/ +COPY bugsnag-android/ bugsnag-android/ +COPY bugsnag-android-anr/ bugsnag-android-anr/ +COPY bugsnag-android-core/ bugsnag-android-core/ +COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY examples/ examples/ COPY scripts/ scripts/ RUN scripts/install-ndk.sh @@ -43,10 +47,10 @@ RUN echo "signing.secretKeyRingFile=/root/.gnupg/secring.gpg" >> ~/.gradle/gradl # Build and upload to the local maven as version 9.9.9 RUN sed -i -e 's/VERSION_NAME=.*/VERSION_NAME=9.9.9/g' gradle.properties -RUN ./gradlew assembleRelease publishSDKPublicationToMavenLocal && ./gradlew assembleRelease publishSDKPublicationToMavenLocal -PreleaseNdkArtefact=true +RUN ./gradlew assembleRelease publishToMavenLocal COPY tests/features/ /app/features WORKDIR /app/features/fixtures/mazerunner -CMD ../../../gradlew assembleRelease && cp build/outputs/apk/release/mazerunner-release.apk /app/build/fixture.apk \ No newline at end of file +CMD ../../../gradlew assembleRelease && cp build/outputs/apk/release/mazerunner-release.apk /app/build/fixture.apk diff --git a/dockerfiles/Dockerfile.android-instrumentation-tests b/dockerfiles/Dockerfile.android-instrumentation-tests index 2623314756..dcd3af226f 100644 --- a/dockerfiles/Dockerfile.android-instrumentation-tests +++ b/dockerfiles/Dockerfile.android-instrumentation-tests @@ -18,7 +18,11 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ -COPY sdk/ sdk/ +COPY bugsnag-android/ bugsnag-android/ +COPY bugsnag-android-anr/ bugsnag-android-anr/ +COPY bugsnag-android-core/ bugsnag-android-core/ +COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY examples/ examples/ COPY scripts/ scripts/ RUN scripts/install-ndk.sh @@ -26,5 +30,5 @@ RUN scripts/install-ndk.sh RUN ./gradlew # Everything above this point should be derived from android-base -RUN sed --in-place="" --expression='s/"armeabi",//' sdk/build.gradle -CMD ./scripts/build-instrumentation-tests.sh && ./scripts/run-instrumentation-test.sh \ No newline at end of file +RUN sed --in-place="" --expression='s/"armeabi",//' bugsnag-android-anr/build.gradle bugsnag-android-ndk/build.gradle +CMD ./scripts/build-instrumentation-tests.sh && ./scripts/run-instrumentation-test.sh diff --git a/dockerfiles/Dockerfile.android-linter b/dockerfiles/Dockerfile.android-linter index bac635825a..7d206d1f3c 100644 --- a/dockerfiles/Dockerfile.android-linter +++ b/dockerfiles/Dockerfile.android-linter @@ -18,7 +18,11 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ -COPY sdk/ sdk/ +COPY bugsnag-android/ bugsnag-android/ +COPY bugsnag-android-anr/ bugsnag-android-anr/ +COPY bugsnag-android-core/ bugsnag-android-core/ +COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY examples/ examples/ COPY scripts/ scripts/ RUN scripts/install-ndk.sh @@ -31,8 +35,11 @@ RUN apt-get install -y cppcheck COPY examples/sdk-app-example/ examples/sdk-app-example/ COPY config/ config/ -RUN sed --in-place="" --expression="s/'armeabi',//" sdk/build.gradle examples/sdk-app-example/build.gradle +RUN sed --in-place="" --expression="s/'armeabi',//" bugsnag-android-anr/build.gradle \ + bugsnag-android-ndk/build.gradle examples/sdk-app-example/build.gradle CMD ./gradlew lint checkstyle detekt && \ - cppcheck --enable=warning,performance sdk/src/main/jni -i sdk/src/main/jni/deps -i sdk/src/main/jni/external + cppcheck --enable=warning,performance bugsnag-android-anr/src/main/jni && \ + cppcheck --enable=warning,performance bugsnag-android-ndk/src/main/jni -i \ + bugsnag-android-ndk/src/main/jni/deps -i bugsnag-android-ndk/src/main/jni/external diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index 27f44161a7..fc67d21975 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -13,7 +13,7 @@ android { config { keyAlias "password" keyPassword "password" - storeFile file("../../features/fixtures/fakekeys.jks") + storeFile file("fakekeys.jks") storePassword "password" } } @@ -35,17 +35,19 @@ android { signingConfig signingConfigs.config } } - lintOptions.disable "OnClick" externalNativeBuild.cmake.path "CMakeLists.txt" } +project.afterEvaluate { + project.android.lintOptions.abortOnError = false +} + // set this value to true if you wish to test with a local artefact // it will instruct gradle to copy the SO files from the AAR to the correct build directory def usingLocalArtefact = false dependencies { -// implementation "com.bugsnag:bugsnag-android:9.9.9" - implementation "com.bugsnag:bugsnag-android-ndk:4.16.1" + implementation "com.bugsnag:bugsnag-android:4.16.1" implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:support-v4:$supportLibVersion" diff --git a/examples/sdk-app-example/fakekeys.jks b/examples/sdk-app-example/fakekeys.jks new file mode 100644 index 0000000000000000000000000000000000000000..75604b1b5e05983d421419cb7b8a4d58de67ddca GIT binary patch literal 2065 zcmV+s2=4d(?f&fm0006200031000312ykI@b9ZlYWB>pGU|Ndp6#xJQ0Wg9D{V)y& z3M&Qy1OX}n5di@O00e>r=@4@P*)$;qgxj1S^RyramUJElrX&ZUIUhr;3WY3tK?3<=v&%x7$pWYs@3?`AELi0v$dj zFP<&mq9SFI?9<+f?AX?C)|OXJr&aLv79SgAwA%iAs z-av~+)`)5c7@%HD$&Hus?sT3%v?)Lvrm~l?`_q@2Vm@g}gq?Fse0`KxErZ{55vl(O z^rTNRZLYuSD;~i3gX#qy8QGu=_7c`;Q^4dqq!0|1;8|n@AazyZuQFN1YKFuAcAjR= z2eH63=5MVnKGXb5cWO;_S=dsV=o2Cfw!xkrDbi!^ za>c0rP-|oaC6kI9Z(U>=CWCaNDrA((+Obc7r1=OJ8g4i1`_4{q)@E~n{1Rg$l?df| z5H3I{lIce|IEWzB0rF|KQF`lAq~R|=s7B0p}#T>Cz-uCoT_TBS*^YDF*RN zO~a4`A(^!L(|6Q$41fi?(E5b@&m(3*#!8!=AYo}+6X+XLy zrw&R(I0imsj2ymAcVNG;#dJPJZ7PivD(#)1;2FDi%RT4NSb1Rp3b9pMkU*wHs1zH(Y zVd*|o{c{$js4-Vc9%IV^+}sK^=TY8b=j40iE7&{>=P9wIV$HSgpk*Up%oMI70S&!} z?1`o@W&}&o-^-9nZry~|q@2lzKPY~7{on;np`#S?{Uo44fBNGa{%25Wn=&{8FJuK7 zZ!&p2|MX=A!*e4CzF5(zE;#Yii2#E!D$NsAu8~tEw`@d#z8zuOuvF}?;RV7UzBEziY$e`E zlGR3Re+FO!F?{8pY<2LBkSg!6WtI(g3R3_800966SS~d%IRF3x$1s8d!!UvYtDpk{ z0RjR9B*e5lFbxI?Duzgg_YDC73k3i$5-|`k4h92N1PT)eLUm_zZeeFI9v2NUH!(6X zH8C_XIWRI>7Y#HrF)}bYF*GqbFfv*&5-|`k4h92N1PT)eLUm_zZeeFIf&n5h4F(A+ zhDe6@4FLfG1potr0S^E$f&mHwf&l>lwQ%YvekYxmdCcM#SRWbo9BmS3dB2N$Z$GcU z7n{oZ${?VfXz9FQ-+n{Jtp5S?*wwWG!9MZ%^Te1k_>7D2!@volX=FT-71ys|FqZ&J zq*lB%<7H}KVcr;PpI4vHu*6EG5=1&1qu3P}03=(f!}7wL0d?U)5EhLUCM)$n6$YeSoCIC8 z;8X;F-?>NP`LXjIVJZzr3*{BqA54Wx#E_E2OIR?hUuhhKn}6GJ`O>jRyP{$_duui9 z?UfMS;E#pcap64j^h0|8*^deh0s{d60iz)>A21yT163Uk1QrAo<}@&~nKVZ4XL#8# zW^b`e-?_dOFbxI?Duzgg_YDC73k3iJf&l>lI9pX_{IUA};%6)%o}ACYe9GxBRAr^7 z$4-py;JZ5C{DJz~kE-LK(&B-$b{s(V(s3MWn**hP+5=IaC{nWtURHYeS)GKN{CGGt zT3(55=?v zSw+p2hybQMRCB>=BoH9>iuw?~amFp`Chld literal 0 HcmV?d00001 diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt index 3d71a20ac0..bd5650aab6 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt @@ -27,7 +27,6 @@ class ExampleActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.main) setupToolbarLogo() - performAdditionalBugsnagSetup() val view: View = findViewById(R.id.btn_fatal_crash) view.setOnClickListener(::crashUnhandled) @@ -173,9 +172,11 @@ class ExampleActivity : AppCompatActivity() { @Suppress("UNUSED_PARAMETER") fun readDocs(view: View) { - val uri = Uri.parse("https://docs.bugsnag.com/platforms/android/sdk/") - val intent = Intent(Intent.ACTION_VIEW, uri) - startActivity(intent) + Bugsnag.init(this) +// +// val uri = Uri.parse("https://docs.bugsnag.com/platforms/android/sdk/") +// val intent = Intent(Intent.ACTION_VIEW, uri) +// startActivity(intent) } private fun generateUserMetaData(): MetaData { diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt index 33c2606a64..b03d0bfc2b 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt @@ -7,7 +7,6 @@ class ExampleApplication : Application() { override fun onCreate() { super.onCreate() - Bugsnag.init(this) } } diff --git a/features/fixtures/mazerunner/build.gradle b/features/fixtures/mazerunner/build.gradle index fb8a38246c..ae0b7dd7a7 100644 --- a/features/fixtures/mazerunner/build.gradle +++ b/features/fixtures/mazerunner/build.gradle @@ -1,9 +1,17 @@ repositories { + mavenLocal() google() - mavenCentral() - jcenter() - flatDir { - dirs 'libs' + + // ignore already published artefacts in jcenter/bintray in favour of mavenLocal artefact + mavenCentral() { + content { + excludeModule("com.bugsnag", "bugsnag-android") + } + } + jcenter { + content { + excludeModule("com.bugsnag", "bugsnag-android") + } } } @@ -68,7 +76,7 @@ android { } dependencies { - implementation(name:'bugsnag-android-ndk', ext:'aar') + implementation "com.bugsnag:bugsnag-android:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "com.facebook.infer.annotation:infer-annotation:0.11.2" api "com.android.support:support-annotations:27.0.0" diff --git a/features/support/env.rb b/features/support/env.rb index 9f41b10bfa..3efdfa9262 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -2,22 +2,17 @@ RUNNING_CI = ENV['TRAVIS'] == 'true' # Install latest versions of bugsnag-android -run_required_commands([ - [ - "./gradlew", "sdk:assembleRelease", "-PreleaseNdkArtefact=true", - "-x", "lintVitalRelease", - "-x", "countReleaseDexMethods" - ], - ["cp", "sdk/build/outputs/aar/bugsnag-android-*.aar", - "features/fixtures/mazerunner/libs/bugsnag-android-ndk.aar"], -]) + run_required_commands([ + [ + "./gradlew", "assembleRelease", "publishToMavenLocal", "-x", "lintVitalRelease" + ], + ]) # Build the harness app Dir.chdir('features/fixtures/mazerunner') do run_required_commands([ [ - "../../../gradlew", "assembleRelease", - "-x", "lintVitalRelease" + "../../../gradlew", "assembleRelease", "-x", "lintVitalRelease" ], ]) end diff --git a/gradle.properties b/gradle.properties index 2fec1fb5e9..4314cb0ed0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=9.9.9 +VERSION_NAME=4.16.1 GROUP=com.bugsnag POM_SCM_URL=https://github.com/bugsnag/bugsnag-android POM_SCM_CONNECTION=scm:git@github.com:bugsnag/bugsnag-android.git diff --git a/scripts/build-instrumentation-tests.sh b/scripts/build-instrumentation-tests.sh index 99b8f4b354..486b42dc6b 100755 --- a/scripts/build-instrumentation-tests.sh +++ b/scripts/build-instrumentation-tests.sh @@ -1,3 +1,3 @@ ./scripts/install-ndk.sh -./gradlew sdk:assembleAndroidTest --stacktrace +./gradlew assembleAndroidTest --stacktrace diff --git a/tests/features/fixtures/mazerunner/build.gradle b/tests/features/fixtures/mazerunner/build.gradle index 13a89a9590..49bb9283a0 100644 --- a/tests/features/fixtures/mazerunner/build.gradle +++ b/tests/features/fixtures/mazerunner/build.gradle @@ -1,10 +1,17 @@ repositories { - google() mavenLocal() - mavenCentral() - jcenter() - flatDir { - dirs 'libs' + google() + + // ignore already published artefacts in jcenter/bintray in favour of mavenLocal artefact + mavenCentral() { + content { + excludeModule("com.bugsnag", "bugsnag-android") + } + } + jcenter { + content { + excludeModule("com.bugsnag", "bugsnag-android") + } } } @@ -69,7 +76,7 @@ android { } dependencies { - implementation("com.bugsnag:bugsnag-android-ndk:9.9.9") + implementation "com.bugsnag:bugsnag-android:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "com.facebook.infer.annotation:infer-annotation:0.11.2" api "com.android.support:support-annotations:28.0.0" From b268d21b091450d29fba87f908ba3c68ab4df42a Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Fri, 12 Jul 2019 10:37:05 +0100 Subject: [PATCH 14/22] rename plugins as requested --- .buildkite/pipeline.yml | 6 +- .gitmodules | 4 +- Makefile | 2 +- TESTING.md | 2 +- bugsnag-android-anr/gradle.properties | 2 - .../src/main/jni/bugsnag_anr.h | 21 ------- bugsnag-android-core/gradle.properties | 2 - bugsnag-android-ndk/README.md | 8 +-- bugsnag-android-ndk/build.gradle | 25 +-------- .../src/main/AndroidManifest.xml | 2 +- bugsnag-android/README.md | 6 +- bugsnag-android/build.gradle | 6 +- .../CMakeLists.txt | 0 .../README.md | 2 +- .../build.gradle | 2 +- bugsnag-plugin-android-anr/gradle.properties | 2 + .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../src/main/CMakeLists.txt | 6 +- .../java/com/bugsnag/android/AnrPlugin.kt | 2 +- .../android/AppNotRespondingMonitor.java | 0 .../src/main/jni/anr_handler.c | 5 -- .../src/main/jni/anr_handler.h | 5 ++ .../src/main/jni/bugsnag_anr.c | 0 .../src/main/jni/bugsnag_anr.h | 16 ++++++ .../src/main/jni/utils/string.c | 0 .../src/main/jni/utils/string.h | 0 .../README.md | 2 +- .../build.gradle | 0 bugsnag-plugin-android-jvm/gradle.properties | 2 + .../proguard-rules.pro | 0 .../src/androidTest/AndroidManifest.xml | 0 .../java/com/bugsnag/android/AnrConfigTest.kt | 0 .../bugsnag/android/AppDataOverrideTest.kt | 0 .../bugsnag/android/AppDataSummaryTest.java | 0 .../java/com/bugsnag/android/AppDataTest.java | 4 +- .../com/bugsnag/android/BeforeNotifyTest.kt | 0 .../android/BeforeRecordBreadcrumbsTest.java | 0 .../com/bugsnag/android/BeforeSendTest.java | 0 .../com/bugsnag/android/BreadcrumbsTest.kt | 0 .../android/BugsnagPluginInterfaceTest.kt | 0 .../com/bugsnag/android/BugsnagTestUtils.java | 0 .../com/bugsnag/android/CachedThreadTest.java | 0 .../com/bugsnag/android/ClientConfigTest.java | 0 .../com/bugsnag/android/ClientNotifyTest.java | 0 .../java/com/bugsnag/android/ClientTest.java | 2 +- .../android/ConcurrentCallbackTest.java | 0 .../bugsnag/android/ConfigurationTest.java | 0 .../com/bugsnag/android/CustomException.java | 0 .../bugsnag/android/DeliveryCompatTest.java | 0 .../android/DeviceDataSummaryTest.java | 0 .../com/bugsnag/android/DeviceDataTest.java | 0 .../com/bugsnag/android/ErrorFilenameTest.kt | 0 .../com/bugsnag/android/ErrorReaderTest.java | 0 .../android/ErrorReportApiClientTest.java | 0 .../java/com/bugsnag/android/ErrorTest.java | 0 .../bugsnag/android/EventReceiverTest.java | 0 .../bugsnag/android/ExceptionHandlerTest.java | 0 .../com/bugsnag/android/ExceptionsTest.java | 0 .../java/com/bugsnag/android/FileUtils.java | 0 .../com/bugsnag/android/HandledStateTest.java | 0 .../com/bugsnag/android/JsonStreamTest.java | 0 .../android/JsonWriterBugsnagTest.java | 0 .../com/bugsnag/android/JsonWriterTest.java | 0 .../bugsnag/android/MetaDataMergeTest.java | 0 .../com/bugsnag/android/MetaDataTest.java | 0 .../bugsnag/android/NativeInterfaceTest.java | 0 .../com/bugsnag/android/NotifierTest.java | 0 .../com/bugsnag/android/NullMetadataTest.java | 0 .../android/ObserverInterfaceTest.java | 0 .../bugsnag/android/ProjectPackagesTest.kt | 2 +- .../java/com/bugsnag/android/ReportTest.java | 0 .../java/com/bugsnag/android/RxErrorTest.kt | 0 .../com/bugsnag/android/SessionStoreTest.java | 0 .../java/com/bugsnag/android/SessionTest.kt | 0 .../android/SessionTrackerStopResumeTest.kt | 0 .../bugsnag/android/SessionTrackerTest.java | 0 .../android/SessionTrackingPayloadTest.java | 0 .../com/bugsnag/android/StacktraceTest.java | 0 .../com/bugsnag/android/StrictModeTest.java | 0 .../bugsnag/android/StrictModeWrapper.java | 0 .../com/bugsnag/android/TestRunListener.kt | 0 .../com/bugsnag/android/ThreadStateTest.kt | 0 .../android/UniqueBeforeNotifyTest.java | 0 .../java/com/bugsnag/android/UserTest.java | 0 .../src/androidTest/resources/error.json | 0 .../src/androidTest/resources/rx_error.json | 0 .../src/main/AndroidManifest.xml | 2 +- .../java/com/bugsnag/android/AppData.java | 0 .../main/java/com/bugsnag/android/Async.java | 0 .../bugsnag/android/BadResponseException.java | 0 .../com/bugsnag/android/BeforeNotify.java | 0 .../android/BeforeRecordBreadcrumb.java | 0 .../java/com/bugsnag/android/BeforeSend.java | 0 .../bugsnag/android/BeforeSendSession.java | 0 .../java/com/bugsnag/android/Breadcrumb.java | 0 .../com/bugsnag/android/BreadcrumbType.java | 0 .../java/com/bugsnag/android/Breadcrumbs.java | 0 .../java/com/bugsnag/android/Bugsnag.java | 0 .../com/bugsnag/android/BugsnagException.java | 0 .../bugsnag/android/BugsnagPluginInterface.kt | 0 .../com/bugsnag/android/CachedThread.java | 0 .../java/com/bugsnag/android/Callback.java | 0 .../main/java/com/bugsnag/android/Client.java | 4 +- .../com/bugsnag/android/ConfigFactory.java | 0 .../com/bugsnag/android/Configuration.java | 0 .../com/bugsnag/android/ConnectivityCompat.kt | 0 .../java/com/bugsnag/android/DateUtils.java | 0 .../com/bugsnag/android/DefaultDelivery.java | 0 .../java/com/bugsnag/android/Delivery.java | 0 .../com/bugsnag/android/DeliveryCompat.java | 0 .../android/DeliveryFailureException.java | 0 .../com/bugsnag/android/DeliveryStyle.java | 0 .../java/com/bugsnag/android/DeviceData.java | 0 .../main/java/com/bugsnag/android/Error.java | 0 .../java/com/bugsnag/android/ErrorReader.java | 0 .../bugsnag/android/ErrorReportApiClient.java | 0 .../java/com/bugsnag/android/ErrorStore.java | 0 .../com/bugsnag/android/EventReceiver.java | 0 .../com/bugsnag/android/ExceptionHandler.java | 0 .../java/com/bugsnag/android/Exceptions.java | 0 .../java/com/bugsnag/android/FileStore.java | 0 .../bugsnag/android/ForegroundDetector.java | 0 .../com/bugsnag/android/HandledState.java | 0 .../java/com/bugsnag/android/IOUtils.java | 0 .../java/com/bugsnag/android/InternalApi.java | 0 .../java/com/bugsnag/android/JsonScope.java | 0 .../java/com/bugsnag/android/JsonStream.java | 0 .../java/com/bugsnag/android/JsonWriter.java | 0 .../main/java/com/bugsnag/android/Logger.java | 2 +- .../java/com/bugsnag/android/MapUtils.java | 0 .../java/com/bugsnag/android/MetaData.java | 0 .../com/bugsnag/android/NativeInterface.java | 5 ++ .../com/bugsnag/android/NetworkException.java | 0 .../java/com/bugsnag/android/Notifier.java | 0 .../java/com/bugsnag/android/NotifyType.java | 0 .../bugsnag/android/ObjectJsonStreamer.java | 0 .../main/java/com/bugsnag/android/Report.java | 0 .../java/com/bugsnag/android/Session.java | 0 .../com/bugsnag/android/SessionStore.java | 0 .../com/bugsnag/android/SessionTracker.java | 0 .../android/SessionTrackingApiClient.java | 0 .../android/SessionTrackingPayload.java | 0 .../java/com/bugsnag/android/Severity.java | 0 .../java/com/bugsnag/android/Stacktrace.java | 0 .../bugsnag/android/StrictModeHandler.java | 0 .../java/com/bugsnag/android/ThreadSafe.java | 0 .../java/com/bugsnag/android/ThreadState.java | 0 .../main/java/com/bugsnag/android/User.java | 0 .../CMakeLists.txt | 0 bugsnag-plugin-android-ndk/README.md | 9 +++ bugsnag-plugin-android-ndk/build.gradle | 24 ++++++++ bugsnag-plugin-android-ndk/gradle.properties | 2 + .../package.json | 0 .../proguard-rules.pro | 0 .../bugsnag/android/ndk/NativeCXXTest.java | 0 .../src/main/AndroidManifest.xml | 2 + .../src/main/CMakeLists.txt | 0 .../src/main/assets/include/bugsnag.h | 0 .../src/main/assets/include/report.h | 0 .../java/com/bugsnag/android/NdkPlugin.kt | 0 .../com/bugsnag/android/ndk/NativeBridge.java | 0 .../src/main/jni/bugsnag.c | 0 .../src/main/jni/bugsnag_ndk.c | 0 .../src/main/jni/bugsnag_ndk.h | 0 .../src/main/jni/deps/parson/package.json | 0 .../src/main/jni/deps/parson/parson.c | 0 .../src/main/jni/deps/parson/parson.h | 0 .../libunwind/include/__libunwind_config.h | 0 .../external/libunwind/include/libunwind.h | 0 .../src/main/jni/external/libunwindstack-ndk | 0 .../src/main/jni/handlers/cpp_handler.cpp | 0 .../src/main/jni/handlers/cpp_handler.h | 0 .../src/main/jni/handlers/signal_handler.c | 0 .../src/main/jni/handlers/signal_handler.h | 0 .../src/main/jni/metadata.c | 0 .../src/main/jni/metadata.h | 0 .../src/main/jni/report.c | 0 .../src/main/jni/report.h | 0 .../src/main/jni/utils/build.h | 0 .../src/main/jni/utils/crash_info.c | 0 .../src/main/jni/utils/crash_info.h | 0 .../src/main/jni/utils/migrate.h | 0 .../src/main/jni/utils/serializer.c | 0 .../src/main/jni/utils/serializer.h | 0 .../src/main/jni/utils/stack_unwinder.c | 0 .../src/main/jni/utils/stack_unwinder.h | 0 .../jni/utils/stack_unwinder_libcorkscrew.c | 0 .../jni/utils/stack_unwinder_libcorkscrew.h | 0 .../main/jni/utils/stack_unwinder_libunwind.c | 0 .../main/jni/utils/stack_unwinder_libunwind.h | 0 .../utils/stack_unwinder_libunwindstack.cpp | 0 .../jni/utils/stack_unwinder_libunwindstack.h | 0 .../main/jni/utils/stack_unwinder_simple.c | 0 .../main/jni/utils/stack_unwinder_simple.h | 0 .../src/main/jni/utils/string.c | 0 .../src/main/jni/utils/string.h | 0 .../src/test/CMakeLists.txt | 0 .../src/test/cpp/deps/greatest/greatest.h | 0 .../src/test/cpp/deps/greatest/package.json | 0 .../src/test/cpp/main.c | 0 .../src/test/cpp/test_breadcrumbs.c | 0 .../src/test/cpp/test_utils_serialize.c | 0 .../src/test/cpp/test_utils_string.c | 0 dockerfiles/Dockerfile.android-base | 5 +- dockerfiles/Dockerfile.android-builder | 5 +- .../Dockerfile.android-instrumentation-tests | 7 ++- dockerfiles/Dockerfile.android-linter | 15 ++--- examples/sdk-app-example/build.gradle | 8 --- .../sdk-app-example/ndk_local_setup.gradle | 55 ------------------- .../example/ExampleActivity.kt | 9 ++- .../example/ExampleApplication.kt | 1 + settings.gradle | 10 +++- 213 files changed, 129 insertions(+), 174 deletions(-) delete mode 100644 bugsnag-android-anr/gradle.properties delete mode 100644 bugsnag-android-anr/src/main/jni/bugsnag_anr.h delete mode 100644 bugsnag-android-core/gradle.properties rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/CMakeLists.txt (100%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/README.md (91%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/build.gradle (94%) create mode 100644 bugsnag-plugin-android-anr/gradle.properties rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/proguard-rules.pro (100%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/AndroidManifest.xml (100%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/CMakeLists.txt (86%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/java/com/bugsnag/android/AnrPlugin.kt (93%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java (100%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/jni/anr_handler.c (93%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/jni/anr_handler.h (82%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/jni/bugsnag_anr.c (100%) create mode 100644 bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/jni/utils/string.c (100%) rename {bugsnag-android-anr => bugsnag-plugin-android-anr}/src/main/jni/utils/string.h (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/README.md (92%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/build.gradle (100%) create mode 100644 bugsnag-plugin-android-jvm/gradle.properties rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/proguard-rules.pro (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/AndroidManifest.xml (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/AppDataTest.java (93%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ClientTest.java (99%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/CustomException.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ErrorTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/FileUtils.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/HandledStateTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/MetaDataTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/NotifierTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt (89%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ReportTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/SessionTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/StacktraceTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/StrictModeTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/TestRunListener.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/java/com/bugsnag/android/UserTest.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/resources/error.json (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/androidTest/resources/rx_error.json (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/AndroidManifest.xml (89%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/AppData.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Async.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BadResponseException.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BeforeNotify.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BeforeSend.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BeforeSendSession.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Breadcrumb.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BreadcrumbType.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Breadcrumbs.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Bugsnag.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BugsnagException.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/CachedThread.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Callback.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Client.java (99%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ConfigFactory.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Configuration.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ConnectivityCompat.kt (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DateUtils.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DefaultDelivery.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Delivery.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DeliveryCompat.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DeliveryFailureException.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DeliveryStyle.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/DeviceData.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Error.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ErrorReader.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ErrorReportApiClient.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ErrorStore.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/EventReceiver.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ExceptionHandler.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Exceptions.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/FileStore.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ForegroundDetector.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/HandledState.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/IOUtils.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/InternalApi.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/JsonScope.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/JsonStream.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/JsonWriter.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Logger.java (96%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/MapUtils.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/MetaData.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/NativeInterface.java (99%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/NetworkException.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Notifier.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/NotifyType.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Report.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Session.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/SessionStore.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/SessionTracker.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/SessionTrackingPayload.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Severity.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/Stacktrace.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/StrictModeHandler.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ThreadSafe.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/ThreadState.java (100%) rename {bugsnag-android-core => bugsnag-plugin-android-jvm}/src/main/java/com/bugsnag/android/User.java (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/CMakeLists.txt (100%) create mode 100644 bugsnag-plugin-android-ndk/README.md create mode 100644 bugsnag-plugin-android-ndk/build.gradle create mode 100644 bugsnag-plugin-android-ndk/gradle.properties rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/package.json (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/proguard-rules.pro (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java (100%) create mode 100644 bugsnag-plugin-android-ndk/src/main/AndroidManifest.xml rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/CMakeLists.txt (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/assets/include/bugsnag.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/assets/include/report.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/java/com/bugsnag/android/NdkPlugin.kt (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/java/com/bugsnag/android/ndk/NativeBridge.java (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/bugsnag.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/bugsnag_ndk.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/bugsnag_ndk.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/deps/parson/package.json (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/deps/parson/parson.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/deps/parson/parson.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/external/libunwind/include/__libunwind_config.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/external/libunwind/include/libunwind.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/external/libunwindstack-ndk (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/handlers/cpp_handler.cpp (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/handlers/cpp_handler.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/handlers/signal_handler.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/handlers/signal_handler.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/metadata.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/metadata.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/report.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/report.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/build.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/crash_info.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/crash_info.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/migrate.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/serializer.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/serializer.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libcorkscrew.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libcorkscrew.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libunwind.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libunwind.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libunwindstack.cpp (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_libunwindstack.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_simple.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/stack_unwinder_simple.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/string.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/main/jni/utils/string.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/CMakeLists.txt (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/deps/greatest/greatest.h (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/deps/greatest/package.json (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/main.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/test_breadcrumbs.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/test_utils_serialize.c (100%) rename {bugsnag-android-ndk => bugsnag-plugin-android-ndk}/src/test/cpp/test_utils_string.c (100%) delete mode 100644 examples/sdk-app-example/ndk_local_setup.gradle diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 923058d93b..fcf58c4ac0 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -141,7 +141,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r12b" concurrency: 5 @@ -152,7 +152,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r16b" concurrency: 5 @@ -163,7 +163,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r19" concurrency: 5 diff --git a/.gitmodules b/.gitmodules index 1e09e98ec9..a0972c06ec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk"] - path = bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk +[submodule "bugsnag-plugin-android-ndk/src/main/jni/external/libunwindstack-ndk"] + path = bugsnag-plugin-android-ndk/src/main/jni/external/libunwindstack-ndk url = https://github.com/bugsnag/libunwindstack-ndk diff --git a/Makefile b/Makefile index 27b4bf5753..fba9bf02ad 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ endif ifeq ($(BROWSER_STACK_ACCESS_KEY),) @$(error BROWSER_STACK_ACCESS_KEY is not defined) endif - @APP_LOCATION=/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-debug-androidTest.apk \ + @APP_LOCATION=/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk \ INSTRUMENTATION_DEVICES='["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' \ docker-compose up --build android-instrumentation-tests diff --git a/TESTING.md b/TESTING.md index d643afcdf9..6bd596000c 100644 --- a/TESTING.md +++ b/TESTING.md @@ -4,7 +4,7 @@ Commands can be run on the entire project, or on an individual module: ```shell ./gradlew build // builds whole project -./gradlew bugsnag-android-anr:build // builds bugsnag-android-anr module only +./gradlew bugsnag-plugin-android-anr:build // builds bugsnag-plugin-android-anr module only ``` ## Static analysis diff --git a/bugsnag-android-anr/gradle.properties b/bugsnag-android-anr/gradle.properties deleted file mode 100644 index 95b8920988..0000000000 --- a/bugsnag-android-anr/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -pomName=Bugsnag Android ANR -artefactId=bugsnag-android-anr diff --git a/bugsnag-android-anr/src/main/jni/bugsnag_anr.h b/bugsnag-android-anr/src/main/jni/bugsnag_anr.h deleted file mode 100644 index 419003ecff..0000000000 --- a/bugsnag-android-anr/src/main/jni/bugsnag_anr.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * JNI interface between bugsnag-android-anr JVM and C++ - */ -#ifndef BUGSNAG_ANR_H -#define BUGSNAG_ANR_H - -#include - -#ifndef BUGSNAG_LOG -#define BUGSNAG_LOG(fmt, ...) \ - __android_log_print(ANDROID_LOG_WARN, "BugsnagANR", fmt, ##__VA_ARGS__) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif -#endif // BUGSNAG_NDK_H diff --git a/bugsnag-android-core/gradle.properties b/bugsnag-android-core/gradle.properties deleted file mode 100644 index 99e420b0a5..0000000000 --- a/bugsnag-android-core/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -pomName=Bugsnag Android Core -artefactId=bugsnag-android-core diff --git a/bugsnag-android-ndk/README.md b/bugsnag-android-ndk/README.md index e1f8f7c013..9ff81719ec 100644 --- a/bugsnag-android-ndk/README.md +++ b/bugsnag-android-ndk/README.md @@ -1,9 +1,3 @@ # bugsnag-android-ndk -This module detects NDK signals/exceptions and reports them to bugsnag. - -## High-level Overview - -This module installs C signal handlers and a CPP exception handler. When a native crash occurs, -it writes a report to disk. This is then converted to a JVM report on the next app launch, and is -delivered to the error reporting API. +This module is identical to [bugsnag-android](../bugsnag-android/README.md) and is published for legacy support. diff --git a/bugsnag-android-ndk/build.gradle b/bugsnag-android-ndk/build.gradle index 00f63c2171..a192213eff 100644 --- a/bugsnag-android-ndk/build.gradle +++ b/bugsnag-android-ndk/build.gradle @@ -1,24 +1 @@ -apply plugin: "com.android.library" -apply plugin: "kotlin-android" -apply plugin: "io.gitlab.arturbosch.detekt" - -android { - compileSdkVersion rootProject.ext.compileSdkVersion - - defaultConfig { - minSdkVersion rootProject.ext.minSdkVersion - externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" - ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : - ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] - } - externalNativeBuild.cmake.path = "CMakeLists.txt" -} - -dependencies { - api project(":bugsnag-android-core") -} - -apply from: "../gradle/dependencies.gradle" -apply from: "../gradle/release.gradle" -apply from: "../gradle/detekt.gradle" -apply from: "../gradle/checkstyle.gradle" +apply from: "../bugsnag-android/build.gradle" diff --git a/bugsnag-android-ndk/src/main/AndroidManifest.xml b/bugsnag-android-ndk/src/main/AndroidManifest.xml index 6d65208857..c0e1ef95fa 100644 --- a/bugsnag-android-ndk/src/main/AndroidManifest.xml +++ b/bugsnag-android-ndk/src/main/AndroidManifest.xml @@ -1,2 +1,2 @@ - + diff --git a/bugsnag-android/README.md b/bugsnag-android/README.md index 7e5283121c..8ed8fd3162 100644 --- a/bugsnag-android/README.md +++ b/bugsnag-android/README.md @@ -11,7 +11,7 @@ implementation "com.bugsnag:bugsnag-android:$version" Which is simpler than manually specifying every single dependency: ``` -implementation "com.bugsnag:bugsnag-android-core:$version" -implementation "com.bugsnag:bugsnag-android-ndk:$version" -implementation "com.bugsnag:bugsnag-android-anr:$version" +implementation "com.bugsnag:bugsnag-plugin-android-jvm:$version" +implementation "com.bugsnag:bugsnag-plugin-android-ndk:$version" +implementation "com.bugsnag:bugsnag-plugin-android-anr:$version" ``` diff --git a/bugsnag-android/build.gradle b/bugsnag-android/build.gradle index 9f438d921b..bbe7600cd8 100644 --- a/bugsnag-android/build.gradle +++ b/bugsnag-android/build.gradle @@ -6,9 +6,9 @@ android { } dependencies { - api project(":bugsnag-android-core") - api project(":bugsnag-android-anr") - api project(":bugsnag-android-ndk") + api project(':bugsnag-plugin-android-jvm') + api project(':bugsnag-plugin-android-anr') + api project(':bugsnag-plugin-android-ndk') } apply from: "../gradle/release.gradle" diff --git a/bugsnag-android-anr/CMakeLists.txt b/bugsnag-plugin-android-anr/CMakeLists.txt similarity index 100% rename from bugsnag-android-anr/CMakeLists.txt rename to bugsnag-plugin-android-anr/CMakeLists.txt diff --git a/bugsnag-android-anr/README.md b/bugsnag-plugin-android-anr/README.md similarity index 91% rename from bugsnag-android-anr/README.md rename to bugsnag-plugin-android-anr/README.md index ee012eecfa..ef25f4626c 100644 --- a/bugsnag-android-anr/README.md +++ b/bugsnag-plugin-android-anr/README.md @@ -1,4 +1,4 @@ -# bugsnag-android-anr +# bugsnag-plugin-android-anr This module detects ANRs and reports them to bugsnag. diff --git a/bugsnag-android-anr/build.gradle b/bugsnag-plugin-android-anr/build.gradle similarity index 94% rename from bugsnag-android-anr/build.gradle rename to bugsnag-plugin-android-anr/build.gradle index 00f63c2171..513cdbbe8e 100644 --- a/bugsnag-android-anr/build.gradle +++ b/bugsnag-plugin-android-anr/build.gradle @@ -15,7 +15,7 @@ android { } dependencies { - api project(":bugsnag-android-core") + api project(':bugsnag-plugin-android-jvm') } apply from: "../gradle/dependencies.gradle" diff --git a/bugsnag-plugin-android-anr/gradle.properties b/bugsnag-plugin-android-anr/gradle.properties new file mode 100644 index 0000000000..0e68cfc63b --- /dev/null +++ b/bugsnag-plugin-android-anr/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android ANR +artefactId=bugsnag-plugin-android-anr diff --git a/bugsnag-android-anr/proguard-rules.pro b/bugsnag-plugin-android-anr/proguard-rules.pro similarity index 100% rename from bugsnag-android-anr/proguard-rules.pro rename to bugsnag-plugin-android-anr/proguard-rules.pro diff --git a/bugsnag-android-anr/src/main/AndroidManifest.xml b/bugsnag-plugin-android-anr/src/main/AndroidManifest.xml similarity index 100% rename from bugsnag-android-anr/src/main/AndroidManifest.xml rename to bugsnag-plugin-android-anr/src/main/AndroidManifest.xml diff --git a/bugsnag-android-anr/src/main/CMakeLists.txt b/bugsnag-plugin-android-anr/src/main/CMakeLists.txt similarity index 86% rename from bugsnag-android-anr/src/main/CMakeLists.txt rename to bugsnag-plugin-android-anr/src/main/CMakeLists.txt index 8ab76fb888..8223623cb5 100644 --- a/bugsnag-android-anr/src/main/CMakeLists.txt +++ b/bugsnag-plugin-android-anr/src/main/CMakeLists.txt @@ -1,6 +1,6 @@ set(BUGSNAG_VERSION 1.0.1) add_library( # Specifies the name of the library. - bugsnag-android-anr + bugsnag-plugin-android-anr # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). @@ -19,11 +19,11 @@ find_library( # Defines the name of the path variable that stores the log ) target_link_libraries( # Specifies the target library. - bugsnag-android-anr + bugsnag-plugin-android-anr # Links the log library to the target library. ${log-lib}) -set_target_properties(bugsnag-android-anr +set_target_properties(bugsnag-plugin-android-anr PROPERTIES COMPILE_OPTIONS -Werror -Wall -pedantic) diff --git a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt b/bugsnag-plugin-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt similarity index 93% rename from bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt rename to bugsnag-plugin-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt index c1132d5fa1..ef20bb1963 100644 --- a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt +++ b/bugsnag-plugin-android-anr/src/main/java/com/bugsnag/android/AnrPlugin.kt @@ -7,7 +7,7 @@ internal class AnrPlugin : BugsnagPlugin { private external fun installAnrDetection(sentinelBuffer: ByteBuffer) override fun initialisePlugin(client: Client) { - System.loadLibrary("bugsnag-android-anr") + System.loadLibrary("bugsnag-plugin-android-anr") val delegate: (Thread) -> Unit = { handleAnr(it, client) } val monitor = AppNotRespondingMonitor(delegate) monitor.start() diff --git a/bugsnag-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java b/bugsnag-plugin-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java similarity index 100% rename from bugsnag-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java rename to bugsnag-plugin-android-anr/src/main/java/com/bugsnag/android/AppNotRespondingMonitor.java diff --git a/bugsnag-android-anr/src/main/jni/anr_handler.c b/bugsnag-plugin-android-anr/src/main/jni/anr_handler.c similarity index 93% rename from bugsnag-android-anr/src/main/jni/anr_handler.c rename to bugsnag-plugin-android-anr/src/main/jni/anr_handler.c index c359276cf4..52c0c4c0fa 100644 --- a/bugsnag-android-anr/src/main/jni/anr_handler.c +++ b/bugsnag-plugin-android-anr/src/main/jni/anr_handler.c @@ -7,11 +7,6 @@ #include "utils/string.h" -#ifndef BUGSNAG_LOG -#define BUGSNAG_LOG(fmt, ...) \ - __android_log_print(ANDROID_LOG_WARN, "BugsnagNDK", fmt, ##__VA_ARGS__) -#endif - static pthread_t bsg_watchdog_thread; static sigset_t bsg_anr_sigmask; static char *bsg_anr_indicator_buffer = NULL; diff --git a/bugsnag-android-anr/src/main/jni/anr_handler.h b/bugsnag-plugin-android-anr/src/main/jni/anr_handler.h similarity index 82% rename from bugsnag-android-anr/src/main/jni/anr_handler.h rename to bugsnag-plugin-android-anr/src/main/jni/anr_handler.h index 18a0a5c244..7a3dfe1c8e 100644 --- a/bugsnag-android-anr/src/main/jni/anr_handler.h +++ b/bugsnag-plugin-android-anr/src/main/jni/anr_handler.h @@ -12,6 +12,11 @@ * * https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/AppErrors.java */ +#ifndef BUGSNAG_LOG +#define BUGSNAG_LOG(fmt, ...) \ + __android_log_print(ANDROID_LOG_WARN, "BugsnagANR", fmt, ##__VA_ARGS__) +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/bugsnag-android-anr/src/main/jni/bugsnag_anr.c b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c similarity index 100% rename from bugsnag-android-anr/src/main/jni/bugsnag_anr.c rename to bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c diff --git a/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h new file mode 100644 index 0000000000..412607e46a --- /dev/null +++ b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h @@ -0,0 +1,16 @@ +/** + * JNI interface between bugsnag-plugin-android-anr JVM and C++ + */ +#ifndef BUGSNAG_ANR_H +#define BUGSNAG_ANR_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif // BUGSNAG_NDK_H diff --git a/bugsnag-android-anr/src/main/jni/utils/string.c b/bugsnag-plugin-android-anr/src/main/jni/utils/string.c similarity index 100% rename from bugsnag-android-anr/src/main/jni/utils/string.c rename to bugsnag-plugin-android-anr/src/main/jni/utils/string.c diff --git a/bugsnag-android-anr/src/main/jni/utils/string.h b/bugsnag-plugin-android-anr/src/main/jni/utils/string.h similarity index 100% rename from bugsnag-android-anr/src/main/jni/utils/string.h rename to bugsnag-plugin-android-anr/src/main/jni/utils/string.h diff --git a/bugsnag-android-core/README.md b/bugsnag-plugin-android-jvm/README.md similarity index 92% rename from bugsnag-android-core/README.md rename to bugsnag-plugin-android-jvm/README.md index 3d48abdb06..ebc7c692de 100644 --- a/bugsnag-android-core/README.md +++ b/bugsnag-plugin-android-jvm/README.md @@ -1,4 +1,4 @@ -# bugsnag-android-core +# bugsnag-plugin-android-jvm This module detects JVM exceptions and reports them to bugsnag. diff --git a/bugsnag-android-core/build.gradle b/bugsnag-plugin-android-jvm/build.gradle similarity index 100% rename from bugsnag-android-core/build.gradle rename to bugsnag-plugin-android-jvm/build.gradle diff --git a/bugsnag-plugin-android-jvm/gradle.properties b/bugsnag-plugin-android-jvm/gradle.properties new file mode 100644 index 0000000000..cb5d3430d9 --- /dev/null +++ b/bugsnag-plugin-android-jvm/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android JVM +artefactId=bugsnag-plugin-android-jvm diff --git a/bugsnag-android-core/proguard-rules.pro b/bugsnag-plugin-android-jvm/proguard-rules.pro similarity index 100% rename from bugsnag-android-core/proguard-rules.pro rename to bugsnag-plugin-android-jvm/proguard-rules.pro diff --git a/bugsnag-android-core/src/androidTest/AndroidManifest.xml b/bugsnag-plugin-android-jvm/src/androidTest/AndroidManifest.xml similarity index 100% rename from bugsnag-android-core/src/androidTest/AndroidManifest.xml rename to bugsnag-plugin-android-jvm/src/androidTest/AndroidManifest.xml diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataTest.java similarity index 93% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataTest.java index 3471e1e42c..c24bc9cab8 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java +++ b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataTest.java @@ -52,7 +52,7 @@ public void setUp() throws Exception { @Test public void testAccessors() { - assertEquals("com.bugsnag.android.core.test", appData.get("packageName")); + assertEquals("com.bugsnag.android.jvm.test", appData.get("packageName")); assertNull(appData.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); @@ -68,7 +68,7 @@ public void testJsonSerialisation() throws JSONException { assertEquals("1.0", appDataJson.get("version")); assertEquals("development", appDataJson.get("releaseStage")); assertEquals("android", appDataJson.get("type")); - assertEquals("com.bugsnag.android.core.test", appDataJson.get("id")); + assertEquals("com.bugsnag.android.jvm.test", appDataJson.get("id")); assertNotNull(appDataJson.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientTest.java similarity index 99% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientTest.java index a4aba8e64d..7348334f06 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java +++ b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientTest.java @@ -330,7 +330,7 @@ public void testAppDataMetaData() { Map app = client.getAppData().getAppDataMetaData(); assertEquals(6, app.size()); assertEquals("Bugsnag Android Tests", app.get("name")); - assertEquals("com.bugsnag.android.core.test", app.get("packageName")); + assertEquals("com.bugsnag.android.jvm.test", app.get("packageName")); assertEquals("1.0", app.get("versionName")); assertNotNull(app.get("memoryUsage")); assertTrue(app.containsKey("activeScreen")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CustomException.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CustomException.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/FileUtils.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/FileUtils.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/HandledStateTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/HandledStateTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NotifierTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NotifierTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt similarity index 89% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt index d653e946a2..2636867884 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt +++ b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt @@ -13,7 +13,7 @@ class ProjectPackagesTest { assertNull(configuration.projectPackages) val client = Client(InstrumentationRegistry.getContext(), configuration) - assertArrayEquals(arrayOf("com.bugsnag.android.core.test"), client.config.projectPackages) + assertArrayEquals(arrayOf("com.bugsnag.android.jvm.test"), client.config.projectPackages) client.close() } diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ReportTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ReportTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StacktraceTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StacktraceTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/TestRunListener.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/TestRunListener.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java b/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UserTest.java similarity index 100% rename from bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java rename to bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UserTest.java diff --git a/bugsnag-android-core/src/androidTest/resources/error.json b/bugsnag-plugin-android-jvm/src/androidTest/resources/error.json similarity index 100% rename from bugsnag-android-core/src/androidTest/resources/error.json rename to bugsnag-plugin-android-jvm/src/androidTest/resources/error.json diff --git a/bugsnag-android-core/src/androidTest/resources/rx_error.json b/bugsnag-plugin-android-jvm/src/androidTest/resources/rx_error.json similarity index 100% rename from bugsnag-android-core/src/androidTest/resources/rx_error.json rename to bugsnag-plugin-android-jvm/src/androidTest/resources/rx_error.json diff --git a/bugsnag-android-core/src/main/AndroidManifest.xml b/bugsnag-plugin-android-jvm/src/main/AndroidManifest.xml similarity index 89% rename from bugsnag-android-core/src/main/AndroidManifest.xml rename to bugsnag-plugin-android-jvm/src/main/AndroidManifest.xml index 15e2e4fac7..c43f4fa6b0 100644 --- a/bugsnag-android-core/src/main/AndroidManifest.xml +++ b/bugsnag-plugin-android-jvm/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.bugsnag.android.jvm"> diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/AppData.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/AppData.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Async.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Async.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BadResponseException.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BadResponseException.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeNotify.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeNotify.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSend.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSend.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSendSession.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSendSession.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumb.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumb.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BreadcrumbType.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BreadcrumbType.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumbs.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumbs.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Bugsnag.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Bugsnag.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagException.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagException.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/CachedThread.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/CachedThread.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Callback.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Callback.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Client.java similarity index 99% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Client.java index dea972b883..1677d17139 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java +++ b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Client.java @@ -257,7 +257,7 @@ private void loadPlugins() { try { pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.NdkPlugin")); } catch (ClassNotFoundException exc) { - Logger.warn("bugsnag-android-ndk artefact not found on classpath, " + Logger.warn("bugsnag-plugin-android-ndk artefact not found on classpath, " + "NDK errors will not be captured."); } } @@ -265,7 +265,7 @@ private void loadPlugins() { try { pluginInterface.registerPlugin(Class.forName("com.bugsnag.android.AnrPlugin")); } catch (ClassNotFoundException exc) { - Logger.warn("bugsnag-android-anr artefact not found on classpath, " + Logger.warn("bugsnag-plugin-android-anr artefact not found on classpath, " + "ANR errors will not be captured."); } } diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConfigFactory.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConfigFactory.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Configuration.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Configuration.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConnectivityCompat.kt similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConnectivityCompat.kt diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DateUtils.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DateUtils.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DefaultDelivery.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DefaultDelivery.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Delivery.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Delivery.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryCompat.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryCompat.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryFailureException.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryFailureException.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryStyle.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryStyle.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeviceData.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeviceData.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Error.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Error.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReader.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReader.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReportApiClient.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReportApiClient.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorStore.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorStore.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/EventReceiver.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/EventReceiver.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ExceptionHandler.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ExceptionHandler.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Exceptions.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Exceptions.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/FileStore.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/FileStore.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ForegroundDetector.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ForegroundDetector.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/HandledState.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/HandledState.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/IOUtils.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/IOUtils.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/InternalApi.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/InternalApi.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonScope.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonScope.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonStream.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonStream.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonWriter.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonWriter.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Logger.java similarity index 96% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Logger.java index 707a08c87a..331ebd037a 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java +++ b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Logger.java @@ -3,7 +3,7 @@ import android.util.Log; @ThreadSafe -public final class Logger { +final class Logger { private static final String LOG_TAG = "Bugsnag"; private static volatile boolean enabled = true; diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MapUtils.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MapUtils.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MetaData.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MetaData.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NativeInterface.java similarity index 99% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NativeInterface.java index 1ddf441e45..5fd8e7cd26 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java +++ b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NativeInterface.java @@ -163,6 +163,11 @@ public static void setClient(@NonNull Client client) { NativeInterface.client = client; } + @Deprecated + public static void configureClientObservers(@NonNull Client client) { + setClient(client); + } + @Nullable public static String getContext() { return getClient().getContext(); diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NetworkException.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NetworkException.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Notifier.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Notifier.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NotifyType.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NotifyType.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Report.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Report.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Session.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Session.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionStore.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionStore.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTracker.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTracker.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingPayload.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingPayload.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Severity.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Severity.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Stacktrace.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Stacktrace.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/StrictModeHandler.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/StrictModeHandler.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadSafe.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadSafe.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadState.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadState.java diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/User.java b/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/User.java similarity index 100% rename from bugsnag-android-core/src/main/java/com/bugsnag/android/User.java rename to bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/User.java diff --git a/bugsnag-android-ndk/CMakeLists.txt b/bugsnag-plugin-android-ndk/CMakeLists.txt similarity index 100% rename from bugsnag-android-ndk/CMakeLists.txt rename to bugsnag-plugin-android-ndk/CMakeLists.txt diff --git a/bugsnag-plugin-android-ndk/README.md b/bugsnag-plugin-android-ndk/README.md new file mode 100644 index 0000000000..ae7be5b05b --- /dev/null +++ b/bugsnag-plugin-android-ndk/README.md @@ -0,0 +1,9 @@ +# bugsnag-plugin-android-ndk + +This module detects NDK signals/exceptions and reports them to bugsnag. + +## High-level Overview + +This module installs C signal handlers and a CPP exception handler. When a native crash occurs, +it writes a report to disk. This is then converted to a JVM report on the next app launch, and is +delivered to the error reporting API. diff --git a/bugsnag-plugin-android-ndk/build.gradle b/bugsnag-plugin-android-ndk/build.gradle new file mode 100644 index 0000000000..513cdbbe8e --- /dev/null +++ b/bugsnag-plugin-android-ndk/build.gradle @@ -0,0 +1,24 @@ +apply plugin: "com.android.library" +apply plugin: "kotlin-android" +apply plugin: "io.gitlab.arturbosch.detekt" + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.ext.minSdkVersion + externalNativeBuild.cmake.arguments "-DANDROID_CPP_FEATURES=exceptions", "-DANDROID_STL=c++_static" + ndk.abiFilters = project.hasProperty("ABI_FILTERS") ? project.ABI_FILTERS.split(",") : + ["arm64-v8a", "armeabi-v7a", "armeabi", "x86", "x86_64"] + } + externalNativeBuild.cmake.path = "CMakeLists.txt" +} + +dependencies { + api project(':bugsnag-plugin-android-jvm') +} + +apply from: "../gradle/dependencies.gradle" +apply from: "../gradle/release.gradle" +apply from: "../gradle/detekt.gradle" +apply from: "../gradle/checkstyle.gradle" diff --git a/bugsnag-plugin-android-ndk/gradle.properties b/bugsnag-plugin-android-ndk/gradle.properties new file mode 100644 index 0000000000..3418220e53 --- /dev/null +++ b/bugsnag-plugin-android-ndk/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android NDK +artefactId=bugsnag-plugin-android-ndk diff --git a/bugsnag-android-ndk/package.json b/bugsnag-plugin-android-ndk/package.json similarity index 100% rename from bugsnag-android-ndk/package.json rename to bugsnag-plugin-android-ndk/package.json diff --git a/bugsnag-android-ndk/proguard-rules.pro b/bugsnag-plugin-android-ndk/proguard-rules.pro similarity index 100% rename from bugsnag-android-ndk/proguard-rules.pro rename to bugsnag-plugin-android-ndk/proguard-rules.pro diff --git a/bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java b/bugsnag-plugin-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java similarity index 100% rename from bugsnag-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java rename to bugsnag-plugin-android-ndk/src/androidTest/java/com/bugsnag/android/ndk/NativeCXXTest.java diff --git a/bugsnag-plugin-android-ndk/src/main/AndroidManifest.xml b/bugsnag-plugin-android-ndk/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..6d65208857 --- /dev/null +++ b/bugsnag-plugin-android-ndk/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/bugsnag-android-ndk/src/main/CMakeLists.txt b/bugsnag-plugin-android-ndk/src/main/CMakeLists.txt similarity index 100% rename from bugsnag-android-ndk/src/main/CMakeLists.txt rename to bugsnag-plugin-android-ndk/src/main/CMakeLists.txt diff --git a/bugsnag-android-ndk/src/main/assets/include/bugsnag.h b/bugsnag-plugin-android-ndk/src/main/assets/include/bugsnag.h similarity index 100% rename from bugsnag-android-ndk/src/main/assets/include/bugsnag.h rename to bugsnag-plugin-android-ndk/src/main/assets/include/bugsnag.h diff --git a/bugsnag-android-ndk/src/main/assets/include/report.h b/bugsnag-plugin-android-ndk/src/main/assets/include/report.h similarity index 100% rename from bugsnag-android-ndk/src/main/assets/include/report.h rename to bugsnag-plugin-android-ndk/src/main/assets/include/report.h diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt b/bugsnag-plugin-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt similarity index 100% rename from bugsnag-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt rename to bugsnag-plugin-android-ndk/src/main/java/com/bugsnag/android/NdkPlugin.kt diff --git a/bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java b/bugsnag-plugin-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java similarity index 100% rename from bugsnag-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java rename to bugsnag-plugin-android-ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java diff --git a/bugsnag-android-ndk/src/main/jni/bugsnag.c b/bugsnag-plugin-android-ndk/src/main/jni/bugsnag.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/bugsnag.c rename to bugsnag-plugin-android-ndk/src/main/jni/bugsnag.c diff --git a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c b/bugsnag-plugin-android-ndk/src/main/jni/bugsnag_ndk.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/bugsnag_ndk.c rename to bugsnag-plugin-android-ndk/src/main/jni/bugsnag_ndk.c diff --git a/bugsnag-android-ndk/src/main/jni/bugsnag_ndk.h b/bugsnag-plugin-android-ndk/src/main/jni/bugsnag_ndk.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/bugsnag_ndk.h rename to bugsnag-plugin-android-ndk/src/main/jni/bugsnag_ndk.h diff --git a/bugsnag-android-ndk/src/main/jni/deps/parson/package.json b/bugsnag-plugin-android-ndk/src/main/jni/deps/parson/package.json similarity index 100% rename from bugsnag-android-ndk/src/main/jni/deps/parson/package.json rename to bugsnag-plugin-android-ndk/src/main/jni/deps/parson/package.json diff --git a/bugsnag-android-ndk/src/main/jni/deps/parson/parson.c b/bugsnag-plugin-android-ndk/src/main/jni/deps/parson/parson.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/deps/parson/parson.c rename to bugsnag-plugin-android-ndk/src/main/jni/deps/parson/parson.c diff --git a/bugsnag-android-ndk/src/main/jni/deps/parson/parson.h b/bugsnag-plugin-android-ndk/src/main/jni/deps/parson/parson.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/deps/parson/parson.h rename to bugsnag-plugin-android-ndk/src/main/jni/deps/parson/parson.h diff --git a/bugsnag-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h b/bugsnag-plugin-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h rename to bugsnag-plugin-android-ndk/src/main/jni/external/libunwind/include/__libunwind_config.h diff --git a/bugsnag-android-ndk/src/main/jni/external/libunwind/include/libunwind.h b/bugsnag-plugin-android-ndk/src/main/jni/external/libunwind/include/libunwind.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/external/libunwind/include/libunwind.h rename to bugsnag-plugin-android-ndk/src/main/jni/external/libunwind/include/libunwind.h diff --git a/bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk b/bugsnag-plugin-android-ndk/src/main/jni/external/libunwindstack-ndk similarity index 100% rename from bugsnag-android-ndk/src/main/jni/external/libunwindstack-ndk rename to bugsnag-plugin-android-ndk/src/main/jni/external/libunwindstack-ndk diff --git a/bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.cpp b/bugsnag-plugin-android-ndk/src/main/jni/handlers/cpp_handler.cpp similarity index 100% rename from bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.cpp rename to bugsnag-plugin-android-ndk/src/main/jni/handlers/cpp_handler.cpp diff --git a/bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.h b/bugsnag-plugin-android-ndk/src/main/jni/handlers/cpp_handler.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/handlers/cpp_handler.h rename to bugsnag-plugin-android-ndk/src/main/jni/handlers/cpp_handler.h diff --git a/bugsnag-android-ndk/src/main/jni/handlers/signal_handler.c b/bugsnag-plugin-android-ndk/src/main/jni/handlers/signal_handler.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/handlers/signal_handler.c rename to bugsnag-plugin-android-ndk/src/main/jni/handlers/signal_handler.c diff --git a/bugsnag-android-ndk/src/main/jni/handlers/signal_handler.h b/bugsnag-plugin-android-ndk/src/main/jni/handlers/signal_handler.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/handlers/signal_handler.h rename to bugsnag-plugin-android-ndk/src/main/jni/handlers/signal_handler.h diff --git a/bugsnag-android-ndk/src/main/jni/metadata.c b/bugsnag-plugin-android-ndk/src/main/jni/metadata.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/metadata.c rename to bugsnag-plugin-android-ndk/src/main/jni/metadata.c diff --git a/bugsnag-android-ndk/src/main/jni/metadata.h b/bugsnag-plugin-android-ndk/src/main/jni/metadata.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/metadata.h rename to bugsnag-plugin-android-ndk/src/main/jni/metadata.h diff --git a/bugsnag-android-ndk/src/main/jni/report.c b/bugsnag-plugin-android-ndk/src/main/jni/report.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/report.c rename to bugsnag-plugin-android-ndk/src/main/jni/report.c diff --git a/bugsnag-android-ndk/src/main/jni/report.h b/bugsnag-plugin-android-ndk/src/main/jni/report.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/report.h rename to bugsnag-plugin-android-ndk/src/main/jni/report.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/build.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/build.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/build.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/build.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/crash_info.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/crash_info.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/crash_info.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/crash_info.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/crash_info.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/crash_info.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/crash_info.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/crash_info.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/migrate.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/migrate.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/migrate.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/migrate.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/serializer.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/serializer.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/serializer.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/serializer.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libcorkscrew.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwind.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.cpp diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_libunwindstack.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_simple.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_simple.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_simple.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/stack_unwinder_simple.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/stack_unwinder_simple.h diff --git a/bugsnag-android-ndk/src/main/jni/utils/string.c b/bugsnag-plugin-android-ndk/src/main/jni/utils/string.c similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/string.c rename to bugsnag-plugin-android-ndk/src/main/jni/utils/string.c diff --git a/bugsnag-android-ndk/src/main/jni/utils/string.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/string.h similarity index 100% rename from bugsnag-android-ndk/src/main/jni/utils/string.h rename to bugsnag-plugin-android-ndk/src/main/jni/utils/string.h diff --git a/bugsnag-android-ndk/src/test/CMakeLists.txt b/bugsnag-plugin-android-ndk/src/test/CMakeLists.txt similarity index 100% rename from bugsnag-android-ndk/src/test/CMakeLists.txt rename to bugsnag-plugin-android-ndk/src/test/CMakeLists.txt diff --git a/bugsnag-android-ndk/src/test/cpp/deps/greatest/greatest.h b/bugsnag-plugin-android-ndk/src/test/cpp/deps/greatest/greatest.h similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/deps/greatest/greatest.h rename to bugsnag-plugin-android-ndk/src/test/cpp/deps/greatest/greatest.h diff --git a/bugsnag-android-ndk/src/test/cpp/deps/greatest/package.json b/bugsnag-plugin-android-ndk/src/test/cpp/deps/greatest/package.json similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/deps/greatest/package.json rename to bugsnag-plugin-android-ndk/src/test/cpp/deps/greatest/package.json diff --git a/bugsnag-android-ndk/src/test/cpp/main.c b/bugsnag-plugin-android-ndk/src/test/cpp/main.c similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/main.c rename to bugsnag-plugin-android-ndk/src/test/cpp/main.c diff --git a/bugsnag-android-ndk/src/test/cpp/test_breadcrumbs.c b/bugsnag-plugin-android-ndk/src/test/cpp/test_breadcrumbs.c similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/test_breadcrumbs.c rename to bugsnag-plugin-android-ndk/src/test/cpp/test_breadcrumbs.c diff --git a/bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c b/bugsnag-plugin-android-ndk/src/test/cpp/test_utils_serialize.c similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/test_utils_serialize.c rename to bugsnag-plugin-android-ndk/src/test/cpp/test_utils_serialize.c diff --git a/bugsnag-android-ndk/src/test/cpp/test_utils_string.c b/bugsnag-plugin-android-ndk/src/test/cpp/test_utils_string.c similarity index 100% rename from bugsnag-android-ndk/src/test/cpp/test_utils_string.c rename to bugsnag-plugin-android-ndk/src/test/cpp/test_utils_string.c diff --git a/dockerfiles/Dockerfile.android-base b/dockerfiles/Dockerfile.android-base index bc099e7442..6682b08b67 100644 --- a/dockerfiles/Dockerfile.android-base +++ b/dockerfiles/Dockerfile.android-base @@ -19,9 +19,10 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ -COPY bugsnag-android-anr/ bugsnag-android-anr/ -COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ +COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/dockerfiles/Dockerfile.android-builder b/dockerfiles/Dockerfile.android-builder index d74a9f4344..60d8832d1f 100644 --- a/dockerfiles/Dockerfile.android-builder +++ b/dockerfiles/Dockerfile.android-builder @@ -19,9 +19,10 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ -COPY bugsnag-android-anr/ bugsnag-android-anr/ -COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ +COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/dockerfiles/Dockerfile.android-instrumentation-tests b/dockerfiles/Dockerfile.android-instrumentation-tests index dcd3af226f..4d2b4c5180 100644 --- a/dockerfiles/Dockerfile.android-instrumentation-tests +++ b/dockerfiles/Dockerfile.android-instrumentation-tests @@ -19,9 +19,10 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ -COPY bugsnag-android-anr/ bugsnag-android-anr/ -COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ +COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ @@ -30,5 +31,5 @@ RUN scripts/install-ndk.sh RUN ./gradlew # Everything above this point should be derived from android-base -RUN sed --in-place="" --expression='s/"armeabi",//' bugsnag-android-anr/build.gradle bugsnag-android-ndk/build.gradle +RUN sed --in-place="" --expression='s/"armeabi",//' bugsnag-plugin-android-anr/build.gradle bugsnag-plugin-android-ndk/build.gradle CMD ./scripts/build-instrumentation-tests.sh && ./scripts/run-instrumentation-test.sh diff --git a/dockerfiles/Dockerfile.android-linter b/dockerfiles/Dockerfile.android-linter index 7d206d1f3c..545c59da73 100644 --- a/dockerfiles/Dockerfile.android-linter +++ b/dockerfiles/Dockerfile.android-linter @@ -19,9 +19,10 @@ WORKDIR /app COPY gradlew build.gradle settings.gradle gradle.properties /app/ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ -COPY bugsnag-android-anr/ bugsnag-android-anr/ -COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ +COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ +COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ @@ -35,11 +36,11 @@ RUN apt-get install -y cppcheck COPY examples/sdk-app-example/ examples/sdk-app-example/ COPY config/ config/ -RUN sed --in-place="" --expression="s/'armeabi',//" bugsnag-android-anr/build.gradle \ - bugsnag-android-ndk/build.gradle examples/sdk-app-example/build.gradle +RUN sed --in-place="" --expression="s/'armeabi',//" bugsnag-plugin-android-anr/build.gradle \ + bugsnag-plugin-android-ndk/build.gradle examples/sdk-app-example/build.gradle CMD ./gradlew lint checkstyle detekt && \ - cppcheck --enable=warning,performance bugsnag-android-anr/src/main/jni && \ - cppcheck --enable=warning,performance bugsnag-android-ndk/src/main/jni -i \ - bugsnag-android-ndk/src/main/jni/deps -i bugsnag-android-ndk/src/main/jni/external + cppcheck --enable=warning,performance bugsnag-plugin-android-anr/src/main/jni && \ + cppcheck --enable=warning,performance bugsnag-plugin-android-ndk/src/main/jni -i \ + bugsnag-plugin-android-ndk/src/main/jni/deps -i bugsnag-plugin-android-ndk/src/main/jni/external diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index fc67d21975..4e35191960 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -42,10 +42,6 @@ project.afterEvaluate { project.android.lintOptions.abortOnError = false } -// set this value to true if you wish to test with a local artefact -// it will instruct gradle to copy the SO files from the AAR to the correct build directory -def usingLocalArtefact = false - dependencies { implementation "com.bugsnag:bugsnag-android:4.16.1" @@ -56,7 +52,3 @@ dependencies { apply plugin: "com.bugsnag.android.gradle" bugsnag.failOnUploadError = false - -if (usingLocalArtefact) { - apply from: "ndk_local_setup.gradle" -} diff --git a/examples/sdk-app-example/ndk_local_setup.gradle b/examples/sdk-app-example/ndk_local_setup.gradle deleted file mode 100644 index f53fa2bb60..0000000000 --- a/examples/sdk-app-example/ndk_local_setup.gradle +++ /dev/null @@ -1,55 +0,0 @@ - -// Local development settings. Uncomment these if referencing -// local dependencies: -assemble.dependsOn ":ndk:assemble" -/** - * Gradle configuration for unpacking native API for CMake. Only required - * when building against local artifacts. - */ -import org.gradle.api.DefaultTask -import org.gradle.api.tasks.TaskAction - -class BugsnagTestNdkSetupTask extends DefaultTask { - - @TaskAction - void setupNdkProject() { - def artifactFile = findBugsnagNdkArchive() - File dst = new File(project.buildDir, "/intermediates/bugsnag-libs") - - project.copy { - from project.zipTree(artifactFile) - into(project.file(dst)) - } - } - - File findBugsnagNdkArchive() { - for (def config in project.configurations) { - try { - def artifactFile = config.resolvedConfiguration.getFiles().find { - it.toString().contains("bugsnag-android") - } - if (artifactFile && artifactFile.exists()) { - return artifactFile - } - } catch (Exception e) {} // some configurations cannot be directly resolved - } - throw new Exception("SOLUTION: The bugsnag-android-ndk file was not found, please run `./gradlew ndk:assembleRelease`") - } -} - -project.afterEvaluate { - def cleanTasks = project.tasks.findAll { - it.name.startsWith("externalNative") && it.name.contains("Clean") - } - def buildTasks = project.tasks.findAll { - it.name.startsWith("externalNative") && it.name.contains("Build") && !it.name.contains("Clean") - } - - def ndkSetupTask = project.tasks.create("bugsnagInstallAllJniLibsTask", BugsnagTestNdkSetupTask) - - buildTasks.forEach { - ndkSetupTask.mustRunAfter(cleanTasks) - it.dependsOn ndkSetupTask - it.doFirst { ndkSetupTask } - } -} diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt index bd5650aab6..3d71a20ac0 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleActivity.kt @@ -27,6 +27,7 @@ class ExampleActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.main) setupToolbarLogo() + performAdditionalBugsnagSetup() val view: View = findViewById(R.id.btn_fatal_crash) view.setOnClickListener(::crashUnhandled) @@ -172,11 +173,9 @@ class ExampleActivity : AppCompatActivity() { @Suppress("UNUSED_PARAMETER") fun readDocs(view: View) { - Bugsnag.init(this) -// -// val uri = Uri.parse("https://docs.bugsnag.com/platforms/android/sdk/") -// val intent = Intent(Intent.ACTION_VIEW, uri) -// startActivity(intent) + val uri = Uri.parse("https://docs.bugsnag.com/platforms/android/sdk/") + val intent = Intent(Intent.ACTION_VIEW, uri) + startActivity(intent) } private fun generateUserMetaData(): MetaData { diff --git a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt index b03d0bfc2b..33c2606a64 100644 --- a/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt +++ b/examples/sdk-app-example/src/main/java/com.bugsnag.android/example/ExampleApplication.kt @@ -7,6 +7,7 @@ class ExampleApplication : Application() { override fun onCreate() { super.onCreate() + Bugsnag.init(this) } } diff --git a/settings.gradle b/settings.gradle index d9fef9278d..f0272ed29d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,9 @@ -include ":bugsnag-android", ":bugsnag-android-core", ":bugsnag-android-anr", - ":bugsnag-android-ndk", ":sdkAppExample" +include( + ":bugsnag-android", + ":bugsnag-android-ndk", + ':bugsnag-plugin-android-jvm', + ':bugsnag-plugin-android-anr', + ':bugsnag-plugin-android-ndk', + ":sdkAppExample" +) project(":sdkAppExample").projectDir = new File("examples/sdk-app-example") From 49ccfc52d4d19421e73812eb205008f61cf20478 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 15 Jul 2019 10:34:28 +0100 Subject: [PATCH 15/22] rename bugsnag-plugin-android-jvm to bugsnag-android-core --- .buildkite/pipeline.yml | 6 +++--- Makefile | 2 +- .../README.md | 2 +- .../build.gradle | 0 bugsnag-android-core/gradle.properties | 2 ++ .../proguard-rules.pro | 0 .../src/androidTest/AndroidManifest.xml | 0 .../androidTest/java/com/bugsnag/android/AnrConfigTest.kt | 0 .../java/com/bugsnag/android/AppDataOverrideTest.kt | 0 .../java/com/bugsnag/android/AppDataSummaryTest.java | 0 .../androidTest/java/com/bugsnag/android/AppDataTest.java | 0 .../java/com/bugsnag/android/BeforeNotifyTest.kt | 0 .../com/bugsnag/android/BeforeRecordBreadcrumbsTest.java | 0 .../java/com/bugsnag/android/BeforeSendTest.java | 0 .../androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt | 0 .../java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt | 0 .../java/com/bugsnag/android/BugsnagTestUtils.java | 0 .../java/com/bugsnag/android/CachedThreadTest.java | 0 .../java/com/bugsnag/android/ClientConfigTest.java | 0 .../java/com/bugsnag/android/ClientNotifyTest.java | 0 .../androidTest/java/com/bugsnag/android/ClientTest.java | 0 .../java/com/bugsnag/android/ConcurrentCallbackTest.java | 0 .../java/com/bugsnag/android/ConfigurationTest.java | 0 .../java/com/bugsnag/android/CustomException.java | 0 .../java/com/bugsnag/android/DeliveryCompatTest.java | 0 .../java/com/bugsnag/android/DeviceDataSummaryTest.java | 0 .../java/com/bugsnag/android/DeviceDataTest.java | 0 .../java/com/bugsnag/android/ErrorFilenameTest.kt | 0 .../java/com/bugsnag/android/ErrorReaderTest.java | 0 .../java/com/bugsnag/android/ErrorReportApiClientTest.java | 0 .../src/androidTest/java/com/bugsnag/android/ErrorTest.java | 0 .../java/com/bugsnag/android/EventReceiverTest.java | 0 .../java/com/bugsnag/android/ExceptionHandlerTest.java | 0 .../java/com/bugsnag/android/ExceptionsTest.java | 0 .../src/androidTest/java/com/bugsnag/android/FileUtils.java | 0 .../java/com/bugsnag/android/HandledStateTest.java | 0 .../java/com/bugsnag/android/JsonStreamTest.java | 0 .../java/com/bugsnag/android/JsonWriterBugsnagTest.java | 0 .../java/com/bugsnag/android/JsonWriterTest.java | 0 .../java/com/bugsnag/android/MetaDataMergeTest.java | 0 .../androidTest/java/com/bugsnag/android/MetaDataTest.java | 0 .../java/com/bugsnag/android/NativeInterfaceTest.java | 0 .../androidTest/java/com/bugsnag/android/NotifierTest.java | 0 .../java/com/bugsnag/android/NullMetadataTest.java | 0 .../java/com/bugsnag/android/ObserverInterfaceTest.java | 0 .../java/com/bugsnag/android/ProjectPackagesTest.kt | 0 .../androidTest/java/com/bugsnag/android/ReportTest.java | 0 .../src/androidTest/java/com/bugsnag/android/RxErrorTest.kt | 0 .../java/com/bugsnag/android/SessionStoreTest.java | 0 .../src/androidTest/java/com/bugsnag/android/SessionTest.kt | 0 .../com/bugsnag/android/SessionTrackerStopResumeTest.kt | 0 .../java/com/bugsnag/android/SessionTrackerTest.java | 0 .../com/bugsnag/android/SessionTrackingPayloadTest.java | 0 .../java/com/bugsnag/android/StacktraceTest.java | 0 .../java/com/bugsnag/android/StrictModeTest.java | 0 .../java/com/bugsnag/android/StrictModeWrapper.java | 0 .../androidTest/java/com/bugsnag/android/TestRunListener.kt | 0 .../androidTest/java/com/bugsnag/android/ThreadStateTest.kt | 0 .../java/com/bugsnag/android/UniqueBeforeNotifyTest.java | 0 .../src/androidTest/java/com/bugsnag/android/UserTest.java | 0 .../src/androidTest/resources/error.json | 0 .../src/androidTest/resources/rx_error.json | 0 .../src/main/AndroidManifest.xml | 0 .../src/main/java/com/bugsnag/android/AppData.java | 0 .../src/main/java/com/bugsnag/android/Async.java | 0 .../main/java/com/bugsnag/android/BadResponseException.java | 0 .../src/main/java/com/bugsnag/android/BeforeNotify.java | 0 .../java/com/bugsnag/android/BeforeRecordBreadcrumb.java | 0 .../src/main/java/com/bugsnag/android/BeforeSend.java | 0 .../main/java/com/bugsnag/android/BeforeSendSession.java | 0 .../src/main/java/com/bugsnag/android/Breadcrumb.java | 0 .../src/main/java/com/bugsnag/android/BreadcrumbType.java | 0 .../src/main/java/com/bugsnag/android/Breadcrumbs.java | 0 .../src/main/java/com/bugsnag/android/Bugsnag.java | 0 .../src/main/java/com/bugsnag/android/BugsnagException.java | 0 .../main/java/com/bugsnag/android/BugsnagPluginInterface.kt | 0 .../src/main/java/com/bugsnag/android/CachedThread.java | 0 .../src/main/java/com/bugsnag/android/Callback.java | 0 .../src/main/java/com/bugsnag/android/Client.java | 0 .../src/main/java/com/bugsnag/android/ConfigFactory.java | 0 .../src/main/java/com/bugsnag/android/Configuration.java | 0 .../src/main/java/com/bugsnag/android/ConnectivityCompat.kt | 0 .../src/main/java/com/bugsnag/android/DateUtils.java | 0 .../src/main/java/com/bugsnag/android/DefaultDelivery.java | 0 .../src/main/java/com/bugsnag/android/Delivery.java | 0 .../src/main/java/com/bugsnag/android/DeliveryCompat.java | 0 .../java/com/bugsnag/android/DeliveryFailureException.java | 0 .../src/main/java/com/bugsnag/android/DeliveryStyle.java | 0 .../src/main/java/com/bugsnag/android/DeviceData.java | 0 .../src/main/java/com/bugsnag/android/Error.java | 0 .../src/main/java/com/bugsnag/android/ErrorReader.java | 0 .../main/java/com/bugsnag/android/ErrorReportApiClient.java | 0 .../src/main/java/com/bugsnag/android/ErrorStore.java | 0 .../src/main/java/com/bugsnag/android/EventReceiver.java | 0 .../src/main/java/com/bugsnag/android/ExceptionHandler.java | 0 .../src/main/java/com/bugsnag/android/Exceptions.java | 0 .../src/main/java/com/bugsnag/android/FileStore.java | 0 .../main/java/com/bugsnag/android/ForegroundDetector.java | 0 .../src/main/java/com/bugsnag/android/HandledState.java | 0 .../src/main/java/com/bugsnag/android/IOUtils.java | 0 .../src/main/java/com/bugsnag/android/InternalApi.java | 0 .../src/main/java/com/bugsnag/android/JsonScope.java | 0 .../src/main/java/com/bugsnag/android/JsonStream.java | 0 .../src/main/java/com/bugsnag/android/JsonWriter.java | 0 .../src/main/java/com/bugsnag/android/Logger.java | 0 .../src/main/java/com/bugsnag/android/MapUtils.java | 0 .../src/main/java/com/bugsnag/android/MetaData.java | 0 .../src/main/java/com/bugsnag/android/NativeInterface.java | 0 .../src/main/java/com/bugsnag/android/NetworkException.java | 0 .../src/main/java/com/bugsnag/android/Notifier.java | 0 .../src/main/java/com/bugsnag/android/NotifyType.java | 0 .../main/java/com/bugsnag/android/ObjectJsonStreamer.java | 0 .../src/main/java/com/bugsnag/android/Report.java | 0 .../src/main/java/com/bugsnag/android/Session.java | 0 .../src/main/java/com/bugsnag/android/SessionStore.java | 0 .../src/main/java/com/bugsnag/android/SessionTracker.java | 0 .../java/com/bugsnag/android/SessionTrackingApiClient.java | 0 .../java/com/bugsnag/android/SessionTrackingPayload.java | 0 .../src/main/java/com/bugsnag/android/Severity.java | 0 .../src/main/java/com/bugsnag/android/Stacktrace.java | 0 .../main/java/com/bugsnag/android/StrictModeHandler.java | 0 .../src/main/java/com/bugsnag/android/ThreadSafe.java | 0 .../src/main/java/com/bugsnag/android/ThreadState.java | 0 .../src/main/java/com/bugsnag/android/User.java | 0 bugsnag-android/README.md | 2 +- bugsnag-android/build.gradle | 2 +- bugsnag-plugin-android-anr/build.gradle | 2 +- bugsnag-plugin-android-jvm/gradle.properties | 2 -- bugsnag-plugin-android-ndk/build.gradle | 2 +- build.gradle | 1 + dockerfiles/Dockerfile.android-base | 2 +- dockerfiles/Dockerfile.android-builder | 2 +- dockerfiles/Dockerfile.android-instrumentation-tests | 2 +- dockerfiles/Dockerfile.android-linter | 2 +- settings.gradle | 2 +- 135 files changed, 17 insertions(+), 16 deletions(-) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/README.md (92%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/build.gradle (100%) create mode 100644 bugsnag-android-core/gradle.properties rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/proguard-rules.pro (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/AndroidManifest.xml (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/AppDataTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ClientTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/CustomException.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ErrorTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/FileUtils.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/HandledStateTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/MetaDataTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NotifierTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ReportTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StacktraceTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StrictModeTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/TestRunListener.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/java/com/bugsnag/android/UserTest.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/resources/error.json (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/androidTest/resources/rx_error.json (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/AndroidManifest.xml (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/AppData.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Async.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BadResponseException.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeNotify.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeSend.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BeforeSendSession.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Breadcrumb.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BreadcrumbType.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Breadcrumbs.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Bugsnag.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BugsnagException.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/CachedThread.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Callback.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Client.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ConfigFactory.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Configuration.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ConnectivityCompat.kt (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DateUtils.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DefaultDelivery.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Delivery.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryCompat.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryFailureException.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeliveryStyle.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/DeviceData.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Error.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorReader.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorReportApiClient.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ErrorStore.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/EventReceiver.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ExceptionHandler.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Exceptions.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/FileStore.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ForegroundDetector.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/HandledState.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/IOUtils.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/InternalApi.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonScope.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonStream.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/JsonWriter.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Logger.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/MapUtils.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/MetaData.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/NativeInterface.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/NetworkException.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Notifier.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/NotifyType.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Report.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Session.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionStore.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTracker.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/SessionTrackingPayload.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Severity.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/Stacktrace.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/StrictModeHandler.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ThreadSafe.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/ThreadState.java (100%) rename {bugsnag-plugin-android-jvm => bugsnag-android-core}/src/main/java/com/bugsnag/android/User.java (100%) delete mode 100644 bugsnag-plugin-android-jvm/gradle.properties diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index fcf58c4ac0..0abb775d89 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -141,7 +141,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-core-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r12b" concurrency: 5 @@ -152,7 +152,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-core-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r16b" concurrency: 5 @@ -163,7 +163,7 @@ steps: - docker-compose#v2.6.0: run: android-instrumentation-tests env: - APP_LOCATION: "/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk" + APP_LOCATION: "/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-core-debug-androidTest.apk" INSTRUMENTATION_DEVICES: '["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' NDK_VERSION: "r19" concurrency: 5 diff --git a/Makefile b/Makefile index fba9bf02ad..ed531e74f7 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ endif ifeq ($(BROWSER_STACK_ACCESS_KEY),) @$(error BROWSER_STACK_ACCESS_KEY is not defined) endif - @APP_LOCATION=/app/bugsnag-plugin-android-jvm/build/outputs/apk/androidTest/debug/bugsnag-plugin-android-jvm-debug-androidTest.apk \ + @APP_LOCATION=/app/bugsnag-android-core/build/outputs/apk/androidTest/debug/bugsnag-android-core-debug-androidTest.apk \ INSTRUMENTATION_DEVICES='["Google Nexus 5-4.4", "Google Pixel-7.1", "Google Pixel 3-9.0"]' \ docker-compose up --build android-instrumentation-tests diff --git a/bugsnag-plugin-android-jvm/README.md b/bugsnag-android-core/README.md similarity index 92% rename from bugsnag-plugin-android-jvm/README.md rename to bugsnag-android-core/README.md index ebc7c692de..3d48abdb06 100644 --- a/bugsnag-plugin-android-jvm/README.md +++ b/bugsnag-android-core/README.md @@ -1,4 +1,4 @@ -# bugsnag-plugin-android-jvm +# bugsnag-android-core This module detects JVM exceptions and reports them to bugsnag. diff --git a/bugsnag-plugin-android-jvm/build.gradle b/bugsnag-android-core/build.gradle similarity index 100% rename from bugsnag-plugin-android-jvm/build.gradle rename to bugsnag-android-core/build.gradle diff --git a/bugsnag-android-core/gradle.properties b/bugsnag-android-core/gradle.properties new file mode 100644 index 0000000000..99e420b0a5 --- /dev/null +++ b/bugsnag-android-core/gradle.properties @@ -0,0 +1,2 @@ +pomName=Bugsnag Android Core +artefactId=bugsnag-android-core diff --git a/bugsnag-plugin-android-jvm/proguard-rules.pro b/bugsnag-android-core/proguard-rules.pro similarity index 100% rename from bugsnag-plugin-android-jvm/proguard-rules.pro rename to bugsnag-android-core/proguard-rules.pro diff --git a/bugsnag-plugin-android-jvm/src/androidTest/AndroidManifest.xml b/bugsnag-android-core/src/androidTest/AndroidManifest.xml similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/AndroidManifest.xml rename to bugsnag-android-core/src/androidTest/AndroidManifest.xml diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AnrConfigTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataOverrideTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataSummaryTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/AppDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeNotifyTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeRecordBreadcrumbsTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BreadcrumbsTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagPluginInterfaceTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CachedThreadTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ClientTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ConfigurationTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CustomException.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/CustomException.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/CustomException.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataSummaryTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/DeviceDataTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorFilenameTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReaderTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ErrorTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ErrorTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/EventReceiverTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionHandlerTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ExceptionsTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/FileUtils.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/FileUtils.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/FileUtils.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/HandledStateTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/HandledStateTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/HandledStateTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonStreamTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterBugsnagTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/JsonWriterTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataMergeTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/MetaDataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MetaDataTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NativeInterfaceTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NotifierTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NotifierTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NotifierTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ObserverInterfaceTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ReportTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ReportTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ReportTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/RxErrorTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionStoreTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerStopResumeTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackerTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/SessionTrackingPayloadTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StacktraceTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StacktraceTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StacktraceTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/StrictModeWrapper.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/TestRunListener.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/TestRunListener.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/TestRunListener.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ThreadStateTest.kt diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UserTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/java/com/bugsnag/android/UserTest.java rename to bugsnag-android-core/src/androidTest/java/com/bugsnag/android/UserTest.java diff --git a/bugsnag-plugin-android-jvm/src/androidTest/resources/error.json b/bugsnag-android-core/src/androidTest/resources/error.json similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/resources/error.json rename to bugsnag-android-core/src/androidTest/resources/error.json diff --git a/bugsnag-plugin-android-jvm/src/androidTest/resources/rx_error.json b/bugsnag-android-core/src/androidTest/resources/rx_error.json similarity index 100% rename from bugsnag-plugin-android-jvm/src/androidTest/resources/rx_error.json rename to bugsnag-android-core/src/androidTest/resources/rx_error.json diff --git a/bugsnag-plugin-android-jvm/src/main/AndroidManifest.xml b/bugsnag-android-core/src/main/AndroidManifest.xml similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/AndroidManifest.xml rename to bugsnag-android-core/src/main/AndroidManifest.xml diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/AppData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/AppData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/AppData.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Async.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Async.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Async.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BadResponseException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BadResponseException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BadResponseException.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeNotify.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeNotify.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeNotify.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeRecordBreadcrumb.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSend.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSend.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSend.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSendSession.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BeforeSendSession.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BeforeSendSession.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumb.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumb.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumb.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BreadcrumbType.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BreadcrumbType.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BreadcrumbType.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumbs.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Breadcrumbs.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Breadcrumbs.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Bugsnag.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Bugsnag.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Bugsnag.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagException.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt rename to bugsnag-android-core/src/main/java/com/bugsnag/android/BugsnagPluginInterface.kt diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/CachedThread.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/CachedThread.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/CachedThread.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Callback.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Callback.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Callback.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Client.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConfigFactory.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConfigFactory.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ConfigFactory.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Configuration.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Configuration.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConnectivityCompat.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ConnectivityCompat.kt rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ConnectivityCompat.kt diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DateUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DateUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DateUtils.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DefaultDelivery.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DefaultDelivery.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DefaultDelivery.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Delivery.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Delivery.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Delivery.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryCompat.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryCompat.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryCompat.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryFailureException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryFailureException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryFailureException.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryStyle.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeliveryStyle.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeliveryStyle.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeviceData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/DeviceData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/DeviceData.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Error.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Error.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Error.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReader.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReader.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReader.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReportApiClient.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorReportApiClient.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorReportApiClient.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ErrorStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ErrorStore.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/EventReceiver.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/EventReceiver.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/EventReceiver.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ExceptionHandler.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ExceptionHandler.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ExceptionHandler.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Exceptions.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Exceptions.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Exceptions.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/FileStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/FileStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/FileStore.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ForegroundDetector.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ForegroundDetector.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ForegroundDetector.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/HandledState.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/HandledState.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/HandledState.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/IOUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/IOUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/IOUtils.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/InternalApi.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/InternalApi.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/InternalApi.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonScope.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonScope.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonScope.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonStream.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonStream.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonStream.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonWriter.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/JsonWriter.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/JsonWriter.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Logger.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Logger.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Logger.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MapUtils.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MapUtils.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/MapUtils.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MetaData.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/MetaData.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/MetaData.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NativeInterface.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NetworkException.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NetworkException.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NetworkException.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Notifier.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Notifier.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NotifyType.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/NotifyType.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/NotifyType.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ObjectJsonStreamer.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Report.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Report.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Report.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Session.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Session.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Session.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionStore.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionStore.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionStore.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTracker.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTracker.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTracker.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingApiClient.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingPayload.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/SessionTrackingPayload.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/SessionTrackingPayload.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Severity.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Severity.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Severity.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Stacktrace.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/Stacktrace.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/Stacktrace.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/StrictModeHandler.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/StrictModeHandler.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/StrictModeHandler.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadSafe.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadSafe.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadSafe.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadState.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/ThreadState.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/ThreadState.java diff --git a/bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/User.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/User.java similarity index 100% rename from bugsnag-plugin-android-jvm/src/main/java/com/bugsnag/android/User.java rename to bugsnag-android-core/src/main/java/com/bugsnag/android/User.java diff --git a/bugsnag-android/README.md b/bugsnag-android/README.md index 8ed8fd3162..e81edaadf7 100644 --- a/bugsnag-android/README.md +++ b/bugsnag-android/README.md @@ -11,7 +11,7 @@ implementation "com.bugsnag:bugsnag-android:$version" Which is simpler than manually specifying every single dependency: ``` -implementation "com.bugsnag:bugsnag-plugin-android-jvm:$version" +implementation "com.bugsnag:bugsnag-android-core:$version" implementation "com.bugsnag:bugsnag-plugin-android-ndk:$version" implementation "com.bugsnag:bugsnag-plugin-android-anr:$version" ``` diff --git a/bugsnag-android/build.gradle b/bugsnag-android/build.gradle index bbe7600cd8..a796264067 100644 --- a/bugsnag-android/build.gradle +++ b/bugsnag-android/build.gradle @@ -6,7 +6,7 @@ android { } dependencies { - api project(':bugsnag-plugin-android-jvm') + api project(':bugsnag-android-core') api project(':bugsnag-plugin-android-anr') api project(':bugsnag-plugin-android-ndk') } diff --git a/bugsnag-plugin-android-anr/build.gradle b/bugsnag-plugin-android-anr/build.gradle index 513cdbbe8e..d3f80f7b91 100644 --- a/bugsnag-plugin-android-anr/build.gradle +++ b/bugsnag-plugin-android-anr/build.gradle @@ -15,7 +15,7 @@ android { } dependencies { - api project(':bugsnag-plugin-android-jvm') + api project(':bugsnag-android-core') } apply from: "../gradle/dependencies.gradle" diff --git a/bugsnag-plugin-android-jvm/gradle.properties b/bugsnag-plugin-android-jvm/gradle.properties deleted file mode 100644 index cb5d3430d9..0000000000 --- a/bugsnag-plugin-android-jvm/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -pomName=Bugsnag Android JVM -artefactId=bugsnag-plugin-android-jvm diff --git a/bugsnag-plugin-android-ndk/build.gradle b/bugsnag-plugin-android-ndk/build.gradle index 513cdbbe8e..d3f80f7b91 100644 --- a/bugsnag-plugin-android-ndk/build.gradle +++ b/bugsnag-plugin-android-ndk/build.gradle @@ -15,7 +15,7 @@ android { } dependencies { - api project(':bugsnag-plugin-android-jvm') + api project(':bugsnag-android-core') } apply from: "../gradle/dependencies.gradle" diff --git a/build.gradle b/build.gradle index 587cee55ab..c087188558 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ import com.android.build.gradle.LibraryPlugin buildscript { repositories { + mavenLocal() google() mavenCentral() jcenter() diff --git a/dockerfiles/Dockerfile.android-base b/dockerfiles/Dockerfile.android-base index 6682b08b67..0ce2789538 100644 --- a/dockerfiles/Dockerfile.android-base +++ b/dockerfiles/Dockerfile.android-base @@ -21,7 +21,7 @@ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ -COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/dockerfiles/Dockerfile.android-builder b/dockerfiles/Dockerfile.android-builder index 60d8832d1f..3b456ecc06 100644 --- a/dockerfiles/Dockerfile.android-builder +++ b/dockerfiles/Dockerfile.android-builder @@ -21,7 +21,7 @@ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ -COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/dockerfiles/Dockerfile.android-instrumentation-tests b/dockerfiles/Dockerfile.android-instrumentation-tests index 4d2b4c5180..f320706b79 100644 --- a/dockerfiles/Dockerfile.android-instrumentation-tests +++ b/dockerfiles/Dockerfile.android-instrumentation-tests @@ -21,7 +21,7 @@ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ -COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/dockerfiles/Dockerfile.android-linter b/dockerfiles/Dockerfile.android-linter index 545c59da73..b9111d8cc6 100644 --- a/dockerfiles/Dockerfile.android-linter +++ b/dockerfiles/Dockerfile.android-linter @@ -21,7 +21,7 @@ COPY gradle/ /app/gradle/ COPY bugsnag-android/ bugsnag-android/ COPY bugsnag-android-ndk/ bugsnag-android-ndk/ COPY bugsnag-plugin-android-anr/ bugsnag-plugin-android-anr/ -COPY bugsnag-plugin-android-jvm/ bugsnag-plugin-android-jvm/ +COPY bugsnag-android-core/ bugsnag-android-core/ COPY bugsnag-plugin-android-ndk/ bugsnag-plugin-android-ndk/ COPY examples/ examples/ COPY scripts/ scripts/ diff --git a/settings.gradle b/settings.gradle index f0272ed29d..b23ac44433 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,7 +1,7 @@ include( ":bugsnag-android", ":bugsnag-android-ndk", - ':bugsnag-plugin-android-jvm', + ':bugsnag-android-core', ':bugsnag-plugin-android-anr', ':bugsnag-plugin-android-ndk', ":sdkAppExample" From 0720ad34d7a4298e6d0965d46f6196ebea10b18c Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 15 Jul 2019 11:16:41 +0100 Subject: [PATCH 16/22] use latest version of gradle plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c087188558..18c29dddb2 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.5" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC16" - classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.4.1" + classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.5.0" } } allprojects { From 3ed06158b8901b37147318554b8716d5bfb2da93 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 15 Jul 2019 13:08:09 +0100 Subject: [PATCH 17/22] review feedback --- .../java/com/bugsnag/android/AppDataTest.java | 4 ++-- .../java/com/bugsnag/android/ClientTest.java | 2 +- .../com/bugsnag/android/ProjectPackagesTest.kt | 2 +- .../src/main/AndroidManifest.xml | 2 +- .../com/bugsnag/android/NativeInterface.java | 1 - .../src/main/jni/bugsnag_anr.c | 11 ++++++++--- .../src/main/jni/bugsnag_anr.h | 16 ---------------- .../src/main/jni/utils/string.c | 2 +- .../src/main/jni/utils/serializer.h | 2 +- gradle.properties | 2 +- 10 files changed, 16 insertions(+), 28 deletions(-) delete mode 100644 bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java index c24bc9cab8..3471e1e42c 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataTest.java @@ -52,7 +52,7 @@ public void setUp() throws Exception { @Test public void testAccessors() { - assertEquals("com.bugsnag.android.jvm.test", appData.get("packageName")); + assertEquals("com.bugsnag.android.core.test", appData.get("packageName")); assertNull(appData.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); @@ -68,7 +68,7 @@ public void testJsonSerialisation() throws JSONException { assertEquals("1.0", appDataJson.get("version")); assertEquals("development", appDataJson.get("releaseStage")); assertEquals("android", appDataJson.get("type")); - assertEquals("com.bugsnag.android.jvm.test", appDataJson.get("id")); + assertEquals("com.bugsnag.android.core.test", appDataJson.get("id")); assertNotNull(appDataJson.get("buildUUID")); assertTrue(((Long) appData.get("duration")) > 0); assertEquals(500L, appData.get("durationInForeground")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java index 7348334f06..a4aba8e64d 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ClientTest.java @@ -330,7 +330,7 @@ public void testAppDataMetaData() { Map app = client.getAppData().getAppDataMetaData(); assertEquals(6, app.size()); assertEquals("Bugsnag Android Tests", app.get("name")); - assertEquals("com.bugsnag.android.jvm.test", app.get("packageName")); + assertEquals("com.bugsnag.android.core.test", app.get("packageName")); assertEquals("1.0", app.get("versionName")); assertNotNull(app.get("memoryUsage")); assertTrue(app.containsKey("activeScreen")); diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt index 2636867884..d653e946a2 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/ProjectPackagesTest.kt @@ -13,7 +13,7 @@ class ProjectPackagesTest { assertNull(configuration.projectPackages) val client = Client(InstrumentationRegistry.getContext(), configuration) - assertArrayEquals(arrayOf("com.bugsnag.android.jvm.test"), client.config.projectPackages) + assertArrayEquals(arrayOf("com.bugsnag.android.core.test"), client.config.projectPackages) client.close() } diff --git a/bugsnag-android-core/src/main/AndroidManifest.xml b/bugsnag-android-core/src/main/AndroidManifest.xml index c43f4fa6b0..15e2e4fac7 100644 --- a/bugsnag-android-core/src/main/AndroidManifest.xml +++ b/bugsnag-android-core/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.bugsnag.android.core"> diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java index 5fd8e7cd26..cc251255ad 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/NativeInterface.java @@ -10,7 +10,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Observer; import java.util.Queue; /** diff --git a/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c index 873ee9cba4..93fcaff8da 100644 --- a/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c +++ b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.c @@ -1,5 +1,5 @@ -#include "bugsnag_anr.h" #include "anr_handler.h" +#include #include @@ -9,8 +9,13 @@ extern "C" { JNIEXPORT void JNICALL Java_com_bugsnag_android_AnrPlugin_installAnrDetection( JNIEnv *env, jobject _this, jobject byteBuffer) { - bsg_handler_install_anr((*env)->GetDirectBufferAddress(env, byteBuffer)); - BUGSNAG_LOG("Initialization complete!"); + + if (byteBuffer != NULL) { + bsg_handler_install_anr((*env)->GetDirectBufferAddress(env, byteBuffer)); + BUGSNAG_LOG("Initialization complete!"); + } else { + BUGSNAG_LOG("Failed to initialise ANR detection due to null buffer"); + } } #ifdef __cplusplus diff --git a/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h b/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h deleted file mode 100644 index 412607e46a..0000000000 --- a/bugsnag-plugin-android-anr/src/main/jni/bugsnag_anr.h +++ /dev/null @@ -1,16 +0,0 @@ -/** - * JNI interface between bugsnag-plugin-android-anr JVM and C++ - */ -#ifndef BUGSNAG_ANR_H -#define BUGSNAG_ANR_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif -#endif // BUGSNAG_NDK_H diff --git a/bugsnag-plugin-android-anr/src/main/jni/utils/string.c b/bugsnag-plugin-android-anr/src/main/jni/utils/string.c index d1a38a304a..813c7d565f 100644 --- a/bugsnag-plugin-android-anr/src/main/jni/utils/string.c +++ b/bugsnag-plugin-android-anr/src/main/jni/utils/string.c @@ -1,4 +1,4 @@ -#include +#include "string.h" void bsg_strncpy(char *dst, char *src, size_t len) { int i = 0; diff --git a/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h b/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h index 391fe0cac7..75ca559b15 100644 --- a/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h +++ b/bugsnag-plugin-android-ndk/src/main/jni/utils/serializer.h @@ -2,7 +2,7 @@ #include #include #include -#include "string.h" +#include #include #include "../bugsnag_ndk.h" #include "build.h" diff --git a/gradle.properties b/gradle.properties index 4314cb0ed0..a1eb385057 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=4.16.1 +VERSION_NAME=4.16.0 GROUP=com.bugsnag POM_SCM_URL=https://github.com/bugsnag/bugsnag-android POM_SCM_CONNECTION=scm:git@github.com:bugsnag/bugsnag-android.git From a247e2aae0b6bf7ded57b02a4f39f59e0d479bbf Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Mon, 15 Jul 2019 15:24:30 +0100 Subject: [PATCH 18/22] refactor: set DETECT_NDK_CRASHES in bugsnag-android-ndk artefact --- .../com/bugsnag/android/Configuration.java | 13 +++++++++++-- bugsnag-android-ndk/build.gradle | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java index 43032b1019..c53bfddb7c 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Configuration.java @@ -1,11 +1,11 @@ package com.bugsnag.android; import android.content.Context; -import android.os.Debug; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; +import java.lang.reflect.Field; import java.util.Arrays; import java.util.Collection; import java.util.Date; @@ -49,7 +49,7 @@ public class Configuration extends Observable implements Observer { private boolean automaticallyCollectBreadcrumbs = true; private boolean detectAnrs = false; - private boolean detectNdkCrashes = false; + private boolean detectNdkCrashes; private long anrThresholdMs = 5000; @NonNull @@ -75,6 +75,15 @@ public Configuration(@NonNull String apiKey) { this.apiKey = apiKey; this.metaData = new MetaData(); this.metaData.addObserver(this); + + try { + // check if DETECT_NDK_CRASHES has been set in bugsnag-android or bugsnag-android-ndk + Class clz = Class.forName("com.bugsnag.android.BuildConfig"); + Field field = clz.getDeclaredField("DETECT_NDK_CRASHES"); + detectNdkCrashes = field.getBoolean(null); + } catch (Throwable exc) { + detectNdkCrashes = false; + } } /** diff --git a/bugsnag-android-ndk/build.gradle b/bugsnag-android-ndk/build.gradle index a192213eff..4098412bcb 100644 --- a/bugsnag-android-ndk/build.gradle +++ b/bugsnag-android-ndk/build.gradle @@ -1 +1,18 @@ -apply from: "../bugsnag-android/build.gradle" +apply plugin: "com.android.library" + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + defaultConfig.minSdkVersion rootProject.ext.minSdkVersion + + buildTypes.each { buildType -> + buildType.buildConfigField("boolean", "DETECT_NDK_CRASHES", "true") + } +} + +dependencies { + api project(':bugsnag-android-core') + api project(':bugsnag-plugin-android-anr') + api project(':bugsnag-plugin-android-ndk') +} + +apply from: "../gradle/release.gradle" From 3cdf062a77b27f153a12738f9e0a11d1e07e8727 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Tue, 16 Jul 2019 13:51:36 +0100 Subject: [PATCH 19/22] attempt to fix buildkite ci --- examples/sdk-app-example/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/sdk-app-example/build.gradle b/examples/sdk-app-example/build.gradle index 4e35191960..3939fc18c6 100644 --- a/examples/sdk-app-example/build.gradle +++ b/examples/sdk-app-example/build.gradle @@ -43,7 +43,7 @@ project.afterEvaluate { } dependencies { - implementation "com.bugsnag:bugsnag-android:4.16.1" + implementation "com.bugsnag:bugsnag-android:+" implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:support-v4:$supportLibVersion" From ee43c1738707d1c299b3873ce17f90bb1dbb9401 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 17 Jul 2019 10:20:09 +0100 Subject: [PATCH 20/22] enable ndk/anr detection explicitly by default, as now using the bugsnag-android artefact --- .../java/com/bugsnag/android/mazerunner/MainActivity.kt | 3 ++- .../scenarios/AppNotRespondingDisabledScenario.kt | 1 + .../android/mazerunner/scenarios/AutoSessionScenario.kt | 7 ------- features/session_tracking.feature | 4 +--- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt index d129b2666e..eaeaee0d70 100644 --- a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt +++ b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt @@ -46,7 +46,8 @@ class MainActivity : Activity() { val config = Configuration(intent.getStringExtra("BUGSNAG_API_KEY")) val port = intent.getStringExtra("BUGSNAG_PORT") config.setEndpoints("${findHostname()}:$port", "${findHostname()}:$port") - + config.detectNdkCrashes = true + config.detectAnrs = true return config } diff --git a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AppNotRespondingDisabledScenario.kt b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AppNotRespondingDisabledScenario.kt index f11bc3e96a..d03a634205 100644 --- a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AppNotRespondingDisabledScenario.kt +++ b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AppNotRespondingDisabledScenario.kt @@ -12,6 +12,7 @@ internal class AppNotRespondingDisabledScenario(config: Configuration, context: Context) : Scenario(config, context) { init { config.setAutoCaptureSessions(false) + config.detectAnrs = false } override fun run() { diff --git a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoSessionScenario.kt b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoSessionScenario.kt index 08c8cfcdf1..6ea6f4b31b 100644 --- a/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoSessionScenario.kt +++ b/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoSessionScenario.kt @@ -13,16 +13,9 @@ import com.bugsnag.android.mazerunner.SecondActivity internal class AutoSessionScenario(config: Configuration, context: Context) : Scenario(config, context) { - init { - // initial bugsnag init will be discarded - config.setAutoCaptureSessions(false) - } override fun run() { super.run() - config.setAutoCaptureSessions(true) Bugsnag.init(context, config) - Bugsnag.setUser("123", "user@example.com", "Joe Bloggs") - context.startActivity(Intent(context, SecondActivity::class.java)) } } diff --git a/features/session_tracking.feature b/features/session_tracking.feature index 12771ac5fe..422ed7cc35 100644 --- a/features/session_tracking.feature +++ b/features/session_tracking.feature @@ -8,9 +8,7 @@ Scenario: Automatic Session Tracking sends And the "Bugsnag-API-Key" header equals "a35a2a72bd230ac0aa0f52715bbdc6aa" And the payload field "notifier.name" equals "Android Bugsnag Notifier" And the payload field "sessions" is an array with 1 element - And the session "user.id" equals "123" - And the session "user.email" equals "user@example.com" - And the session "user.name" equals "Joe Bloggs" + And the session "user.id" is not null And the session "id" is not null And the session "startedAt" is not null From 15e2801a879cc2cb8ff9d3810002baaeaaea4fd9 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 17 Jul 2019 12:49:19 +0100 Subject: [PATCH 21/22] update gradle plugin --- build.gradle | 2 +- features/fixtures/mazerunner/build.gradle | 13 ++++--------- tests/features/fixtures/mazerunner/build.gradle | 11 +++-------- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index 18c29dddb2..b08cbbe9cd 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.5" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC16" - classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.5.0" + classpath "com.bugsnag:bugsnag-android-gradle-plugin:4.5.2" } } allprojects { diff --git a/features/fixtures/mazerunner/build.gradle b/features/fixtures/mazerunner/build.gradle index ae0b7dd7a7..497746ed00 100644 --- a/features/fixtures/mazerunner/build.gradle +++ b/features/fixtures/mazerunner/build.gradle @@ -22,15 +22,11 @@ buildscript { mavenCentral() jcenter() } - ext.kotlin_version = '1.3.10' + ext.kotlin_version = '1.3.21' dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - classpath 'com.bugsnag:bugsnag-android-gradle-plugin:3.4.2' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0' - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2' - classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2' + classpath 'com.android.tools.build:gradle:3.4.2' + classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -78,8 +74,7 @@ android { dependencies { implementation "com.bugsnag:bugsnag-android:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.facebook.infer.annotation:infer-annotation:0.11.2" - api "com.android.support:support-annotations:27.0.0" + api "com.android.support:support-annotations:28.0.0" } apply plugin: 'com.bugsnag.android.gradle' diff --git a/tests/features/fixtures/mazerunner/build.gradle b/tests/features/fixtures/mazerunner/build.gradle index 49bb9283a0..497746ed00 100644 --- a/tests/features/fixtures/mazerunner/build.gradle +++ b/tests/features/fixtures/mazerunner/build.gradle @@ -22,15 +22,11 @@ buildscript { mavenCentral() jcenter() } - ext.kotlin_version = '1.3.10' + ext.kotlin_version = '1.3.21' dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - classpath 'com.bugsnag:bugsnag-android-gradle-plugin:3.4.2' - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0' - classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2' - classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2' + classpath 'com.android.tools.build:gradle:3.4.2' + classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -78,7 +74,6 @@ android { dependencies { implementation "com.bugsnag:bugsnag-android:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "com.facebook.infer.annotation:infer-annotation:0.11.2" api "com.android.support:support-annotations:28.0.0" } From 72ec7664b5dbb10d3b8fb6230fd6cfce8ff491c8 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 18 Jul 2019 13:56:06 +0100 Subject: [PATCH 22/22] browserstack mazerunner scenario tweaks --- .../main/java/com/bugsnag/android/mazerunner/MainActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt b/tests/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt index cea8bd3813..e8fdbb9641 100644 --- a/tests/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt +++ b/tests/features/fixtures/mazerunner/src/main/java/com/bugsnag/android/mazerunner/MainActivity.kt @@ -75,8 +75,8 @@ class MainActivity : Activity() { private fun prepareConfig(): Configuration { val config = Configuration("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345") config.setEndpoints("http://bs-local.com:9339", "http://bs-local.com:9339") - config.setAutoCaptureSessions(false) - config.detectAnrs = false + config.detectNdkCrashes = true + config.detectAnrs = true return config }