forked from reigadegr/CorePatcher
-
Notifications
You must be signed in to change notification settings - Fork 0
executable file
·218 lines (189 loc) · 7.39 KB
/
patch.yml
File metadata and controls
executable file
·218 lines (189 loc) · 7.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
name: Modify Framework and Services
on:
workflow_dispatch:
inputs:
framework_jar_url:
description: 'URL to download framework.jar'
required: true
services_jar_url:
description: 'URL to download services.jar'
required: true
android_api_level:
description: 'Android API level'
required: true
default: '34'
custom_device_name:
description: 'Device name '
required: true
custom_version:
description: 'Version Code'
required: true
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
actions: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y default-jdk zipalign 7zip python3
- name: Download framework.jar
run: |
curl -L -o framework.jar "${{ github.event.inputs.framework_jar_url }}"
- name: Download services.jar
run: |
curl -L -o services.jar "${{ github.event.inputs.services_jar_url }}"
- name: Verify framework.jar
run: |
file framework.jar
hexdump -C framework.jar | head -n 10
- name: Verify services.jar
run: |
file services.jar
hexdump -C services.jar | head -n 10
- name: Clone smali repository
run: git clone --depth=1 https://github.com/JesusFreke/smali.git
- name: Build smali and baksmali
run: |
cd smali
./gradlew build
- name: Extract framework.jar
run: 7z x framework.jar -oframework
- name: Extract services.jar
run: 7z x services.jar -oservices
- name: Decompile framework dex files
run: |
if [ -f framework.jar ]; then
if [ -f framework/classes.dex ]; then
java -jar smali/baksmali/build/libs/baksmali.jar d -a ${{ github.event.inputs.android_api_level }} framework/classes.dex -o classes
else
echo "framework/classes.dex not found, skipping..."
fi
for i in {2..6}; do
if [ -f framework/classes${i}.dex ]; then
java -jar smali/baksmali/build/libs/baksmali.jar d -a ${{ github.event.inputs.android_api_level }} framework/classes${i}.dex -o classes${i}
else
echo "framework/classes${i}.dex not found, skipping..."
fi
done
fi
- name: Decompile services dex files
run: |
java -jar smali/baksmali/build/libs/baksmali.jar d -a ${{ github.event.inputs.android_api_level }} services/classes.dex -o services_classes
java -jar smali/baksmali/build/libs/baksmali.jar d -a ${{ github.event.inputs.android_api_level }} services/classes2.dex -o services_classes2
java -jar smali/baksmali/build/libs/baksmali.jar d -a ${{ github.event.inputs.android_api_level }} services/classes3.dex -o services_classes3
- name: List decompiled files for debugging
run: |
if [ -f framework.jar ]; then
echo "Contents of classes directory:"
find classes
echo "Contents of classes2 directory:"
find classes2
echo "Contents of classes3 directory:"
find classes3
fi
find services_classes
echo "Contents of services_classes2 directory:"
find services_classes2
echo "Contents of services_classes3 directory:"
find services_classes3
- name: Backup smali files
run: |
if [ -f framework.jar ]; then
cp -r classes classes_backup
cp -r classes2 classes2_backup
cp -r classes3 classes3_backup
fi
cp -r services_classes services_classes_backup
cp -r services_classes2 services_classes2_backup
cp -r services_classes3 services_classes3_backup
- name: Modify framework smali files
run: |
if [ -f framework.jar ]; then
python3 framework_patch.py
fi
- name: Modify services smali files
run: |
python3 services_patch.py
- name: Recompile framework dex files
run: |
if [ -f framework.jar ]; then
if [ -d classes ]; then
java -jar smali/smali/build/libs/smali.jar a -a ${{ github.event.inputs.android_api_level }} classes -o framework/classes.dex
else
echo "classes directory not found, skipping classes.dex..."
fi
for i in {2..6}; do
if [ -d classes${i} ]; then
java -jar smali/smali/build/libs/smali.jar a -a ${{ github.event.inputs.android_api_level }} classes${i} -o framework/classes${i}.dex
else
echo "classes${i} directory not found, skipping classes${i}.dex..."
fi
done
fi
- name: Recompile services dex files
run: |
java -jar smali/smali/build/libs/smali.jar a -a ${{ github.event.inputs.android_api_level }} services_classes -o services/classes.dex
java -jar smali/smali/build/libs/smali.jar a -a ${{ github.event.inputs.android_api_level }} services_classes2 -o services/classes2.dex
java -jar smali/smali/build/libs/smali.jar a -a ${{ github.event.inputs.android_api_level }} services_classes3 -o services/classes3.dex
- name: Recompile framework.jar
run: |
if [ -f framework.jar ]; then
cd framework
7z a -tzip ../framework_new.zip *
cd ..
fi
- name: Recompile services.jar
run: |
cd services
7z a -tzip ../services_new.zip *
cd ..
- name: Align the zips
run: |
if [ -f framework.jar ]; then
zipalign -f -p -v -z 4 framework_new.zip aligned_framework.jar
fi
zipalign -f -p -v -z 4 services_new.zip aligned_services.jar
- name: Copy aligned jars to Magisk module
run: |
mkdir -p magisk_module/system/framework
[ -f framework.jar ] && cp aligned_framework.jar magisk_module/system/framework/framework.jar
cp aligned_services.jar magisk_module/system/framework/services.jar
- name: Create Version
run: |
echo "version=${{ github.event.inputs.custom_version }}" >> $GITHUB_ENV
echo "device_name=${{ github.event.inputs.custom_device_name }}" >> $GITHUB_ENV
- name: Zip Magisk module
run: |
cd magisk_module
zip -r ../moded_framework_services_${{ env.device_name }}_${{ env.version }}.zip *
cd ..
mkdir -p out
chmod +w moded_framework_services_${{ env.device_name }}_${{ env.version }}.zip
mv moded_framework_services_${{ env.device_name }}_${{ env.version }}.zip out/
- name: Create Release Notes
run: |
echo "## Release Notes" > release_notes.txt
echo "- Built modified jars from commit ${{ github.sha }}" >> release_notes.txt
echo "- Version: ${{ env.version }}" >> release_notes.txt
echo "- Device: ${{ env.device_name }}" >> release_notes.txt
- name: Create Release
uses: ncipollo/release-action@v1
with:
artifacts: out/*
tag: ${{ env.version }}
name: moded_${{ env.device_name }}_${{ env.version }}
allowUpdates: true
makeLatest: true
bodyFile: release_notes.txt
token: ${{ secrets.GITHUB_TOKEN }}