sterepando commited on
Commit
a7a3c48
·
verified ·
1 Parent(s): 5f6cb95

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +98 -19
Dockerfile CHANGED
@@ -1,28 +1,107 @@
1
- # Используем JDK swaga
2
- FROM openjdk:11-jdk-slim
3
 
4
- # Устанавливаем необходимые утилиты
5
- RUN apt-get update && apt-get install -y curl unzip python3
 
 
 
 
6
 
7
- WORKDIR /app
 
 
 
 
8
 
9
- # 1. Скачиваем правильные зависимости
10
- # android.jar API 31 (нужен для RenderEffect и новых функций)
11
- RUN curl -L -f "https://github.com/Sable/android-platforms/raw/refs/heads/master/android-31/android.jar" -o android.jar
 
 
 
12
 
13
- # Aliuhook: качаем .aar и вытаскиваем из него бинарный classes.jar
14
- RUN curl -L -f "https://maven.aliucord.com/snapshots/com/aliucord/Aliuhook/1.1.3/Aliuhook-1.1.3.aar" -o aliuhook.aar && \
15
- unzip aliuhook.aar classes.jar && \
16
- mv classes.jar aliuhook.jar
 
 
 
 
 
 
 
17
 
18
- # d8 (DEX compiler)
19
- RUN curl -L -f "https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar" -o d8.jar
20
 
21
- RUN curl -L "https://github.com/coidarashka/MandreLib-Modules/raw/refs/heads/main/ZXVA.java" -o Main.java
 
 
 
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
- RUN javac -cp android.jar:aliuhook.jar -d . Main.java
25
- RUN java -cp d8.jar com.android.tools.r8.D8 --release --lib android.jar --classpath aliuhook.jar --output . b/liquidglass/Main*.class
26
- RUN mv classes.dex LiquidGlass.dex
27
  EXPOSE 7860
28
- CMD python3 -m http.server 7860
 
1
+ FROM ubuntu:22.04
 
2
 
3
+ # 1. Подготовка среды (NDK r25c + SDK Tools)
4
+ ENV DEBIAN_FRONTEND=noninteractive
5
+ RUN apt-get update && apt-get install -y \
6
+ build-essential cmake wget unzip git python3 \
7
+ openjdk-17-jdk-headless gettext libz-dev ninja-build zip \
8
+ && rm -rf /var/lib/apt/lists/*
9
 
10
+ ENV NDK_VERSION=r25c
11
+ RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip \
12
+ && unzip -q android-ndk-${NDK_VERSION}-linux.zip -d /opt \
13
+ && rm android-ndk-${NDK_VERSION}-linux.zip
14
+ ENV ANDROID_NDK_HOME=/opt/android-ndk-${NDK_VERSION}
15
 
16
+ # Инструменты для сборки DEX (d8)
17
+ RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O sdk.zip \
18
+ && mkdir -p /opt/android-sdk/cmdline-tools \
19
+ && unzip -q sdk.zip -d /tmp && mv /tmp/cmdline-tools/* /opt/android-sdk/cmdline-tools/latest && rm sdk.zip
20
+ ENV PATH="/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/build-tools/30.0.3:${PATH}"
21
+ RUN yes | sdkmanager --sdk_root=/opt/android-sdk "platforms;android-30" "build-tools;30.0.3"
22
 
23
+ # 2. Настройка Кросс-компиляции (ARM64, API 30)
24
+ ENV TARGET=aarch64-linux-android
25
+ ENV API=30
26
+ ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
27
+ ENV CC=$TOOLCHAIN/bin/$TARGET$API-clang
28
+ ENV CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
29
+ ENV AR=$TOOLCHAIN/bin/llvm-ar
30
+ ENV LD=$TOOLCHAIN/bin/ld.lld
31
+ ENV RANLIB=$TOOLCHAIN/bin/llvm-ranlib
32
+ ENV STRIP=$TOOLCHAIN/bin/llvm-strip
33
+ ENV PREFIX=/build/deps
34
 
35
+ WORKDIR /build
 
36
 
37
+ # 3. Сборка всех зависимостей В СТАТИКЕ
38
+ # ZLIB
39
+ RUN wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar -xf zlib-1.3.1.tar.gz && cd zlib-1.3.1 \
40
+ && ./configure --prefix=$PREFIX --static && make -j$(nproc) install
41
 
42
+ # OPENSSL (Важнейший компонент для HTTPS)
43
+ RUN wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar -xf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w \
44
+ && ./Configure android-arm64 no-shared no-tests --prefix=$PREFIX && make -j$(nproc) install_sw
45
+
46
+ # EXPAT (Для разбора XML/WebDAV)
47
+ RUN wget -q https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz && tar -xf expat-2.5.0.tar.gz && cd expat-2.5.0 \
48
+ && ./configure --host=$TARGET --prefix=$PREFIX --enable-static --disable-shared && make -j$(nproc) install
49
+
50
+ # CURL (Транспорт для Git)
51
+ RUN wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar -xf curl-8.5.0.tar.gz && cd curl-8.5.0 \
52
+ && ./configure --host=$TARGET --prefix=$PREFIX --with-openssl=$PREFIX --with-zlib=$PREFIX \
53
+ --enable-static --disable-shared --disable-verbose --disable-ldap && make -j$(nproc) install
54
+
55
+ # 4. Сборка GIT (Монструозная статика)
56
+ RUN wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz && tar -xf git-2.43.0.tar.gz && cd git-2.43.0 \
57
+ && export LDFLAGS="-static -L$PREFIX/lib" \
58
+ && export CPPFLAGS="-I$PREFIX/include" \
59
+ && ./configure --host=$TARGET --prefix=/data/local/tmp/git \
60
+ --with-curl=$PREFIX --with-zlib=$PREFIX --with-expat=$PREFIX --with-openssl=$PREFIX \
61
+ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no \
62
+ && make -j$(nproc) install NO_TCLTK=1 NO_GETTEXT=1 NO_PYTHON=1 NO_INSTALL_HARDLINKS=1
63
+
64
+ # 5. Создание "Умного" Java-установщика
65
+ RUN mkdir -p /build/java/ni/mandre/git
66
+ RUN echo 'package ni.mandre.git; \n\
67
+ import android.content.Context; \n\
68
+ import java.io.*; \n\
69
+ import java.lang.reflect.*; \n\
70
+ import java.util.*; \n\
71
+ public class GitInstaller { \n\
72
+ public static void install(Context ctx, byte[] gitData) { \n\
73
+ try { \n\
74
+ File binDir = ctx.getDir("bin", Context.MODE_PRIVATE); \n\
75
+ File gitBin = new File(binDir, "git"); \n\
76
+ // Пишем бинарник \n\
77
+ FileOutputStream fos = new FileOutputStream(gitBin); \n\
78
+ fos.write(gitData); fos.close(); \n\
79
+ gitBin.setExecutable(true, false); \n\
80
+ // ХАК: Регистрация в PATH текущего процесса через рефлексию \n\
81
+ injectPath(binDir.getAbsolutePath()); \n\
82
+ System.out.println("MandreGit: Installed and Path Injected!"); \n\
83
+ } catch (Exception e) { e.printStackTrace(); } \n\
84
+ } \n\
85
+ private static void injectPath(String newPath) throws Exception { \n\
86
+ Map<String, String> env = System.getenv(); \n\
87
+ Class<?> cl = env.getClass(); \n\
88
+ Field field = cl.getDeclaredField("m"); \n\
89
+ field.setAccessible(true); \n\
90
+ Map<String, String> writableEnv = (Map<String, String>) field.get(env); \n\
91
+ String path = writableEnv.get("PATH"); \n\
92
+ if (path == null || !path.contains(newPath)) { \n\
93
+ writableEnv.put("PATH", newPath + ":" + path); \n\
94
+ } \n\
95
+ } \n\
96
+ }' > /build/java/ni/mandre/git/GitInstaller.java
97
+
98
+ # Компиляция в DEX
99
+ RUN javac -source 8 -target 8 -cp /opt/android-sdk/platforms/android-30/android.jar /build/java/ni/mandre/git/GitInstaller.java \
100
+ && d8 --output /build/git_setup.dex /build/java/ni/mandre/git/GitInstaller.class
101
+
102
+ # 6. Финальный экспорт
103
+ RUN cp /data/local/tmp/git/bin/git /build/git_arm64
104
+ RUN zip -j /build/git_plugin_pack.zip /build/git_arm64 /build/git_setup.dex
105
 
 
 
 
106
  EXPOSE 7860
107
+ CMD ["python3", "-m", "http.server", "7860"]