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_SDK_ROOT = sdkRoot;
|
||||
|
||||
# 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.
|
||||
GRADLE_OPTS = "-Dandroid.aapt2FromMavenOverride=${sdkRoot}/build-tools/${buildToolsVersion}/aapt2";
|
||||
# that can't run on NixOS. AGP reads the override from gradle.properties
|
||||
# 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
|
||||
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