fix: use random temp directory names for device installation paths
This commit is contained in:
@@ -36,9 +36,12 @@ Complete workflow for building, cleaning, packaging, and installing HarmonyOS ap
|
||||
hvigorw assembleApp --mode project -p product=default -p buildMode=release --no-daemon
|
||||
|
||||
# Install to device (check actual output path in your project)
|
||||
hdc -t <UDID> shell "rm -rf /data/local/tmp/install && mkdir -p /data/local/tmp/install"
|
||||
hdc -t <UDID> file send <output_path>/signed /data/local/tmp/install
|
||||
hdc -t <UDID> shell "bm install -p /data/local/tmp/install/signed"
|
||||
# Use a random directory name to avoid conflicts with previous installations
|
||||
INSTALL_DIR="/data/local/tmp/install_$(date +%s)"
|
||||
hdc -t <UDID> shell "mkdir -p $INSTALL_DIR"
|
||||
hdc -t <UDID> file send <output_path>/signed $INSTALL_DIR
|
||||
hdc -t <UDID> shell "bm install -p $INSTALL_DIR/signed"
|
||||
hdc -t <UDID> shell "rm -rf $INSTALL_DIR"
|
||||
```
|
||||
|
||||
**Note:** Build output path varies by project. Common paths:
|
||||
@@ -61,9 +64,11 @@ Delegate to subagent with the following steps:
|
||||
4. Find build output (check `outputs/default/signed/` or `outputs/project/bundles/signed/`)
|
||||
5. Deploy to device:
|
||||
```bash
|
||||
hdc -t <UDID> shell "rm -rf /data/local/tmp/install && mkdir -p /data/local/tmp/install"
|
||||
hdc -t <UDID> file send <output_path>/signed /data/local/tmp/install
|
||||
hdc -t <UDID> shell "bm install -p /data/local/tmp/install/signed"
|
||||
INSTALL_DIR="/data/local/tmp/install_$(date +%s)"
|
||||
hdc -t <UDID> shell "mkdir -p $INSTALL_DIR"
|
||||
hdc -t <UDID> file send <output_path>/signed $INSTALL_DIR
|
||||
hdc -t <UDID> shell "bm install -p $INSTALL_DIR/signed"
|
||||
hdc -t <UDID> shell "rm -rf $INSTALL_DIR"
|
||||
```
|
||||
6. Launch: `hdc -t <UDID> shell "aa start -a EntryAbility -b <bundleName>"`
|
||||
7. Report success/failure with details
|
||||
@@ -75,9 +80,11 @@ Delegate to subagent with the following steps:
|
||||
1. Read `AppScope/app.json5` to get bundleName
|
||||
2. Push existing build output to device:
|
||||
```bash
|
||||
hdc -t <UDID> shell "rm -rf /data/local/tmp/install && mkdir -p /data/local/tmp/install"
|
||||
hdc -t <UDID> file send <output_path>/signed /data/local/tmp/install
|
||||
hdc -t <UDID> shell "bm install -p /data/local/tmp/install/signed"
|
||||
INSTALL_DIR="/data/local/tmp/install_$(date +%s)"
|
||||
hdc -t <UDID> shell "mkdir -p $INSTALL_DIR"
|
||||
hdc -t <UDID> file send <output_path>/signed $INSTALL_DIR
|
||||
hdc -t <UDID> shell "bm install -p $INSTALL_DIR/signed"
|
||||
hdc -t <UDID> shell "rm -rf $INSTALL_DIR"
|
||||
```
|
||||
3. Launch: `hdc -t <UDID> shell "aa start -a EntryAbility -b <bundleName>"`
|
||||
4. Report success/failure with details
|
||||
@@ -249,14 +256,18 @@ hdc -t <UDID> shell "whoami" # Test connection
|
||||
### Push and Install
|
||||
|
||||
```bash
|
||||
# Clear device directory
|
||||
hdc -t <UDID> shell "rm -rf /data/local/tmp/install && mkdir -p /data/local/tmp/install"
|
||||
# Create random temp directory on device
|
||||
INSTALL_DIR="/data/local/tmp/install_$(date +%s)"
|
||||
hdc -t <UDID> shell "mkdir -p $INSTALL_DIR"
|
||||
|
||||
# Push signed bundles
|
||||
hdc -t <UDID> file send path/to/signed /data/local/tmp/install
|
||||
hdc -t <UDID> file send path/to/signed $INSTALL_DIR
|
||||
|
||||
# Install all HAP/HSP in directory
|
||||
hdc -t <UDID> shell "bm install -p /data/local/tmp/install/signed"
|
||||
hdc -t <UDID> shell "bm install -p $INSTALL_DIR/signed"
|
||||
|
||||
# Clean up temp directory
|
||||
hdc -t <UDID> shell "rm -rf $INSTALL_DIR"
|
||||
```
|
||||
|
||||
### Verify and Launch
|
||||
|
||||
@@ -61,20 +61,24 @@ If no device found:
|
||||
### Step 2: Push Files to Device
|
||||
|
||||
```bash
|
||||
# Clear and create installation directory on device
|
||||
hdc -t <UDID> shell "rm -rf /data/local/tmp/app_install && mkdir -p /data/local/tmp/app_install"
|
||||
# Create random temp directory on device
|
||||
INSTALL_DIR="/data/local/tmp/install_$(date +%s)"
|
||||
hdc -t <UDID> shell "mkdir -p $INSTALL_DIR"
|
||||
|
||||
# Push signed HAP/HSP files
|
||||
hdc -t <UDID> file send outputs/default/signed /data/local/tmp/app_install
|
||||
hdc -t <UDID> file send outputs/default/signed $INSTALL_DIR
|
||||
```
|
||||
|
||||
### Step 3: Install Application
|
||||
|
||||
```bash
|
||||
# Install all HAP/HSP from directory
|
||||
hdc -t <UDID> shell "bm install -p /data/local/tmp/app_install/signed"
|
||||
hdc -t <UDID> shell "bm install -p $INSTALL_DIR/signed"
|
||||
|
||||
# Expected output: "install bundle successfully."
|
||||
|
||||
# Clean up temp directory
|
||||
hdc -t <UDID> shell "rm -rf $INSTALL_DIR"
|
||||
```
|
||||
|
||||
### Step 4: Verify and Launch
|
||||
@@ -98,7 +102,7 @@ Save as `install.sh` (Linux/macOS) or run with Git Bash on Windows:
|
||||
DEVICE_ID="${1:-$(hdc list targets | head -1)}"
|
||||
SIGNED_PATH="${2:-outputs/default/signed}"
|
||||
BUNDLE_NAME="${3:-}"
|
||||
REMOTE_PATH="/data/local/tmp/app_install"
|
||||
REMOTE_PATH="/data/local/tmp/install_$(date +%s)"
|
||||
|
||||
if [ -z "$DEVICE_ID" ]; then
|
||||
echo "Error: No device found. Connect a device or specify UDID as first argument."
|
||||
@@ -107,9 +111,10 @@ fi
|
||||
|
||||
echo "Device: $DEVICE_ID"
|
||||
echo "Source: $SIGNED_PATH"
|
||||
echo "Remote: $REMOTE_PATH"
|
||||
|
||||
# === Clear remote directory ===
|
||||
hdc -t "$DEVICE_ID" shell "rm -rf $REMOTE_PATH && mkdir -p $REMOTE_PATH"
|
||||
# === Create remote directory ===
|
||||
hdc -t "$DEVICE_ID" shell "mkdir -p $REMOTE_PATH"
|
||||
|
||||
# === Push signed files ===
|
||||
hdc -t "$DEVICE_ID" file send "$SIGNED_PATH" "$REMOTE_PATH"
|
||||
@@ -118,6 +123,9 @@ hdc -t "$DEVICE_ID" file send "$SIGNED_PATH" "$REMOTE_PATH"
|
||||
BASENAME="$(basename "$SIGNED_PATH")"
|
||||
hdc -t "$DEVICE_ID" shell "bm install -p $REMOTE_PATH/$BASENAME"
|
||||
|
||||
# === Clean up ===
|
||||
hdc -t "$DEVICE_ID" shell "rm -rf $REMOTE_PATH"
|
||||
|
||||
echo ""
|
||||
echo "Installation complete!"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user