chore: add TWA (Android) wrapper project
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# دلدل — TWA (Trusted Web Activity)
|
||||
|
||||
این پوشه یک پروژهی کامل اندرویدی (Gradle) است که وباپ `dating-app-web` رو به شکل TWA
|
||||
بستهبندی میکنه — یعنی روی گوشی مثل یک اپ واقعی نصب میشه (بدون نوار آدرس مرورگر)، ولی
|
||||
در واقع همون وبسایت شما رو نمایش میده.
|
||||
|
||||
## وضعیت فعلی
|
||||
|
||||
- `twa-manifest.json` و کل پروژهی اندروید (`app/`, `build.gradle`, `gradlew`, ...) ساخته شده.
|
||||
- کلید امضا (`android.keystore`) ساخته شده — الگوریتم/شکل درست، ولی **رمز عبورش placeholder
|
||||
و ناامنه** (پایین توضیح داده شده).
|
||||
- `packageId` فعلاً `ir.deldel.app` و دامنه (`host`) فعلاً placeholder یعنی
|
||||
`app.deldel.ir` — چون هنوز وباپ روی دامنهی واقعی دیپلوی نشده.
|
||||
- وابستگی `com.google.androidbrowserhelper` (که در نسخهی فعلی Bubblewrap استفاده میشه)
|
||||
دیگه منتشر نمیشه؛ جایگزینش کردم با `com.meta.androidbrowserhelper:androidbrowserhelper:2.5.0`
|
||||
(متا نگهداری این کتابخونه رو از گوگل تحویل گرفته) و `jcenter()` غیرفعالشدهی قدیمی رو با
|
||||
`mavenCentral()` عوض کردم.
|
||||
|
||||
## ⚠️ محدودیت این سندباکس (نه پروژه)
|
||||
|
||||
نتونستم `./gradlew assembleRelease` رو همینجا کامل اجرا کنم چون این محیط sandbox به
|
||||
`dl.google.com` (مخزن Maven گوگل که کتابخونههای androidx ازش دانلود میشن) دسترسی نداره —
|
||||
دقیقاً همون محدودیتی که قبلاً موقع build داکر ایمیجها (`docker pull`) هم دیدیم. این یک
|
||||
محدودیت شبکهی همین سندباکسه، نه مشکل پروژه؛ روی سیستم خودت یا هر CI عادی (GitHub Actions و
|
||||
غیره) که دسترسی اینترنت کامل داره، این build بدون مشکل انجام میشه.
|
||||
|
||||
## قدمهای باقیمونده (روی سیستم خودت)
|
||||
|
||||
### ۱. دامنهی واقعی رو جایگزین کن
|
||||
وقتی وباپ رو دیپلوی کردی (مثلاً `app.deldel.ir` یا هر دامنهای):
|
||||
|
||||
```bash
|
||||
sed -i "s/app.deldel.ir/DOMAIN_واقعی/g" app/build.gradle twa-manifest.json
|
||||
```
|
||||
|
||||
### ۲. اجرای build
|
||||
```bash
|
||||
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # یا مسیر JDK 17 خودت
|
||||
export ANDROID_HOME=~/Android/Sdk # یا مسیر Android SDK خودت
|
||||
./gradlew bundleRelease # فایل AAB برای آپلود به Google Play (توصیهشده)
|
||||
./gradlew assembleRelease # فایل APK مستقیم (برای تست/نصب دستی)
|
||||
```
|
||||
خروجیها:
|
||||
- APK: `app/build/outputs/apk/release/app-release.apk`
|
||||
- AAB: `app/build/outputs/bundle/release/app-release.aab`
|
||||
|
||||
### ۳. Digital Asset Links (حتماً لازمه)
|
||||
برای اینکه اندروید به اپ اعتماد کنه و نوار آدرس مرورگر رو مخفی کنه، باید فایل
|
||||
`assetlinks.json` رو روی خودِ دامنه در مسیر `/.well-known/assetlinks.json` قرار بدی.
|
||||
این فایل شامل SHA-256 فینگرپرینت کلید امضاست. برای گرفتنش:
|
||||
|
||||
```bash
|
||||
keytool -list -v -keystore android.keystore -alias android -storepass deldel1234
|
||||
```
|
||||
|
||||
خروجی JSON مورد نیاز رو Bubblewrap خودش میتونه بسازه:
|
||||
```bash
|
||||
npx @bubblewrap/cli fingerprint add # یا دستی طبق مستندات:
|
||||
# https://developers.google.com/digital-asset-links
|
||||
```
|
||||
|
||||
### ۴. امنیت کلید امضا (خیلی مهم)
|
||||
فایل `android.keystore` با رمز placeholder `deldel1234` ساخته شده — **این فقط برای تست
|
||||
محلیه**. قبل از هر انتشار واقعی روی Google Play:
|
||||
- این فایل رو **هرگز به گیت commit نکن** (توی `.gitignore` بذارش).
|
||||
- یا با رمز قویتر از نو بسازش (`keytool -genkeypair ...`)، یا حداقل جاش رو امن نگه دار.
|
||||
- گوگلپلی از نسخههای بعدی همین کلید برای آپدیت اپ استفاده میکنه؛ اگه گمش کنی، دیگه
|
||||
نمیتونی همون اپ رو آپدیت کنی. توصیه میشه از **Play App Signing** گوگل هم استفاده کنی
|
||||
(موقع اولین آپلود AAB بهت پیشنهاد میده).
|
||||
|
||||
### ۵. آپلود به Google Play Console
|
||||
فایل `.aab` تولیدشده رو در بخش Production/Internal testing کنسول Google Play آپلود کن.
|
||||
حتماً `packageId` (`ir.deldel.app`) رو اگه دوست نداری قبل از هر آپلودی عوض کن — بعد از اولین
|
||||
انتشار دیگه قابل تغییر نیست.
|
||||
|
||||
## فایلهای کلیدی
|
||||
| فایل | توضیح |
|
||||
|---|---|
|
||||
| `twa-manifest.json` | تنظیمات اصلی TWA (دامنه، رنگها، آیکون، signingKey) |
|
||||
| `app/build.gradle` | تنظیمات build اندروید + وابستگیها |
|
||||
| `app/src/main/AndroidManifest.xml` | مجوزها، اکتیویتیها، asset statement |
|
||||
| `android.keystore` | کلید امضای اپ (placeholder — بالا توضیح داده شد) |
|
||||
| `generate.js` | اسکریپتی که این پروژه رو (بهجای ویزارد تعاملی bubblewrap) ساخت |
|
||||
Reference in New Issue
Block a user