Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

ApkBuilder — تبدیل سورس اندروید به APK (اپ ویندوز)

این اپ یک رابط گرافیکی ساده روی Gradle می‌سازد که:

  1. در صورت نیاز، JDK 17 و Android SDK Command-line Tools را خودش دانلود و نصب می‌کند (داخل %LOCALAPPDATA%\ApkBuilder، بدون دستکاری سیستم شما).
  2. یک پروژه‌ی سورس اندروید (پوشه یا فایل zip) را می‌گیرد.
  3. دستور Gradle (assembleDebug یا assembleRelease) را اجرا می‌کند.
  4. فایل APK نهایی را پیدا کرده و مسیرش را نشان می‌دهد.

پیش‌نیاز اجرا (فقط برای خود اپ)

  • پایتون 3.9+ روی ویندوز نصب باشد (اگر می‌خواهید مستقیماً با python main.py اجرا کنید).
  • اتصال اینترنت (برای دانلود JDK/SDK در اولین اجرا — حجم تقریبی ۳۰۰-۵۰۰ مگابایت).

نکته: خود پروژه اندروید نیازی به Android Studio ندارد، چون Gradle Wrapper (gradlew.bat) که همراه پروژه است، Gradle مناسب را خودش دانلود می‌کند.

اجرای مستقیم (بدون exe)

cd apk_builder
python main.py

تبدیل به فایل exe مستقل (اختیاری)

روی یک سیستم ویندوز:

pip install pyinstaller
pyinstaller --onefile --windowed --name ApkBuilder main.py

فایل نهایی در dist\ApkBuilder.exe قرار می‌گیرد. این فایل exe همراه با sdk_manager.py و build_manager.py باید در یک پکیج ساخته شود — PyInstaller این کار را خودش هنگام build انجام می‌دهد (چون این فایل‌ها import می‌شوند).

نحوه استفاده

  1. اپ را اجرا کنید.
  2. روی «بررسی و نصب پیش‌نیازها» بزنید و صبر کنید تا JDK و Android SDK دانلود/نصب شوند (فقط بار اول، چند دقیقه طول می‌کشد).
  3. پوشه یا فایل zip سورس اندروید را انتخاب کنید (مثلاً همان پروژه‌ای که دارید — باید فایل gradlew.bat در آن باشد).
  4. نوع بیلد (Debug/Release) را انتخاب کنید.
  5. روی «شروع ساخت APK» بزنید. گزارش زنده‌ی Gradle در پایین نمایش داده می‌شود.
  6. در پایان، مسیر فایل APK نمایش داده می‌شود و می‌توانید پوشه‌ی آن را باز کنید.

امضای APK (بخش ۴ در برنامه)

چرا مهم است؟ بیلد Debug خودکار با یک "debug certificate" امضا می‌شود (برای همین نصبش مشکلی ندارد، فقط چون گواهی آزمایشی است هشدار می‌گیرد). اما بیلد Release بدون signing config واقعاً امضا نشده است و اندروید از نصبش جلوگیری می‌کند یا خطای «پکیج نامعتبر است» می‌دهد.

این اپ خودش این مشکل را حل می‌کند:

  1. بار اول → گزینه‌ی «ساخت keystore جدید» را انتخاب کنید، مسیر ذخیره، alias، و دو رمز (Keystore و Key) را وارد کنید. اپ خودش با keytool (همراه JDK) یک keystore جدید می‌سازد.
  2. اپ بعد از بیلد Gradle، به‌صورت خودکار مراحل zipalign و apksigner را روی APK اجرا می‌کند و یک فایل نهایی امضاشده (*-signed.apk) تحویل می‌دهد.
  3. دفعات بعد → گزینه‌ی «استفاده از keystore موجود» را انتخاب کنید و همان فایل 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors