sterepando commited on
Commit
9071793
·
verified ·
1 Parent(s): d9529e0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +22 -26
Dockerfile CHANGED
@@ -14,59 +14,54 @@ RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-
14
  && rm android-ndk-${NDK_VERSION}-linux.zip
15
  ENV ANDROID_NDK_HOME=/opt/android-ndk-${NDK_VERSION}
16
 
17
- # 3. Android SDK (Command Line Tools + Build Tools для DEX)
18
  RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O sdk.zip \
19
  && mkdir -p /opt/android-sdk/cmdline-tools \
20
- && unzip -q sdk.zip -d /tmp \
21
- && mv /tmp/cmdline-tools /opt/android-sdk/cmdline-tools/latest \
22
- && rm -rf sdk.zip /tmp/cmdline-tools
23
 
24
- # Добавляем всё в PATH
25
- ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
26
- ENV PATH="/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/build-tools/30.0.3:${TOOLCHAIN}/bin:${PATH}"
27
 
28
  RUN yes | sdkmanager --sdk_root=/opt/android-sdk "platforms;android-30" "build-tools;30.0.3"
29
 
30
- # 4. Настройка Кросс-компиляции (API 30, ARM64)
31
  ENV TARGET=aarch64-linux-android
32
  ENV API=30
33
  ENV PREFIX=/build/deps
34
  WORKDIR /build
35
 
36
- # ФИКС ДЛЯ OPENSSL: Создаем симлинки, чтобы он нашел "gcc"
37
- RUN ln -s ${TOOLCHAIN}/bin/aarch64-linux-android${API}-clang ${TOOLCHAIN}/bin/aarch64-linux-android-gcc && \
38
- ln -s ${TOOLCHAIN}/bin/llvm-ar ${TOOLCHAIN}/bin/aarch64-linux-android-ar && \
39
- ln -s ${TOOLCHAIN}/bin/llvm-ranlib ${TOOLCHAIN}/bin/aarch64-linux-android-ranlib
40
-
41
  # 5. Сборка ZLIB (Static)
42
  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 \
43
- && CC=aarch64-linux-android${API}-clang ./configure --prefix=$PREFIX --static && make -j$(nproc) install
44
 
45
- # 6. Сборка OPENSSL (Static, HTTPS)
46
- # Используем ANDROID_NDK_HOME и правильный таргет
47
  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 \
48
- && ./Configure android-arm64 no-shared no-tests -D__ANDROID_API__=$API --prefix=$PREFIX \
49
- && make -j$(nproc) install_sw
 
50
 
51
  # 7. Сборка EXPAT (Static)
52
  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 \
53
- && ./configure --host=$TARGET --prefix=$PREFIX --enable-static --disable-shared && make -j$(nproc) install
54
 
55
- # 8. Сборка CURL (Static)
56
  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 \
57
  && ./configure --host=$TARGET --prefix=$PREFIX --with-openssl=$PREFIX --with-zlib=$PREFIX \
58
- --enable-static --disable-shared --disable-verbose --disable-ldap && make -j$(nproc) install
59
 
60
- # 9. Сборка GIT (Вшиваем зависимости через LDFLAGS)
61
  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 \
62
  && export LDFLAGS="-static -L$PREFIX/lib" \
63
  && export CPPFLAGS="-I$PREFIX/include" \
64
  && ./configure --host=$TARGET --prefix=/data/local/tmp/git \
65
  --with-curl=$PREFIX --with-zlib=$PREFIX --with-expat=$PREFIX --with-openssl=$PREFIX \
66
  ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no \
67
- && make -j$(nproc) install NO_TCLTK=1 NO_GETTEXT=1 NO_PYTHON=1 NO_INSTALL_HARDLINKS=1
68
 
69
- # 10. Java DEX инсталлятор с инъекцией PATH
70
  RUN mkdir -p /build/java/ni/mandre/git && echo 'package ni.mandre.git; \n\
71
  import android.content.Context; \n\
72
  import java.io.*; \n\
@@ -81,7 +76,7 @@ public class GitInstaller { \n\
81
  fos.write(gitData); fos.close(); \n\
82
  gitBin.setExecutable(true, false); \n\
83
  injectPath(binDir.getAbsolutePath()); \n\
84
- System.out.println("MandreGit: Success. Git binary at: " + gitBin.getAbsolutePath()); \n\
85
  } catch (Exception e) { e.printStackTrace(); } \n\
86
  } \n\
87
  private static void injectPath(String newPath) { \n\
@@ -102,9 +97,10 @@ public class GitInstaller { \n\
102
  RUN javac -source 8 -target 8 -cp /opt/android-sdk/platforms/android-30/android.jar /build/java/ni/mandre/git/GitInstaller.java \
103
  && d8 --output /build/git_setup.dex /build/java/ni/mandre/git/GitInstaller.class
104
 
105
- # 11. Финальный экспорт
106
  RUN cp /data/local/tmp/git/bin/git /build/git_arm64 && \
107
  zip -j /build/git_bundle.zip /build/git_arm64 /build/git_setup.dex
108
 
 
109
  EXPOSE 7860
110
  CMD ["python3", "-m", "http.server", "7860"]
 
14
  && rm android-ndk-${NDK_VERSION}-linux.zip
15
  ENV ANDROID_NDK_HOME=/opt/android-ndk-${NDK_VERSION}
16
 
17
+ # 3. Android SDK (Command Line Tools для сборки DEX)
18
  RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O sdk.zip \
19
  && mkdir -p /opt/android-sdk/cmdline-tools \
20
+ && unzip -q sdk.zip -d /opt/android-sdk/cmdline-tools \
21
+ && mv /opt/android-sdk/cmdline-tools/cmdline-tools /opt/android-sdk/cmdline-tools/latest \
22
+ && rm sdk.zip
23
 
24
+ # Настройка путей (добавляем компиляторы NDK в PATH для OpenSSL)
25
+ ENV PATH="/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/build-tools/30.0.3:${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
 
26
 
27
  RUN yes | sdkmanager --sdk_root=/opt/android-sdk "platforms;android-30" "build-tools;30.0.3"
28
 
29
+ # 4. Параметры сборки
30
  ENV TARGET=aarch64-linux-android
31
  ENV API=30
32
  ENV PREFIX=/build/deps
33
  WORKDIR /build
34
 
 
 
 
 
 
35
  # 5. Сборка ZLIB (Static)
36
  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 \
37
+ && CC=$TARGET$API-clang ./configure --prefix=$PREFIX --static && make -j4 install
38
 
39
+ # 6. Сборка OPENSSL (Static, API 30)
40
+ # ФИКС: Ограничиваем потоки до 4, чтобы избежать ошибки .d.tmp, и чистим макросы
41
  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 \
42
+ && ./Configure android-arm64 no-shared no-tests --prefix=$PREFIX \
43
+ && sed -i "s/-D__ANDROID_API__=[0-9]*/-D__ANDROID_API__=$API/g" Makefile \
44
+ && make -j4 install_sw
45
 
46
  # 7. Сборка EXPAT (Static)
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 -j4 install
49
 
50
+ # 8. Сборка CURL (Static с OpenSSL)
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-ldap --disable-proxy && make -j4 install
54
 
55
+ # 9. Сборка 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 -j4 install NO_TCLTK=1 NO_GETTEXT=1 NO_PYTHON=1 NO_INSTALL_HARDLINKS=1
63
 
64
+ # 10. Java Установщик (DEX) с автоматической регистрацией PATH через рефлексию
65
  RUN mkdir -p /build/java/ni/mandre/git && echo 'package ni.mandre.git; \n\
66
  import android.content.Context; \n\
67
  import java.io.*; \n\
 
76
  fos.write(gitData); fos.close(); \n\
77
  gitBin.setExecutable(true, false); \n\
78
  injectPath(binDir.getAbsolutePath()); \n\
79
+ System.out.println("MandreGit: Git binary registered at " + gitBin.getAbsolutePath()); \n\
80
  } catch (Exception e) { e.printStackTrace(); } \n\
81
  } \n\
82
  private static void injectPath(String newPath) { \n\
 
97
  RUN javac -source 8 -target 8 -cp /opt/android-sdk/platforms/android-30/android.jar /build/java/ni/mandre/git/GitInstaller.java \
98
  && d8 --output /build/git_setup.dex /build/java/ni/mandre/git/GitInstaller.class
99
 
100
+ # 11. Упаковка
101
  RUN cp /data/local/tmp/git/bin/git /build/git_arm64 && \
102
  zip -j /build/git_bundle.zip /build/git_arm64 /build/git_setup.dex
103
 
104
+ # Запуск сервера
105
  EXPOSE 7860
106
  CMD ["python3", "-m", "http.server", "7860"]