1{
2 deployAndroidPackage,
3 lib,
4 package,
5 autoPatchelfHook,
6 makeWrapper,
7 os,
8 arch,
9 pkgs,
10 stdenv,
11 postInstall,
12 meta,
13}:
14
15deployAndroidPackage {
16 name = "androidsdk";
17 inherit package os arch;
18 nativeBuildInputs = [
19 makeWrapper
20 ] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
21
22 patchInstructions = ''
23 ${lib.optionalString (os == "linux") ''
24 # Auto patch all binaries
25 autoPatchelf .
26 ''}
27
28 # Strip double dots from the root path
29 export ANDROID_SDK_ROOT="$out/libexec/android-sdk"
30
31 # Wrap all scripts that require JAVA_HOME
32 find $ANDROID_SDK_ROOT/${package.path}/bin -maxdepth 1 -type f -executable | while read program; do
33 if grep -q "JAVA_HOME" $program; then
34 wrapProgram $program --prefix PATH : ${pkgs.jdk17}/bin \
35 --prefix ANDROID_SDK_ROOT : $ANDROID_SDK_ROOT
36 fi
37 done
38
39 # Wrap sdkmanager script
40 wrapProgram $ANDROID_SDK_ROOT/${package.path}/bin/sdkmanager \
41 --prefix PATH : ${lib.makeBinPath [ pkgs.jdk17 ]} \
42 --add-flags "--sdk_root=$ANDROID_SDK_ROOT"
43
44 # Patch all script shebangs
45 patchShebangs $ANDROID_SDK_ROOT/${package.path}/bin
46
47 cd $ANDROID_SDK_ROOT
48 ${postInstall}
49 '';
50
51 inherit meta;
52}