diff options
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | nix/android-composition.nix | 14 | ||||
-rwxr-xr-x | nix/android-shell-shellHook.py | 22 | ||||
-rw-r--r-- | shell.nix | 25 |
4 files changed, 53 insertions, 20 deletions
@@ -1,9 +1,13 @@ build: app/java/src/*.java bazel build //app/java:dnsproxy -watch: - ibazel build //app/java:dnsproxy +dev: + bazel mobile-install //app/java:dnsproxy --start_app #--debug_app --java_debug install: - adb install bazel-bin/app/java/dnsproxy.apk - #bazel mobile-install //app/java:dnsproxy + bazel mobile-install //app/java:dnsproxy + #adb install bazel-bin/app/java/dnsproxy.apk + +emulate: + # avdmanager create --name dnsproxy -k "system-images;android-28;google_apis_playstore;x86_64" + emulator @dnsproxy -no-boot-anim diff --git a/nix/android-composition.nix b/nix/android-composition.nix new file mode 100644 index 0000000..17c6e69 --- /dev/null +++ b/nix/android-composition.nix @@ -0,0 +1,14 @@ +with (import <nixpkgs> { + config.allowUnfree = true; + config.android_sdk.accept_license = true; +}); + +androidenv.composeAndroidPackages { + platformVersions = ["28" "30" "31"]; + buildToolsVersions = ["30.0.3"]; + + includeEmulator = true; + includeSystemImages = true; + systemImageTypes = ["google_apis_playstore"]; + abiVersions = ["x86_64"]; +} diff --git a/nix/android-shell-shellHook.py b/nix/android-shell-shellHook.py new file mode 100755 index 0000000..53a542b --- /dev/null +++ b/nix/android-shell-shellHook.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python + +import sys, os, shutil + +BUILD_TOOLS_PATH = sys.argv[1] +PLATFORMS_PATH = sys.argv[2] +BUILD_TOOLS = [os.path.join(BUILD_TOOLS_PATH, filename) for filename in os.listdir(BUILD_TOOLS_PATH)] +PLATFORMS = [os.path.join(PLATFORMS_PATH, filename) for filename in os.listdir(PLATFORMS_PATH)] + +for build_tool in BUILD_TOOLS: + if os.path.islink(build_tool): + print(f'build-tool "{os.path.basename(build_tool)}" is a symlink. Copying...') + link_src = os.readlink(build_tool) + os.unlink(build_tool) + shutil.copytree(link_src, build_tool) + +for platform in PLATFORMS: + if os.path.islink(platform): + print(f'platform "{os.path.basename(platform)}" is a symlink. Copying...') + link_src = os.readlink(platform) + os.unlink(platform) + shutil.copytree(link_src, platform) @@ -1,31 +1,24 @@ -with (import <nixpkgs> { - config.android_sdk.accept_license = true; -}); +with (import <nixpkgs> {}); let jdk = jdk11; - android_composition = androidenv.composeAndroidPackages { - platformVersions = ["28"]; - }; - #androidsdk = androidenv.androidPkgs_9_0.androidsdk; - androidsdk = android_composition.androidsdk; + android-composition = import ./nix/android-composition.nix; in mkShell rec { + name = "android-shell"; + buildInputs = [ jdk - androidsdk - #android-studio - bazel - python2 - bazel-watcher - java-language-server + android-composition.androidsdk + bazel_4 ]; JAVA_HOME = jdk.home; - ANDROID_SDK_ROOT = "${androidsdk}/libexec/android-sdk"; + ANDROID_SDK_ROOT = "${android-composition.androidsdk}/libexec/android-sdk"; ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle"; ANDROID_HOME = "${ANDROID_SDK_ROOT}"; shellHook = '' - echo ":lua require('lspconfig').java_language_server.setup { cmd = { '${java-language-server}/share/java/java-language-server/lang_server_linux.sh' } }" + # TODO: replace with nix builtins + sudo python ./nix/android-shell-shellHook.py ${ANDROID_HOME}/build-tools ${ANDROID_HOME}/platforms ''; } |