sterepando commited on
Commit
dab38a6
·
verified ·
1 Parent(s): 08f1056

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +12 -11
Dockerfile CHANGED
@@ -13,7 +13,7 @@ RUN apt-get update && \
13
  RUN pip install --no-cache-dir gradio
14
 
15
  # -----------------------------------------------------------------------------
16
- # Android SDK (Используем старую добрую 28 версию с dx)
17
  # -----------------------------------------------------------------------------
18
  ENV ANDROID_SDK_ROOT=/opt/android-sdk
19
  ENV CMDLINE_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
@@ -26,9 +26,8 @@ RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
26
 
27
  ENV PATH=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}
28
 
29
- # Ставим Build Tools 28.0.3, чтобы получить настоящий 'dx'
30
  RUN yes | sdkmanager --licenses >/dev/null && \
31
- sdkmanager "build-tools;28.0.3" "platforms;android-28"
32
 
33
  # -----------------------------------------------------------------------------
34
  # Сборка
@@ -47,14 +46,15 @@ RUN rm -rf jpms-example example android src/test \
47
  && find . -name "module-info.java" -delete
48
 
49
  # 3. FIX: Заглушка GlobalLibraryLoader
 
50
  RUN mkdir -p luajava/src/main/java/party/iroiro/luajava/util && \
51
  echo 'package party.iroiro.luajava.util;' > luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
52
  echo 'public class GlobalLibraryLoader {' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
53
- echo ' public static String load(String name) { return "lib" + name + ".so"; }' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
54
  echo ' public static void register(Class<?> c, boolean b) {}' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
55
  echo '}' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java
56
 
57
- # 4. FIX: Рефакторинг LuaException/LuaError (оставляем, это хороший фикс)
58
  RUN rm luajava/src/main/java/party/iroiro/luajava/LuaException.java
59
  RUN echo 'package party.iroiro.luajava;' > luajava/src/main/java/party/iroiro/luajava/LuaError.java && \
60
  echo 'public enum LuaError { OK, YIELD, RUNTIME, SYNTAX, MEMORY, GC, ERR, FILE, HANDLER, JAVA; ' >> luajava/src/main/java/party/iroiro/luajava/LuaError.java && \
@@ -80,11 +80,12 @@ RUN find . -name "*.java" -exec sed -i 's/@NotNull//g' {} + && \
80
  RUN mkdir classes
81
  RUN javac -source 1.8 -target 1.8 -d classes $(find . -name "*.java")
82
 
83
- # 7. Сборка DEX через DX (Legacy)
84
- # dx гораздо надежнее для таких задач
85
- RUN ${ANDROID_SDK_ROOT}/build-tools/28.0.3/dx \
86
- --dex --output=classes.dex \
87
- classes && \
 
88
  mv classes.dex /app/luajava_wrapper.dex
89
 
90
  WORKDIR /app
@@ -99,7 +100,7 @@ RUN echo 'import gradio as gr' > app.py && \
99
  echo '' >> app.py && \
100
  echo 'with gr.Blocks() as demo:' >> app.py && \
101
  echo ' gr.Markdown("# Download LuaJava DEX")' >> app.py && \
102
- echo ' gr.Markdown("Compilation SUCCESS! (Built with Legacy DX)")' >> app.py && \
103
  echo ' gr.File(value=file_path, label="luajava_wrapper.dex", interactive=False)' >> app.py && \
104
  echo '' >> app.py && \
105
  echo 'demo.launch(server_name="0.0.0.0", server_port=7860)' >> app.py
 
13
  RUN pip install --no-cache-dir gradio
14
 
15
  # -----------------------------------------------------------------------------
16
+ # Android SDK (Build Tools 30.0.3)
17
  # -----------------------------------------------------------------------------
18
  ENV ANDROID_SDK_ROOT=/opt/android-sdk
19
  ENV CMDLINE_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
 
26
 
27
  ENV PATH=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}
28
 
 
29
  RUN yes | sdkmanager --licenses >/dev/null && \
30
+ sdkmanager "build-tools;30.0.3" "platforms;android-30"
31
 
32
  # -----------------------------------------------------------------------------
33
  # Сборка
 
46
  && find . -name "module-info.java" -delete
47
 
48
  # 3. FIX: Заглушка GlobalLibraryLoader
49
+ # ВАЖНО: Она должна быть такой, чтобы Lua54Natives не ругался
50
  RUN mkdir -p luajava/src/main/java/party/iroiro/luajava/util && \
51
  echo 'package party.iroiro.luajava.util;' > luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
52
  echo 'public class GlobalLibraryLoader {' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
53
+ echo ' public static String load(String name) { return null; }' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
54
  echo ' public static void register(Class<?> c, boolean b) {}' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java && \
55
  echo '}' >> luajava/src/main/java/party/iroiro/luajava/util/GlobalLibraryLoader.java
56
 
57
+ # 4. FIX: Рефакторинг LuaException/LuaError
58
  RUN rm luajava/src/main/java/party/iroiro/luajava/LuaException.java
59
  RUN echo 'package party.iroiro.luajava;' > luajava/src/main/java/party/iroiro/luajava/LuaError.java && \
60
  echo 'public enum LuaError { OK, YIELD, RUNTIME, SYNTAX, MEMORY, GC, ERR, FILE, HANDLER, JAVA; ' >> luajava/src/main/java/party/iroiro/luajava/LuaError.java && \
 
80
  RUN mkdir classes
81
  RUN javac -source 1.8 -target 1.8 -d classes $(find . -name "*.java")
82
 
83
+ # 7. Сборка DEX через D8 (с отключенным desugaring для стабильности)
84
+ RUN ${ANDROID_SDK_ROOT}/build-tools/30.0.3/d8 \
85
+ --lib ${ANDROID_SDK_ROOT}/platforms/android-30/android.jar \
86
+ --min-api 21 \
87
+ --output . \
88
+ $(find classes -name "*.class") && \
89
  mv classes.dex /app/luajava_wrapper.dex
90
 
91
  WORKDIR /app
 
100
  echo '' >> app.py && \
101
  echo 'with gr.Blocks() as demo:' >> app.py && \
102
  echo ' gr.Markdown("# Download LuaJava DEX")' >> app.py && \
103
+ echo ' gr.Markdown("Final Clean Build (No GDX, No d8 bugs)")' >> app.py && \
104
  echo ' gr.File(value=file_path, label="luajava_wrapper.dex", interactive=False)' >> app.py && \
105
  echo '' >> app.py && \
106
  echo 'demo.launch(server_name="0.0.0.0", server_port=7860)' >> app.py