- number-поля теперь рендерятся как text + inputMode=numeric, чтобы браузер не округлял значения через input type=number - пробелы при вставке в number-поля удаляются - бэкенд нормализует значения number-полей в строку перед сохранением - добавлен хелпер normalizeFieldValueForStorage Closes: искажение расчётного счёта и других длинных числовых полей
80 lines
2.7 KiB
Plaintext
80 lines
2.7 KiB
Plaintext
Вот готовая инструкция для агента — проверенный путь от Expo проекта до APK:
|
||
|
||
Пошаговая инструкция: Сборка APK из Expo проекта
|
||
Шаг 1: Настройка app.json
|
||
Добавить в app.json обязательные поля для Android:
|
||
|
||
{
|
||
"expo": {
|
||
"name": "Название приложения",
|
||
"slug": "имя-проекта-на-expo",
|
||
"android": {
|
||
"package": "com.yourcompany.appname"
|
||
},
|
||
"extra": {
|
||
"eas": {
|
||
"projectId": "ID-проекта-с-expo.dev"
|
||
}
|
||
},
|
||
"owner": "имя-аккаунта-или-организации"
|
||
}
|
||
}
|
||
Шаг 2: Создать eas.json
|
||
{
|
||
"cli": {
|
||
"version": ">= 3.0.0",
|
||
"appVersionSource": "local"
|
||
},
|
||
"build": {
|
||
"preview": {
|
||
"android": {
|
||
"buildType": "apk",
|
||
"credentialsSource": "local"
|
||
},
|
||
"distribution": "internal"
|
||
}
|
||
}
|
||
}
|
||
Шаг 3: Установить JDK и создать keystore
|
||
# Установить JDK через packager_tool: jdk17
|
||
# Создать keystore
|
||
mkdir -p credentials
|
||
keytool -genkeypair -v -storetype PKCS12 \
|
||
-keystore credentials/keystore.p12 \
|
||
-storepass android -alias keystore -keypass android \
|
||
-keyalg RSA -keysize 2048 -validity 10000 \
|
||
-dname "CN=App Name, OU=Dev, O=Company, L=City, ST=State, C=US"
|
||
Шаг 4: Создать credentials.json
|
||
{
|
||
"android": {
|
||
"keystore": {
|
||
"keystorePath": "credentials/keystore.p12",
|
||
"keystorePassword": "android",
|
||
"keyAlias": "keystore",
|
||
"keyPassword": "android"
|
||
}
|
||
}
|
||
}
|
||
Шаг 5: Установить expect
|
||
# Через packager_tool установить: expect
|
||
Шаг 6: Создать скрипт scripts/eas-build.exp
|
||
#!/usr/bin/expect -f
|
||
set timeout 300
|
||
spawn npx eas-cli@latest build --platform android --profile preview --no-wait
|
||
expect {
|
||
"Generate a new Android Keystore?" { send "y\r"; exp_continue }
|
||
"Would you like to set up" { send "y\r"; exp_continue }
|
||
eof { puts "\nProcess ended" }
|
||
}
|
||
wait
|
||
Шаг 7: Запустить сборку
|
||
chmod +x scripts/eas-build.exp
|
||
EAS_NO_VCS=1 expect scripts/eas-build.exp
|
||
Важно: Переменная EAS_NO_VCS=1 обязательна в Replit, иначе сборка упадёт с ошибкой .git/index.lock.
|
||
|
||
Шаг 8: Скачать APK
|
||
После завершения сборки (10-20 минут) APK доступен на expo.dev в разделе Builds проекта.
|
||
|
||
Требуемые секреты: EXPO_TOKEN — создать на https://expo.dev/settings/access-tokens
|
||
|
||
Скопируй эту инструкцию агенту в TaskTitan и он сразу пойдёт правильным путём! |