sterepando commited on
Commit
3459983
·
verified ·
1 Parent(s): e9b6dff

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +35 -46
Dockerfile CHANGED
@@ -1,22 +1,17 @@
1
- # Используем JDK 11 как базу
2
  FROM openjdk:11-jdk-slim
3
 
4
- # Устанавливаем curl для скачивания (он надежнее wget в CI)
5
- RUN apt-get update && apt-get install -y curl base64
6
 
7
  WORKDIR /app
8
 
9
- # 1. Загружаем зависимости (используем проверенные RAW ссылки)
10
- # android.jar (API 31+ нужен для RenderEffect)
11
  RUN curl -L "https://raw.githubusercontent.com/anggrayudi/android-hidden-api/master/android-31/android.jar" -o android.jar
12
-
13
- # Aliuhook для API Xposed
14
  RUN curl -L "https://maven.aliucord.com/snapshots/com/aliucord/Aliuhook/1.1.3/Aliuhook-1.1.3.jar" -o aliuhook.jar
15
-
16
- # d8 (инструмент для сборки DEX)
17
  RUN curl -L "https://repo1.maven.org/maven2/com/android/tools/r8/3.3.28/r8-3.3.28.jar" -o d8.jar
18
 
19
- # 2. Внедряем исходный код
20
  RUN printf 'package b.liquidglass;\n\
21
  \n\
22
  import android.content.Context;\n\
@@ -29,7 +24,7 @@ import de.robv.android.xposed.XC_MethodHook;\n\
29
  import de.robv.android.xposed.XposedBridge;\n\
30
  import java.lang.reflect.Field;\n\
31
  \n\
32
- public class LiquidGlass {\n\
33
  public void start() {\n\
34
  try {\n\
35
  Class<?> chatActivity = Class.forName("org.telegram.ui.ChatActivity");\n\
@@ -43,76 +38,70 @@ public class LiquidGlass {\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
- }, 250);\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(15f, 15f, 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.85f).scaleY(0.85f).setDuration(120).start();\n\
68
  } else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {\n\
69
- view.animate().scaleX(1f).scaleY(1f).setDuration(400).setInterpolator(new OvershootInterpolator(1.5f)).start();\n\
 
70
  }\n\
71
  return false;\n\
72
  });\n\
73
  }\n\
74
  \n\
75
  static class GlassDrawable extends Drawable {\n\
76
- private final Paint glassPaint = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
77
- private final Paint borderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
78
- private final RectF rect = new RectF();\n\
79
- \n\
80
  public GlassDrawable() {\n\
81
- glassPaint.setColor(Color.argb(128, 255, 255, 255)); // rgba(255, 255, 255, .5)\n\
82
- borderPaint.setStyle(Paint.Style.STROKE);\n\
83
- borderPaint.setStrokeWidth(3f);\n\
84
- borderPaint.setColor(Color.argb(100, 255, 255, 255));\n\
85
  }\n\
86
- \n\
87
  @Override\n\
88
  public void draw(Canvas c) {\n\
89
- rect.set(getBounds());\n\
90
- float r = Math.min(rect.width(), rect.height()) / 2f;\n\
91
- // Основное стекло\n\
92
- c.drawRoundRect(rect, r, r, glassPaint);\n\
93
- // Спекулярный блик (обводка)\n\
94
- c.drawRoundRect(rect, r, r, borderPaint);\n\
95
  }\n\
96
- \n\
97
  @Override public void setAlpha(int a) {}\n\
98
  @Override public void setColorFilter(ColorFilter cf) {}\n\
99
  @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; }\n\
100
  }\n\
101
- }' > LiquidGlass.java
102
 
103
- # 3. Компиляция
104
- RUN javac -cp android.jar:aliuhook.jar -d . LiquidGlass.java
105
 
106
- # 4. Сборка в DEX
107
  RUN java -cp d8.jar com.android.tools.r8.D8 \
108
  --release \
109
  --lib android.jar \
110
  --classpath aliuhook.jar \
111
  --output . \
112
- b/liquidglass/LiquidGlass*.class
113
-
114
- # 5. Вывод результата
115
- RUN mv classes.dex LiquidGlass.dex
116
 
117
- # Выводим base64 в логи, чтобы ты мог скопировать его, если нет прямого доступа к файлу
118
- CMD echo "--- COPY START ---" && base64 LiquidGlass.dex && echo "--- COPY END ---"
 
 
 
1
+ # Используем JDK 11
2
  FROM openjdk:11-jdk-slim
3
 
4
+ # Устанавливаем curl (base64 уже есть в системе)
5
+ RUN apt-get update && apt-get install -y curl
6
 
7
  WORKDIR /app
8
 
9
+ # 1. Скачиваем зависимости (android.jar, aliuhook и d8)
 
10
  RUN curl -L "https://raw.githubusercontent.com/anggrayudi/android-hidden-api/master/android-31/android.jar" -o android.jar
 
 
11
  RUN curl -L "https://maven.aliucord.com/snapshots/com/aliucord/Aliuhook/1.1.3/Aliuhook-1.1.3.jar" -o aliuhook.jar
 
 
12
  RUN curl -L "https://repo1.maven.org/maven2/com/android/tools/r8/3.3.28/r8-3.3.28.jar" -o d8.jar
13
 
14
+ # 2. Пишем код плагина прямо в Dockerfile
15
  RUN printf 'package b.liquidglass;\n\
16
  \n\
17
  import android.content.Context;\n\
 
24
  import de.robv.android.xposed.XposedBridge;\n\
25
  import java.lang.reflect.Field;\n\
26
  \n\
27
+ public class Main {\n\
28
  public void start() {\n\
29
  try {\n\
30
  Class<?> chatActivity = Class.forName("org.telegram.ui.ChatActivity");\n\
 
38
  Field f = fragment.getClass().getDeclaredField("floatingButton");\n\
39
  f.setAccessible(true);\n\
40
  View fab = (View) f.get(fragment);\n\
41
+ if (fab != null) applyAppleGlass(fab);\n\
42
  } catch (Exception ignored) {}\n\
43
+ }, 300);\n\
44
  }\n\
45
  });\n\
46
  } catch (Exception e) {\n\
47
+ XposedBridge.log("LiquidGlass Plugin Error: " + e.getMessage());\n\
48
  }\n\
49
  }\n\
50
  \n\
51
+ private void applyAppleGlass(View v) {\n\
52
  v.setBackground(new GlassDrawable());\n\
53
+ // Настоящий блюр для Android 12+ (API 31)\n\
54
  if (android.os.Build.VERSION.SDK_INT >= 31) {\n\
55
  try {\n\
56
+ v.setRenderEffect(RenderEffect.createBlurEffect(22f, 22f, Shader.TileMode.CLAMP));\n\
57
  } catch (Exception ignored) {}\n\
58
  }\n\
59
+ // Живая анимация Liquid\n\
60
  v.setOnTouchListener((view, ev) -> {\n\
61
  if (ev.getAction() == MotionEvent.ACTION_DOWN) {\n\
62
+ view.animate().scaleX(0.86f).scaleY(0.86f).alpha(0.7f).setDuration(150).start();\n\
63
  } else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {\n\
64
+ view.animate().scaleX(1f).scaleY(1f).alpha(1f).setDuration(450)\n\
65
+ .setInterpolator(new OvershootInterpolator(2.5f)).start();\n\
66
  }\n\
67
  return false;\n\
68
  });\n\
69
  }\n\
70
  \n\
71
  static class GlassDrawable extends Drawable {\n\
72
+ private final Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
73
+ private final Paint s = new Paint(Paint.ANTI_ALIAS_FLAG);\n\
 
 
74
  public GlassDrawable() {\n\
75
+ p.setColor(Color.argb(150, 255, 255, 255));\n\
76
+ s.setStyle(Paint.Style.STROKE);\n\
77
+ s.setStrokeWidth(2.5f);\n\
78
+ s.setColor(Color.argb(110, 255, 255, 255));\n\
79
  }\n\
 
80
  @Override\n\
81
  public void draw(Canvas c) {\n\
82
+ RectF rf = new RectF(getBounds());\n\
83
+ float r = Math.min(rf.width(), rf.height()) / 2f;\n\
84
+ c.drawRoundRect(rf, r, r, p);\n\
85
+ c.drawRoundRect(rf, r, r, s);\n\
 
 
86
  }\n\
 
87
  @Override public void setAlpha(int a) {}\n\
88
  @Override public void setColorFilter(ColorFilter cf) {}\n\
89
  @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; }\n\
90
  }\n\
91
+ }' > Main.java
92
 
93
+ # 3. Компилируем в Java Class
94
+ RUN javac -cp android.jar:aliuhook.jar -d . Main.java
95
 
96
+ # 4. Собираем в DEX файл
97
  RUN java -cp d8.jar com.android.tools.r8.D8 \
98
  --release \
99
  --lib android.jar \
100
  --classpath aliuhook.jar \
101
  --output . \
102
+ b/liquidglass/Main*.class
 
 
 
103
 
104
+ # 5. При запуске выдаем результат в логи
105
+ CMD echo "--- КРЫСА, КОПИРУЙ ОТСЮДА (Base64) ---" && \
106
+ base64 classes.dex && \
107
+ echo "--- КОНЕЦ ---"