1+ name : Build and Release
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*'
7+ workflow_dispatch :
8+
9+ jobs :
10+ build :
11+ runs-on : ${{ matrix.os }}
12+ strategy :
13+ matrix :
14+ include :
15+ - os : windows-latest
16+ artifact_name : android-bloatware-remover.exe
17+ asset_name : android-bloatware-remover-windows.exe
18+ - os : ubuntu-latest
19+ artifact_name : android-bloatware-remover
20+ asset_name : android-bloatware-remover-linux
21+ - os : macos-latest
22+ artifact_name : android-bloatware-remover
23+ asset_name : android-bloatware-remover-macos
24+
25+ steps :
26+ - uses : actions/checkout@v4
27+
28+ - name : Set up Python
29+ uses : actions/setup-python@v4
30+ with :
31+ python-version : ' 3.11'
32+
33+ - name : Install dependencies
34+ run : |
35+ python -m pip install --upgrade pip
36+ pip install pyinstaller
37+
38+ - name : Create PyInstaller spec file
39+ run : |
40+ cat > android-bloatware-remover.spec << 'EOF'
41+ # -*- mode: python ; coding: utf-8 -*-
42+
43+ block_cipher = None
44+
45+ # Collect all brand directories and their contents
46+ brand_dirs = ['Samsung', 'Xiaomi', 'Oppo', 'Vivo', 'Realme', 'Tecno', 'OnePlus', 'Huawei', 'Honor', 'Motorola', 'Nothing']
47+ datas = []
48+
49+ # Add brand directories
50+ for brand in brand_dirs:
51+ datas.append((f'{brand}/*.md', f'{brand}/'))
52+ datas.append((f'{brand}/*.py', f'{brand}/'))
53+
54+ # Add core module
55+ datas.append(('core/*.py', 'core/'))
56+
57+ # Add other files
58+ datas.append(('README.md', '.'))
59+ datas.append(('LICENSE', '.'))
60+
61+ a = Analysis(
62+ ['main.py'],
63+ pathex=[],
64+ binaries=[],
65+ datas=datas,
66+ hiddenimports=[
67+ 'Samsung.samsung_remover',
68+ 'Xiaomi.xiaomi_remover',
69+ 'Oppo.oppo_remover',
70+ 'Vivo.vivo_remover',
71+ 'Realme.realme_remover',
72+ 'Tecno.tecno_remover',
73+ 'OnePlus.oneplus_remover',
74+ 'Huawei.huawei_remover',
75+ 'Honor.honor_remover',
76+ 'Motorola.motorola_remover',
77+ 'Nothing.nothing_remover',
78+ 'core.bloatware_remover'
79+ ],
80+ hookspath=[],
81+ hooksconfig={},
82+ runtime_hooks=[],
83+ excludes=[],
84+ win_no_prefer_redirects=False,
85+ win_private_assemblies=False,
86+ cipher=block_cipher,
87+ noarchive=False,
88+ )
89+
90+ pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
91+
92+ exe = EXE(
93+ pyz,
94+ a.scripts,
95+ a.binaries,
96+ a.zipfiles,
97+ a.datas,
98+ [],
99+ name='android-bloatware-remover',
100+ debug=False,
101+ bootloader_ignore_signals=False,
102+ strip=False,
103+ upx=True,
104+ upx_exclude=[],
105+ runtime_tmpdir=None,
106+ console=True,
107+ disable_windowed_traceback=False,
108+ argv_emulation=False,
109+ target_arch=None,
110+ codesign_identity=None,
111+ entitlements_file=None,
112+ )
113+ EOF
114+
115+ - name : Build with PyInstaller
116+ run : |
117+ pyinstaller android-bloatware-remover.spec --clean
118+
119+ - name : Test executable (Windows)
120+ if : matrix.os == 'windows-latest'
121+ run : |
122+ dist/android-bloatware-remover.exe --test
123+ timeout-minutes : 2
124+
125+ - name : Test executable (Unix)
126+ if : matrix.os != 'windows-latest'
127+ run : |
128+ chmod +x dist/android-bloatware-remover
129+ timeout 30s dist/android-bloatware-remover --test || true
130+
131+ - name : Upload artifact
132+ uses : actions/upload-artifact@v3
133+ with :
134+ name : ${{ matrix.asset_name }}
135+ path : dist/${{ matrix.artifact_name }}
136+
137+ release :
138+ needs : build
139+ runs-on : ubuntu-latest
140+ if : startsWith(github.ref, 'refs/tags/')
141+
142+ steps :
143+ - uses : actions/checkout@v4
144+
145+ - name : Download all artifacts
146+ uses : actions/download-artifact@v3
147+
148+ - name : Create Release
149+ id : create_release
150+ uses : actions/create-release@v1
151+ env :
152+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
153+ with :
154+ tag_name : ${{ github.ref }}
155+ release_name : Release ${{ github.ref }}
156+ body : |
157+ ## Android Bloatware Remover ${{ github.ref }}
158+
159+ Standalone executables for Windows, Linux, and macOS.
160+
161+ ### Download Instructions:
162+ - **Windows**: Download `android-bloatware-remover-windows.exe`
163+ - **Linux**: Download `android-bloatware-remover-linux`
164+ - **macOS**: Download `android-bloatware-remover-macos`
165+
166+ ### Usage:
167+ 1. Download the appropriate executable for your operating system
168+ 2. Make sure ADB is installed and in your PATH
169+ 3. Enable USB debugging on your Android device
170+ 4. Connect your device and run the executable
171+
172+ ### Supported Devices:
173+ - Samsung (One UI)
174+ - Xiaomi/Redmi/POCO (MIUI)
175+ - Oppo (ColorOS)
176+ - Vivo/iQOO (FunTouch OS)
177+ - Realme (Realme UI)
178+ - Tecno (HiOS)
179+ - OnePlus (OxygenOS)
180+ - Huawei (EMUI/HarmonyOS)
181+ - Honor (Magic UI)
182+ - Motorola (My UX)
183+ - Nothing (Nothing OS)
184+
185+ ### Test Mode:
186+ Run with `--test` flag to try without a connected device.
187+ draft : false
188+ prerelease : false
189+
190+ - name : Upload Windows Release Asset
191+ uses : actions/upload-release-asset@v1
192+ env :
193+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
194+ with :
195+ upload_url : ${{ steps.create_release.outputs.upload_url }}
196+ asset_path : ./android-bloatware-remover-windows.exe/android-bloatware-remover.exe
197+ asset_name : android-bloatware-remover-windows.exe
198+ asset_content_type : application/octet-stream
199+
200+ - name : Upload Linux Release Asset
201+ uses : actions/upload-release-asset@v1
202+ env :
203+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
204+ with :
205+ upload_url : ${{ steps.create_release.outputs.upload_url }}
206+ asset_path : ./android-bloatware-remover-linux/android-bloatware-remover
207+ asset_name : android-bloatware-remover-linux
208+ asset_content_type : application/octet-stream
209+
210+ - name : Upload macOS Release Asset
211+ uses : actions/upload-release-asset@v1
212+ env :
213+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
214+ with :
215+ upload_url : ${{ steps.create_release.outputs.upload_url }}
216+ asset_path : ./android-bloatware-remover-macos/android-bloatware-remover
217+ asset_name : android-bloatware-remover-macos
218+ asset_content_type : application/octet-stream
0 commit comments