summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile12
-rw-r--r--nix/android-composition.nix14
-rwxr-xr-xnix/android-shell-shellHook.py22
-rw-r--r--shell.nix25
4 files changed, 53 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index 9003dc3..be39da0 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
diff --git a/shell.nix b/shell.nix
index 767fb3d..7017e08 100644
--- a/shell.nix
+++ b/shell.nix
@@ -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
'';
}