sterepando commited on
Commit
50490f5
·
verified ·
1 Parent(s): f4e731d

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +28 -23
Dockerfile CHANGED
@@ -1,22 +1,24 @@
1
  # Используем JDK 11
2
  FROM openjdk:11-jdk-slim
3
 
4
- # Устанавливаем curl для загрузки и python3 для сервера
5
- RUN apt-get update && apt-get install -y curl python3
6
 
7
  WORKDIR /app
8
 
9
- # 1. Скачиваем зависимости (используем стабильные репозитории)
10
- # android.jar (Symbols для компиляции)
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 (Xposed API)
14
- RUN curl -L -f "https://maven.aliucord.com/snapshots/com/aliucord/Aliuhook/1.1.3/Aliuhook-1.1.3-sources.jar" -o aliuhook.jar
 
 
15
 
16
  # d8 (DEX compiler)
17
  RUN curl -L -f "https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar" -o d8.jar
18
 
19
- # 2. Создаем исходный код Apple Liquid Glass FAB
20
  RUN printf 'package b.liquidglass;\n\
21
  \n\
22
  import android.content.Context;\n\
@@ -25,6 +27,7 @@ import android.graphics.drawable.Drawable;\n\
25
  import android.view.MotionEvent;\n\
26
  import android.view.View;\n\
27
  import android.view.animation.OvershootInterpolator;\n\
 
28
  import de.robv.android.xposed.XC_MethodHook;\n\
29
  import de.robv.android.xposed.XposedBridge;\n\
30
  import java.lang.reflect.Field;\n\
@@ -38,33 +41,36 @@ public class Main {\n\
38
  protected void afterHookedMethod(MethodHookParam param) throws Throwable {\n\
39
  final Object fragment = param.thisObject;\n\
40
  final View root = (View) param.getResult();\n\
 
41
  root.postDelayed(() -> {\n\
42
  try {\n\
43
  Field f = fragment.getClass().getDeclaredField("floatingButton");\n\
44
  f.setAccessible(true);\n\
45
  View fab = (View) f.get(fragment);\n\
46
- if (fab != null) applyEffect(fab);\n\
47
- } catch (Exception ignored) {}\n\
 
 
48
  }, 400);\n\
49
  }\n\
50
  });\n\
51
  } catch (Exception e) {\n\
52
- XposedBridge.log("LiquidGlass Error: " + e.getMessage());\n\
53
  }\n\
54
  }\n\
55
  \n\
56
- private void applyEffect(View v) {\n\
57
  v.setBackground(new GlassDrawable());\n\
58
- // Эффект блюра для Android 12+\n\
59
  if (android.os.Build.VERSION.SDK_INT >= 31) {\n\
60
  try {\n\
61
  v.setRenderEffect(RenderEffect.createBlurEffect(20f, 20f, Shader.TileMode.CLAMP));\n\
62
  } catch (Exception ignored) {}\n\
63
  }\n\
64
- // Liquid анимация\n\
65
  v.setOnTouchListener((view, ev) -> {\n\
66
  if (ev.getAction() == MotionEvent.ACTION_DOWN) {\n\
67
- view.animate().scaleX(0.88f).scaleY(0.88f).alpha(0.8f).setDuration(150).start();\n\
68
  } else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {\n\
69
  view.animate().scaleX(1f).scaleY(1f).alpha(1f).setDuration(500)\n\
70
  .setInterpolator(new OvershootInterpolator(3.0f)).start();\n\
@@ -77,10 +83,10 @@ public class Main {\n\
77
  private final Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
78
  private final Paint s = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
79
  public GlassDrawable() {\n\
80
- p.setColor(Color.argb(160, 255, 255, 255)); // Стекло\n\
81
  s.setStyle(Paint.Style.STROKE);\n\
82
  s.setStrokeWidth(3f);\n\
83
- s.setColor(Color.argb(120, 255, 255, 255)); // Блик\n\
84
  }\n\
85
  @Override\n\
86
  public void draw(Canvas c) {\n\
@@ -95,10 +101,10 @@ public class Main {\n\
95
  }\n\
96
  }' > Main.java
97
 
98
- # 3. Компиляция (теперь файлы точно JAR)
99
  RUN javac -cp android.jar:aliuhook.jar -d . Main.java
100
 
101
- # 4. Конвертация в DEX
102
  RUN java -cp d8.jar com.android.tools.r8.D8 \
103
  --release \
104
  --lib android.jar \
@@ -106,12 +112,11 @@ RUN java -cp d8.jar com.android.tools.r8.D8 \
106
  --output . \
107
  b/liquidglass/Main*.class
108
 
109
- # 5. Подготовка финального файла
110
  RUN mv classes.dex LiquidGlass.dex
111
 
112
- # 6. Открываем порт для Hugging Face (7860 по умолчанию)
113
  EXPOSE 7860
114
-
115
- # 7. Запускаем сервер. Файл будет доступен по прямой ссылке.
116
- CMD echo "Download link: https://sterepando-luajava-jar-to-dex.hf.space/LiquidGlass.dex" && \
117
  python3 -m http.server 7860
 
1
  # Используем JDK 11
2
  FROM openjdk:11-jdk-slim
3
 
4
+ # Устанавливаем необходимые утилиты
5
+ RUN apt-get update && apt-get install -y curl python3 unzip
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
+ # 2. Генерируем исправленный исходный код
22
  RUN printf 'package b.liquidglass;\n\
23
  \n\
24
  import android.content.Context;\n\
 
27
  import android.view.MotionEvent;\n\
28
  import android.view.View;\n\
29
  import android.view.animation.OvershootInterpolator;\n\
30
+ import android.util.Log;\n\
31
  import de.robv.android.xposed.XC_MethodHook;\n\
32
  import de.robv.android.xposed.XposedBridge;\n\
33
  import java.lang.reflect.Field;\n\
 
41
  protected void afterHookedMethod(MethodHookParam param) throws Throwable {\n\
42
  final Object fragment = param.thisObject;\n\
43
  final View root = (View) param.getResult();\n\
44
+ if (root == null) return;\n\
45
  root.postDelayed(() -> {\n\
46
  try {\n\
47
  Field f = fragment.getClass().getDeclaredField("floatingButton");\n\
48
  f.setAccessible(true);\n\
49
  View fab = (View) f.get(fragment);\n\
50
+ if (fab != null) applyAppleEffect(fab);\n\
51
+ } catch (Exception e) {\n\
52
+ Log.e("LiquidGlass", "FAB find error: " + e.getMessage());\n\
53
+ }\n\
54
  }, 400);\n\
55
  }\n\
56
  });\n\
57
  } catch (Exception e) {\n\
58
+ Log.e("LiquidGlass", "Plugin start failed: " + e.getMessage());\n\
59
  }\n\
60
  }\n\
61
  \n\
62
+ private void applyAppleEffect(View v) {\n\
63
  v.setBackground(new GlassDrawable());\n\
64
+ // Нативное размытие для Android 12+\n\
65
  if (android.os.Build.VERSION.SDK_INT >= 31) {\n\
66
  try {\n\
67
  v.setRenderEffect(RenderEffect.createBlurEffect(20f, 20f, Shader.TileMode.CLAMP));\n\
68
  } catch (Exception ignored) {}\n\
69
  }\n\
70
+ // "Жидкая" анимация при касании\n\
71
  v.setOnTouchListener((view, ev) -> {\n\
72
  if (ev.getAction() == MotionEvent.ACTION_DOWN) {\n\
73
+ view.animate().scaleX(0.85f).scaleY(0.85f).alpha(0.8f).setDuration(150).start();\n\
74
  } else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {\n\
75
  view.animate().scaleX(1f).scaleY(1f).alpha(1f).setDuration(500)\n\
76
  .setInterpolator(new OvershootInterpolator(3.0f)).start();\n\
 
83
  private final Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
84
  private final Paint s = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
85
  public GlassDrawable() {\n\
86
+ p.setColor(Color.argb(160, 255, 255, 255)); // Основной фон (стекло)\n\
87
  s.setStyle(Paint.Style.STROKE);\n\
88
  s.setStrokeWidth(3f);\n\
89
+ s.setColor(Color.argb(120, 255, 255, 255)); // Блик обводки\n\
90
  }\n\
91
  @Override\n\
92
  public void draw(Canvas c) {\n\
 
101
  }\n\
102
  }' > Main.java
103
 
104
+ # 3. Компиляция в байт-код
105
  RUN javac -cp android.jar:aliuhook.jar -d . Main.java
106
 
107
+ # 4. Конвертация в .dex
108
  RUN java -cp d8.jar com.android.tools.r8.D8 \
109
  --release \
110
  --lib android.jar \
 
112
  --output . \
113
  b/liquidglass/Main*.class
114
 
115
+ # 5. Переименование результата
116
  RUN mv classes.dex LiquidGlass.dex
117
 
118
+ # 6. Запуск сервера для скачивания
119
  EXPOSE 7860
120
+ CMD echo "Файл готов! Ссылка на скачивание:" && \
121
+ echo "https://$SPACE_HOST/LiquidGlass.dex" && \
 
122
  python3 -m http.server 7860