chore: fix install-android

This commit is contained in:
devthejo 2025-05-01 17:18:17 +02:00
parent 882e6105f4
commit 91c374756b
3 changed files with 131 additions and 2 deletions

99
docs/android-install.md Normal file
View file

@ -0,0 +1,99 @@
# Android App Installation Guide
This guide explains how to install the Android app on an emulator or physical device.
## Prerequisites
- Android emulator or physical device connected via ADB
- Java installed (for bundletool)
- ADB installed and configured
## Installation
### Using the Yarn Script
The easiest way to install the app is to use the provided yarn script:
```bash
# Set the device ID (emulator or physical device)
export DEVICE=emulator-5554
# Run the installation script
yarn install:android
```
### Manual Installation
If you need to install the app manually, follow these steps:
1. Navigate to the bundle release directory:
```bash
cd android/app/build/outputs/bundle/release
```
2. Build APKs with signing:
```bash
java -jar /opt/bundletool-all-1.17.1.jar build-apks \
--mode universal \
--bundle ./app-release.aab \
--output ./app.apks \
--ks /home/jo/lab/alerte-secours/as-app/android/app/debug.keystore \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android
```
3. Convert .apks to .zip and extract:
```bash
mv app.apks app.zip
unzip -o app.zip
```
4. Install the APK on the device:
```bash
adb -s $DEVICE install universal.apk
```
## Troubleshooting
### Finding Available Devices
To list all available devices:
```bash
adb devices
```
Example output:
```
List of devices attached
emulator-5554 device
```
### Common Issues
1. **No devices found**: Make sure your emulator is running or your physical device is connected and has USB debugging enabled.
2. **Installation fails**: Check if the app is already installed. You might need to uninstall it first:
```bash
adb -s $DEVICE uninstall com.alertesecours
```
3. **Signing issues**: If you encounter signing problems, make sure the keystore path is correct and the keystore passwords match.
## Custom Installation Script
A custom installation script (`install-android.sh`) has been created to simplify the installation process. This script:
1. Checks if the DEVICE environment variable is set
2. Navigates to the bundle release directory
3. Builds APKs with signing
4. Converts .apks to .zip and extracts it
5. Installs the APK on the device
You can run this script directly:
```bash
export DEVICE=emulator-5554
./install-android.sh
```

30
install-android.sh Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
# Check if DEVICE environment variable is set
if [ -z "$DEVICE" ]; then
echo "Error: DEVICE environment variable is not set."
echo "Usage: DEVICE=emulator-5554 ./install-android.sh"
exit 1
fi
# Navigate to the bundle release directory
cd android/app/build/outputs/bundle/release
# Build APKs with signing
java -jar /opt/bundletool-all-1.17.1.jar build-apks \
--mode universal \
--bundle ./app-release.aab \
--output ./app.apks \
--ks $HOME/lab/alerte-secours/as-app/android/app/debug.keystore \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android
# Convert .apks to .zip and extract
mv app.apks app.zip
unzip -o app.zip
# Install the APK on the device
adb -s $DEVICE install universal.apk
echo "Installation complete!"

View file

@ -36,7 +36,7 @@
"e2e:start": "adb -s emulator-5554 shell am start -n com.alertesecours/.MainActivity", "e2e:start": "adb -s emulator-5554 shell am start -n com.alertesecours/.MainActivity",
"e2e:test": "detox test --configuration android.emu.debug", "e2e:test": "detox test --configuration android.emu.debug",
"e2e:run": "yarn start & yarn e2e:build && yarn e2e:deploy && yarn e2e:test", "e2e:run": "yarn start & yarn e2e:build && yarn e2e:deploy && yarn e2e:test",
"install:android": "cd android/app/build/outputs/bundle/release && java -jar /opt/bundletool-all-1.17.1.jar build-apks --mode universal --bundle ./app-release.aab --output ./app.apks && mv app.apks app.zip && unzip -o app.zip && adb -s $DEVICE install universal.apk", "install:android": "./install-android.sh",
"log:android": "adb -s $DEVICE logcat | grep -E 'ReactNativeJS: '", "log:android": "adb -s $DEVICE logcat | grep -E 'ReactNativeJS: '",
"log:ios:simulator": "xcrun simctl spawn booted log stream --level debug --predicate 'subsystem contains \"com.facebook.react.log\" and processImagePath contains \"AlerteSecours\"'", "log:ios:simulator": "xcrun simctl spawn booted log stream --level debug --predicate 'subsystem contains \"com.facebook.react.log\" and processImagePath contains \"AlerteSecours\"'",
"log:ios": "idevicesyslog | grep -i 'AlerteSecours\\|ReactNative'", "log:ios": "idevicesyslog | grep -i 'AlerteSecours\\|ReactNative'",