fix: use shellHook to set aapt2 override via gradle.properties
AGP 8.7.3 reads android.aapt2FromMavenOverride via providers.gradleProperty() which only reads gradle.properties files, not JVM system properties set via GRADLE_OPTS -D. The shellHook rewrites the sentinel value on every nix develop so the correct nix store path is always present before gradle runs.
This commit is contained in:
@@ -54,9 +54,15 @@
|
|||||||
|
|
||||||
ANDROID_HOME = sdkRoot;
|
ANDROID_HOME = sdkRoot;
|
||||||
ANDROID_SDK_ROOT = sdkRoot;
|
ANDROID_SDK_ROOT = sdkRoot;
|
||||||
|
|
||||||
# NixOS gotcha: AGP downloads a dynamically-linked aapt2 from Maven
|
# NixOS gotcha: AGP downloads a dynamically-linked aapt2 from Maven
|
||||||
# that can't run on NixOS. Point it at the SDK's own aapt2 instead.
|
# that can't run on NixOS. AGP reads the override from gradle.properties
|
||||||
GRADLE_OPTS = "-Dandroid.aapt2FromMavenOverride=${sdkRoot}/build-tools/${buildToolsVersion}/aapt2";
|
# as a project property (not a JVM system property), so GRADLE_OPTS -D
|
||||||
|
# flags don't work. The shellHook writes the correct nix store path
|
||||||
|
# directly into gradle.properties so providers.gradleProperty() finds it.
|
||||||
|
shellHook = ''
|
||||||
|
sed -i "s|android.aapt2FromMavenOverride=.*|android.aapt2FromMavenOverride=${sdkRoot}/build-tools/${buildToolsVersion}/aapt2|" gradle.properties
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,2 +1,5 @@
|
|||||||
org.gradle.jvmargs=-Xmx2g
|
org.gradle.jvmargs=-Xmx2g
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
|
# NixOS: AGP cannot run the Maven-downloaded aapt2 (dynamically linked generic Linux binary).
|
||||||
|
# Value is rewritten by the nix shellHook on every `nix develop` — do not edit manually.
|
||||||
|
android.aapt2FromMavenOverride=__NIX_SHELLHOOK_SETS_THIS__
|
||||||
|
|||||||
Reference in New Issue
Block a user