android.Dockerfile 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. FROM docker.io/ubuntu
  2. ENV DEBIAN_FRONTEND noninteractive
  3. RUN apt-get update
  4. RUN apt install -yq openjdk-21-jre-headless openjdk-21-jdk-headless unzip cmake file git wget
  5. # For vendored openssl
  6. RUN apt-get install -y build-essential checkinstall zlib1g-dev
  7. RUN cd /tmp/ && \
  8. wget -O install-rustup.sh https://sh.rustup.rs && \
  9. sh install-rustup.sh -yq --default-toolchain none && \
  10. rm install-rustup.sh
  11. ENV PATH "${PATH}:/root/.cargo/bin/"
  12. RUN rustup default 1.88
  13. RUN rustup target add aarch64-linux-android
  14. #RUN rustup target add armv7-linux-androideabi
  15. #RUN rustup target add i686-linux-android
  16. #RUN rustup target add x86_64-linux-android
  17. # Install Android SDK
  18. ENV ANDROID_HOME /opt/android-sdk/
  19. RUN mkdir ${ANDROID_HOME} && \
  20. cd ${ANDROID_HOME} && \
  21. wget -O cmdline-tools.zip -q https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip && \
  22. unzip cmdline-tools.zip && \
  23. rm cmdline-tools.zip
  24. # Required by SDKManager
  25. RUN cd ${ANDROID_HOME}/cmdline-tools/ && \
  26. mkdir latest && \
  27. mv bin lib latest
  28. RUN yes | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --licenses
  29. RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platform-tools"
  30. RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platforms;android-34"
  31. RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "ndk;25.2.9519653"
  32. RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0"
  33. RUN echo '[target.aarch64-linux-android] \n\
  34. ar = "/opt/android-sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" \n\
  35. linker = "/opt/android-sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang" \n\
  36. ' > /root/.cargo/config.toml
  37. # wtf cargo
  38. ENV RANLIB /opt/android-sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  39. # Needed by the ring dependency
  40. ENV TARGET_AR /opt/android-sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  41. ENV TARGET_CC /opt/android-sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang
  42. # Make sqlcipher
  43. # Needed for sqlcipher amalgamation
  44. #RUN apt install -yq tclsh libssl-dev
  45. #RUN cd /tmp/ && \
  46. # wget -O sqlcipher.zip https://github.com/sqlcipher/sqlcipher/archive/refs/tags/v4.5.6.zip && \
  47. # unzip sqlcipher.zip && \
  48. # rm sqlcipher.zip && \
  49. # mv sqlcipher* sqlcipher && \
  50. # cd sqlcipher && \
  51. # ./configure && \
  52. # make sqlite3.c && \
  53. # mkdir build && \
  54. # mv *.c *.h build/ && \
  55. # mkdir jni && \
  56. # echo '\
  57. #APP_ABI := arm64-v8a \n\
  58. #APP_CPPFLAGS += -fexceptions -frtti \n\
  59. #APP_STL := c++_shared' > jni/Application.mk && \
  60. # echo '\
  61. #LOCAL_PATH := $(call my-dir) \n\
  62. #include $(CLEAR_VARS) \n\
  63. #LOCAL_MODULE := sqlcipher-a \n\
  64. #LOCAL_MODULE_FILENAME := libsqlcipher \n\
  65. #LOCAL_SRC_FILES := ../build/sqlite3.c \n\
  66. #LOCAL_C_INCLUDES := ../build \n\
  67. #LOCAL_EXPORT_C_INCLUDES := ../build \n\
  68. #LOCAL_CFLAGS := -DSQLITE_THREADSAFE=1 \n\
  69. #include $(BUILD_STATIC_LIBRARY)' > jni/Android.mk && \
  70. # /opt/android-sdk/ndk/25.2.9519653/ndk-build
  71. #ENV RUSTFLAGS "-L/tmp/sqlcipher/obj/local/arm64-v8a/"
  72. # Make directory for user code
  73. RUN mkdir /root/src
  74. WORKDIR /root/src/bin/darkirc/