diff --git a/googletest/include/gtest/internal/custom/gtest.h b/googletest/include/gtest/internal/custom/gtest.h
index 3d85561..67ce67f 100644
--- a/googletest/include/gtest/internal/custom/gtest.h
+++ b/googletest/include/gtest/internal/custom/gtest.h
@@ -35,21 +35,13 @@
 #define GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
 
 #if GTEST_OS_LINUX_ANDROID
-#include <dlfcn.h>
-#include <unistd.h>
-
-#define GTEST_CUSTOM_TEMPDIR_FUNCTION_ GetAndroidTempDir
-#define GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv) \
-  internal::InitGoogleTestImpl(argc, argv);                 \
-  SetAndroidTestLogger()
-
+# define GTEST_CUSTOM_TEMPDIR_FUNCTION_ GetAndroidTempDir
+# include <unistd.h>
 static inline std::string GetAndroidTempDir() {
   // Android doesn't have /tmp, and /sdcard is no longer accessible from
   // an app context starting from Android O. On Android, /data/local/tmp
   // is usually used as the temporary directory, so try that first...
-  if (access("/data/local/tmp", R_OK | W_OK | X_OK) == 0) {
-    return "/data/local/tmp/";
-  }
+  if (access("/data/local/tmp", R_OK | W_OK | X_OK) == 0) return "/data/local/tmp/";
 
   // Processes running in an app context can't write to /data/local/tmp,
   // so fall back to the current directory...
@@ -62,40 +54,6 @@
   }
   return result;
 }
-
-static inline void SetAndroidTestLogger() {
-  // By default, Android log messages are only written to the log buffer, where
-  // GTest cannot see them. This breaks death tests, which need to check the
-  // crash message to ensure that the process died for the expected reason.
-  // To fix this, send log messages to both logd and stderr if we are in a death
-  // test child process.
-  struct LogMessage;
-  using LoggerFunction = void (*)(const LogMessage*);
-  using SetLoggerFunction = void (*)(LoggerFunction logger);
-
-  static void* liblog = dlopen("liblog.so", RTLD_NOW);
-  if (liblog == nullptr) {
-    return;
-  }
-
-  static SetLoggerFunction set_logger = reinterpret_cast<SetLoggerFunction>(
-      dlsym(liblog, "__android_log_set_logger"));
-  static LoggerFunction logd_logger = reinterpret_cast<LoggerFunction>(
-      dlsym(liblog, "__android_log_logd_logger"));
-  static LoggerFunction stderr_logger = reinterpret_cast<LoggerFunction>(
-      dlsym(liblog, "__android_log_stderr_logger"));
-  if (set_logger == nullptr || logd_logger == nullptr ||
-      stderr_logger == nullptr) {
-    return;
-  }
-
-  set_logger([](const LogMessage* message) {
-    logd_logger(message);
-    if (::testing::internal::InDeathTestChild()) {
-      stderr_logger(message);
-    }
-  });
-}
-#endif  // GTEST_OS_LINUX_ANDROID
+#endif //GTEST_OS_LINUX_ANDROID
 
 #endif  // GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
