Revert "libbinder: disallow APEX at build time"
Build breakage.
This reverts commit 8852cc78a0f0c02caf61f21cb3c520583025ea69.
Bug: 161926892
Reason for revert: b/165698873 - broken build
Change-Id: I4708d5e5aaba655b3399bf59ba342f303af7a8ff
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp
index 8bc26e8..861b589 100644
--- a/libs/binder/Android.bp
+++ b/libs/binder/Android.bp
@@ -78,6 +78,9 @@
// or dessert updates. Instead, apex users should use libbinder_ndk.
apex_available: [
"//apex_available:platform",
+ // TODO(b/139016109) remove these three
+ "com.android.media.swcodec",
+ "test_com.android.media.swcodec",
],
srcs: [
@@ -124,6 +127,10 @@
export_aidl_headers: true,
},
+ // TODO(b/142684679): for com.android.media which is compiled
+ // as vendor and used as system code.
+ use_apex_name_macro: true,
+
cflags: [
"-Wall",
"-Wextra",
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp
index 7fb18c5..8fd59ba 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -519,13 +519,7 @@
}
}
-#ifdef __ANDROID_APEX__
-#error APEX cannot include libbinder. The wire protocol for libbinder is not\
- frozen, and including it in an APEX would also require APEX\
- servicemanagers which is not an options. Use libbinder_ndk instead.
-#endif
-
-#if defined(__ANDROID_VNDK__)
+#if defined(__ANDROID_VNDK__) && !defined(__ANDROID_APEX__)
constexpr int32_t kHeader = B_PACK_CHARS('V', 'N', 'D', 'R');
#else
constexpr int32_t kHeader = B_PACK_CHARS('S', 'Y', 'S', 'T');
diff --git a/libs/binder/ProcessState.cpp b/libs/binder/ProcessState.cpp
index 6e379ab..acc1e67 100644
--- a/libs/binder/ProcessState.cpp
+++ b/libs/binder/ProcessState.cpp
@@ -403,6 +403,12 @@
, mThreadPoolSeq(1)
, mCallRestriction(CallRestriction::NONE)
{
+
+// TODO(b/139016109): enforce in build system
+#if defined(__ANDROID_APEX__)
+ LOG_ALWAYS_FATAL("Cannot use libbinder in APEX (only system.img libbinder) since it is not stable.");
+#endif
+
if (mDriverFD >= 0) {
// mmap the binder, providing a chunk of virtual address space to receive transactions.
mVMStart = mmap(nullptr, BINDER_VM_SIZE, PROT_READ, MAP_PRIVATE | MAP_NORESERVE, mDriverFD, 0);
diff --git a/libs/binder/Stability.cpp b/libs/binder/Stability.cpp
index cdd14266..6115aec 100644
--- a/libs/binder/Stability.cpp
+++ b/libs/binder/Stability.cpp
@@ -50,7 +50,17 @@
Stability::Level Stability::getLocalStability() {
#ifdef __ANDROID_VNDK__
- return Level::VENDOR;
+ #ifdef __ANDROID_APEX__
+ // TODO(b/142684679) avoid use_vendor on system APEXes
+ #if !defined(__ANDROID_APEX_COM_ANDROID_MEDIA_SWCODEC__) \
+ && !defined(__ANDROID_APEX_TEST_COM_ANDROID_MEDIA_SWCODEC__)
+ #error VNDK + APEX only defined for com.android.media.swcodec
+ #endif
+ // TODO(b/142684679) avoid use_vendor on system APEXes
+ return Level::SYSTEM;
+ #else
+ return Level::VENDOR;
+ #endif
#else
// TODO(b/139325195): split up stability levels for system/APEX.
return Level::SYSTEM;