این اپ یک رابط گرافیکی ساده روی Gradle میسازد که:
- در صورت نیاز، JDK 17 و Android SDK Command-line Tools را خودش دانلود و نصب میکند
(داخل
%LOCALAPPDATA%\ApkBuilder، بدون دستکاری سیستم شما). - یک پروژهی سورس اندروید (پوشه یا فایل zip) را میگیرد.
- دستور Gradle (
assembleDebugیاassembleRelease) را اجرا میکند. - فایل APK نهایی را پیدا کرده و مسیرش را نشان میدهد.
- پایتون 3.9+ روی ویندوز نصب باشد (اگر میخواهید مستقیماً با
python main.pyاجرا کنید). - اتصال اینترنت (برای دانلود JDK/SDK در اولین اجرا — حجم تقریبی ۳۰۰-۵۰۰ مگابایت).
نکته: خود پروژه اندروید نیازی به Android Studio ندارد، چون Gradle Wrapper (
gradlew.bat) که همراه پروژه است، Gradle مناسب را خودش دانلود میکند.
cd apk_builder
python main.py
روی یک سیستم ویندوز:
pip install pyinstaller
pyinstaller --onefile --windowed --name ApkBuilder main.py
فایل نهایی در dist\ApkBuilder.exe قرار میگیرد. این فایل exe همراه با
sdk_manager.py و build_manager.py باید در یک پکیج ساخته شود — PyInstaller
این کار را خودش هنگام build انجام میدهد (چون این فایلها import میشوند).
- اپ را اجرا کنید.
- روی «بررسی و نصب پیشنیازها» بزنید و صبر کنید تا JDK و Android SDK دانلود/نصب شوند (فقط بار اول، چند دقیقه طول میکشد).
- پوشه یا فایل zip سورس اندروید را انتخاب کنید
(مثلاً همان پروژهای که دارید — باید فایل
gradlew.batدر آن باشد). - نوع بیلد (Debug/Release) را انتخاب کنید.
- روی «شروع ساخت APK» بزنید. گزارش زندهی Gradle در پایین نمایش داده میشود.
- در پایان، مسیر فایل APK نمایش داده میشود و میتوانید پوشهی آن را باز کنید.
چرا مهم است؟ بیلد Debug خودکار با یک "debug certificate" امضا میشود (برای همین نصبش مشکلی ندارد، فقط چون گواهی آزمایشی است هشدار میگیرد). اما بیلد Release بدون signing config واقعاً امضا نشده است و اندروید از نصبش جلوگیری میکند یا خطای «پکیج نامعتبر است» میدهد.
این اپ خودش این مشکل را حل میکند:
- بار اول → گزینهی «ساخت keystore جدید» را انتخاب کنید، مسیر ذخیره،
alias، و دو رمز (Keystore و Key) را وارد کنید. اپ خودش با
keytool(همراه JDK) یک keystore جدید میسازد. - اپ بعد از بیلد Gradle، بهصورت خودکار مراحل
zipalignوapksignerرا روی APK اجرا میکند و یک فایل نهایی امضاشده (*-signed.apk) تحویل میدهد. - دفعات بعد → گزینهی «استفاده از keystore موجود» را انتخاب کنید و همان فایل keystore و رمزهای قبلی را وارد کنید.
نکتهی مهم دیگر: امضای صحیح، پیام «این پکیج نامعتبر است» را برطرف میکند، اما هشدار جداگانهی «Play Protect» یا «منبع ناشناس» که موقع نصب APK از خارج از گوگلپلی دیده میشود، مربوط به منبع نصب است، نه امضا — آن هشدار تا وقتی برنامه در گوگلپلی منتشر نشود همچنان دیده خواهد شد (این طبیعی است و مشکل امنیتی به معنای واقعی نیست).
- "gradlew.bat در پروژه پیدا نشد": پروژهی انتخابشده یک پروژهی استاندارد Android Studio نیست، یا zip ساختار عجیبی دارد (پوشهی تودرتوی اضافه).
- خطای SDK license: اگر نصب پکیجها با خطای لایسنس متوقف شد، دوباره دکمهی «بررسی و نصب پیشنیازها» را بزنید — لایسنسها بهصورت خودکار پذیرفته میشوند.
- بیلد خیلی کند است: بار اول Gradle خودش (جدا از Android SDK) دانلود میشود؛ دفعات بعد سریعتر خواهد بود چون کش میشود.
- نسخه build-tools/platform ناسازگار: اگر پروژه به نسخهی دیگری از
Android SDK نیاز دارد (مثلاً
android-35)، مقدارREQUIRED_SDK_PACKAGESرا درsdk_manager.pyویرایش کنید.
apk_builder/
├── main.py # رابط گرافیکی (Tkinter)
├── sdk_manager.py # دانلود/نصب JDK و Android SDK
├── build_manager.py # استخراج پروژه و اجرای Gradle
├── signing_manager.py # ساخت keystore و امضای APK (zipalign + apksigner)
├── requirements.txt
└── README.md