Add static field to set custom Sdk version
This is to be accessed from user or library code when running inside
Studio. That will be used instead of the SDK_INT version coming from
layoutlib.
Bug: 250806506
Test: N/A
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:42294a5111ae4ee6a788865b9b286d197a0971c8)
Merged-In: I8527e918569f5b60102ba2f6bbae4789ba01f17a
Change-Id: I8527e918569f5b60102ba2f6bbae4789ba01f17a
diff --git a/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java b/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java
index c2430a8..4288c9f 100644
--- a/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java
+++ b/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java
@@ -51,6 +51,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
+import static android.os._Original_Build.VERSION.SDK_INT;
import static com.android.ide.common.rendering.api.Result.Status.ERROR_LOCK_INTERRUPTED;
import static com.android.ide.common.rendering.api.Result.Status.ERROR_TIMEOUT;
import static com.android.ide.common.rendering.api.Result.Status.SUCCESS;
@@ -68,6 +69,12 @@
*
*/
public abstract class RenderAction<T extends RenderParams> {
+ /**
+ * Static field to store an SDK version coming from the render configuration.
+ * This is to be accessed when wanting to know the simulated SDK version instead
+ * of Build.VERSION.SDK_INT.
+ */
+ public static int sSimulatedSdk;
private static final Set<String> COMPOSE_CLASS_FQNS =
Set.of("androidx.compose.ui.tooling.ComposeViewAdapter",
@@ -99,6 +106,7 @@
*/
protected RenderAction(T params) {
mParams = params;
+ sSimulatedSdk = SDK_INT;
}
/**
diff --git a/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
index 25aab92..082ea14 100644
--- a/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
+++ b/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
@@ -94,6 +94,7 @@
import java.util.Map;
import java.util.function.Function;
+import static android.os._Original_Build.VERSION.SDK_INT;
import static com.android.ide.common.rendering.api.Result.Status.ERROR_INFLATION;
import static com.android.ide.common.rendering.api.Result.Status.ERROR_NOT_INFLATED;
import static com.android.ide.common.rendering.api.Result.Status.ERROR_UNKNOWN;
@@ -311,6 +312,9 @@
SessionParams params = getParams();
BridgeContext context = getContext();
+ int simulatedVersion = params.getSimulatedPlatformVersion();
+ sSimulatedSdk = simulatedVersion > 0 ? simulatedVersion : SDK_INT;
+
if (Bridge.isLocaleRtl(params.getLocale())) {
if (!params.isRtlSupported()) {
Bridge.getLog().warning(ILayoutLog.TAG_RTL_NOT_ENABLED,
@@ -480,6 +484,9 @@
SessionParams params = getParams();
+ int simulatedVersion = params.getSimulatedPlatformVersion();
+ sSimulatedSdk = simulatedVersion > 0 ? simulatedVersion : SDK_INT;
+
try {
if (mViewRoot == null) {
return ERROR_NOT_INFLATED.createResult();