mark AIBinder_Class_setHandleShellCommand as weak.
This symbol is not present on Q builds. This breaks installing
mainline modules on Q builds.
Bug: 149077229
Test: TARGET_BUILD_APPS=com.android.resolv vendor/google/build/build_unbundled_mainline_module.sh com.android.resolv && adb install --staged --enable-rollback out/dist/mainline_modules_arm64/com.android.resolv.apex && adb reboot
Change-Id: I4fae98f2ad3051d758707658ec489f0d855cd4b6
diff --git a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
index e6b743b..33e4586 100644
--- a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
+++ b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
@@ -238,7 +238,9 @@
// ourselves. The defaults are harmless.
AIBinder_Class_setOnDump(clazz, ICInterfaceData::onDump);
#ifdef HAS_BINDER_SHELL_COMMAND
- AIBinder_Class_setHandleShellCommand(clazz, ICInterfaceData::handleShellCommand);
+ if (AIBinder_Class_setHandleShellCommand != nullptr) {
+ AIBinder_Class_setHandleShellCommand(clazz, ICInterfaceData::handleShellCommand);
+ }
#endif
return clazz;
}
diff --git a/libs/binder/ndk/include_platform/android/binder_shell.h b/libs/binder/ndk/include_platform/android/binder_shell.h
index 17b38b0..07d89e6 100644
--- a/libs/binder/ndk/include_platform/android/binder_shell.h
+++ b/libs/binder/ndk/include_platform/android/binder_shell.h
@@ -48,8 +48,7 @@
* \param handleShellCommand function to call when a shell transaction is
* received
*/
-void AIBinder_Class_setHandleShellCommand(AIBinder_Class* clazz,
- AIBinder_handleShellCommand handleShellCommand)
- __INTRODUCED_IN(30);
+__attribute__((weak)) void AIBinder_Class_setHandleShellCommand(
+ AIBinder_Class* clazz, AIBinder_handleShellCommand handleShellCommand) __INTRODUCED_IN(30);
__END_DECLS