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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +17 -18
Dockerfile CHANGED
@@ -13,7 +13,7 @@ RUN apt-get update && \
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,9 +26,9 @@ RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
26
 
27
  ENV PATH=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}
28
 
29
- # Ставим 30.0.3
30
  RUN yes | sdkmanager --licenses >/dev/null && \
31
- sdkmanager "build-tools;30.0.3" "platforms;android-30"
32
 
33
  # -----------------------------------------------------------------------------
34
  # Сборка
@@ -50,11 +50,11 @@ RUN rm -rf jpms-example example android src/test \
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 && \
@@ -65,27 +65,26 @@ RUN echo 'package party.iroiro.luajava;' > luajava/src/main/java/party/iroiro/lu
65
  echo ' public LuaException(Throwable cause) { super(cause); }' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java && \
66
  echo ' public LuaException(LuaError error, String msg) { super(error.toString() + ": " + msg); }' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java && \
67
  echo '}' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java
 
 
68
  RUN find . -name "*.java" -exec sed -i 's/LuaException\.LuaError/LuaError/g' {} +
69
  RUN find . -name "*.java" -exec sed -i '/^package /a import party.iroiro.luajava.LuaError;' {} +
70
 
71
- # 5. Удаляем аннотации
72
  RUN find . -name "*.java" -exec sed -i 's/@NotNull//g' {} + && \
73
  find . -name "*.java" -exec sed -i 's/@Nullable//g' {} + && \
74
  find . -name "*.java" -exec sed -i '/import org.jetbrains.annotations/d' {} + && \
75
  find . -name "*.java" -exec sed -i '/import party.iroiro.luajava.LuaException.LuaError;/d' {} +
76
 
77
- # 6. Компиляция (-g:none для удаления отладочной инфы, которая крашит d8)
78
  RUN mkdir classes
79
- RUN javac -g:none -source 8 -target 8 -d classes $(find . -name "*.java")
80
-
81
- # 7. Сборка DEX (Build Tools 30.0.3 + --debug чтобы отключить оптимизации d8)
82
- # Иногда --debug помогает обойти баги оптимизатора
83
- RUN ${ANDROID_SDK_ROOT}/build-tools/30.0.3/d8 \
84
- --lib ${ANDROID_SDK_ROOT}/platforms/android-30/android.jar \
85
- --min-api 21 \
86
- --debug \
87
- --output . \
88
- $(find classes -name "*.class") && \
89
  mv classes.dex /app/luajava_wrapper.dex
90
 
91
  WORKDIR /app
@@ -100,7 +99,7 @@ RUN echo 'import gradio as gr' > app.py && \
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("Compilation SUCCESS! (Using BT 30.0.3 + NoDebugInfo)")' >> 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
 
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
 
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
  # Сборка
 
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 && \
 
65
  echo ' public LuaException(Throwable cause) { super(cause); }' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java && \
66
  echo ' public LuaException(LuaError error, String msg) { super(error.toString() + ": " + msg); }' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java && \
67
  echo '}' >> luajava/src/main/java/party/iroiro/luajava/LuaException.java
68
+
69
+ # ПРИМЕНЯЕМ ФИКСЫ В КОДЕ
70
  RUN find . -name "*.java" -exec sed -i 's/LuaException\.LuaError/LuaError/g' {} +
71
  RUN find . -name "*.java" -exec sed -i '/^package /a import party.iroiro.luajava.LuaError;' {} +
72
 
73
+ # 5. Чистим аннотации
74
  RUN find . -name "*.java" -exec sed -i 's/@NotNull//g' {} + && \
75
  find . -name "*.java" -exec sed -i 's/@Nullable//g' {} + && \
76
  find . -name "*.java" -exec sed -i '/import org.jetbrains.annotations/d' {} + && \
77
  find . -name "*.java" -exec sed -i '/import party.iroiro.luajava.LuaException.LuaError;/d' {} +
78
 
79
+ # 6. Компиляция
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
  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