diff --git a/Android.mk b/Android.mk index 67e7d4cc..5f2916a6 100755 --- a/Android.mk +++ b/Android.mk @@ -401,6 +401,9 @@ endif ifeq ($(TW_EXCLUDE_NANO), true) LOCAL_CFLAGS += -DTW_EXCLUDE_NANO endif +ifneq ($(TARGET_OTA_ASSERT_DEVICE),) + LOCAL_CFLAGS += -DTARGET_OTA_ASSERT_DEVICE='"$(TARGET_OTA_ASSERT_DEVICE)"' +endif LOCAL_C_INCLUDES += system/vold \ diff --git a/twrp.cpp b/twrp.cpp index 564454ad..c84c99e5 100644 --- a/twrp.cpp +++ b/twrp.cpp @@ -377,6 +377,10 @@ int main(int argc, char **argv) { property_set("ro.twrp.boot", "1"); property_set("ro.twrp.version", TW_VERSION_STR); +#ifdef TARGET_OTA_ASSERT_DEVICE + property_set("ro.twrp.target.devices", TARGET_OTA_ASSERT_DEVICE); +#endif + time_t StartupTime = time(NULL); printf("Starting TWRP %s-%s on %s (pid %d)\n", TW_VERSION_STR, TW_GIT_REVISION, ctime(&StartupTime), getpid()); diff --git a/twrpinstall/installcommand.cpp b/twrpinstall/installcommand.cpp index d577b383..88c90f8c 100755 --- a/twrpinstall/installcommand.cpp +++ b/twrpinstall/installcommand.cpp @@ -132,6 +132,15 @@ static int check_newer_ab_build(ZipArchiveHandle zip) bool deviceExists = false; + // twrp.target.devices + bool has_target_devices = false; + char tw_devices[PROPERTY_VALUE_MAX * 2]; + property_get("ro.twrp.target.devices", tw_devices, ""); + std::vector TWRP_devices = android::base::Split(tw_devices, ","); + if (strlen(tw_devices) > 1) { + has_target_devices = true; + } + for(const std::string& deviceAssert : assertResults) { std::string assertName = android::base::Trim(deviceAssert); @@ -139,6 +148,17 @@ static int check_newer_ab_build(ZipArchiveHandle zip) deviceExists = true; break; } + // twrp.target.devices + else if (has_target_devices) { + for(const std::string& twrpDevice_x : TWRP_devices) { + std::string twrpName = android::base::Trim(twrpDevice_x); + if (!twrpName.empty() && !assertName.empty() && assertName == twrpName) { + deviceExists = true; + printf("Package is for product %s. The selected TWRP target device is %s\n", pkg_device.c_str(), twrpName.c_str()); + break; + } + } + } } if (!deviceExists) {