Android文件推送重启脚本
脚本功能介绍
这个脚本是用来推送一些文件到Android设备上,并重启设备的。它接受一个参数,就是要推送的文件的编号。它会显示所有可选的文件和对应的功能简介,并让用户选择一个文件。然后,它会列出所有连接的设备,并让用户选择一个设备。接着,它会将选中的文件推送到设备上,并同步数据。最后,它会询问用户是否同意重启设备。
# 注意 !!! 这是power shell脚本 # 设置源码路径 $SOURCE = "V:\rockchip\rk3568_android11\out\target\product\rk3568_r\system\framework\" # 设置文件和目标路径字典 $FILES_DESTS = @{ "framework.jar" = "\system\framework\" "framework-res.apk" = "\system\framework\" "libandroid_servers.so" = "\system\lib\" "selinux_policy" = "\" } # 设置文件功能简介字典 $DESCRIPTION = @{ "framework.jar" = "一个压缩文件,包含了Android系统框架层的Java类。" "framework-res.apk" = "一个压缩文件,包含了Android系统框架层的资源文件。" "libandroid_servers.so" = "一个动态链接库文件,包含了Android系统框架层服务层的native代码。" "selinux_policy" = "一个文件,包含了Android系统的安全增强型Linux(SELinux)策略。" } # 文件名称数组 $FILES = @("framework.jar", "framework-res.apk", "libandroid_servers.so", "selinux_policy") # 获取设备的root权限和可写权限 Start-Process -NoNewWindow -FilePath adb -ArgumentList "root" Start-Process -NoNewWindow -FilePath adb -ArgumentList "connect 192.168.1.64" Start-Process -NoNewWindow -FilePath adb -ArgumentList "remount" Start-Process -NoNewWindow -FilePath adb -ArgumentList "connect 192.168.1.64" # 定义一个函数,用于推送文件到设备上,并显示结果 function push_file { param ( [string]$device, [string]$file, [string]$dest ) # 推送文件到设备上,并显示结果 $result = Start-Process -NoNewWindow -FilePath adb -ArgumentList "-s $device push '$SOURCE$file' $dest" -PassThru if ($result.ExitCode -eq 0) { Write-Host "成功推送了$file 到 $dest" } else { Write-Host "推送$file 到 $dest 失败" } } # 打印所有选项和对应的文件功能简介 for ($i=0; $i -lt $FILES.Count; $i++) { Write-Host "$($i+1). $($FILES[$i]) ($($DESCRIPTION[$FILES[$i]]))" } # 提示用户输入一个选项 $answer = Read-Host -Prompt "请输入你想推送的文件的编号" $answer = $FILES[$answer-1] # 列出所有连接的设备 $devices = adb devices | Where-Object {$_ -match "device$"} | ForEach-Object {$_.Split('\t')[0]} if ($devices -eq $null) { Write-Host "没有找到连接的设备。" exit 1 } # 如果只有一个设备,则直接选择该设备 $device = $devices[0] # 如果有多个设备,让用户选择一个设备 if ($devices.Count -gt 1) { Write-Host "找到以下设备:" for ($i=0; $i -lt $devices.Count; $i++) { Write-Host "$($i+1): $($devices[$i])" } $index = Read-Host -Prompt "请选择一个设备的编号" $device = $devices[$index-1] } # 如果该选项存在,则推送对应的文件 if ($FILES_DESTS.ContainsKey($answer)) { push_file $device $answer $FILES_DESTS[$answer] } else { Write-Host "输入的编号不正确。" } # 同步数据并重启设备 Start-Process -NoNewWindow -FilePath adb -ArgumentList "-s $device shell sync" $confirm = Read-Host -Prompt "你是否同意重启设备?(Y/N)" if ($confirm -eq "Y") { Start-Process -NoNewWindow -FilePath adb -ArgumentList "-s $device reboot" }
使用示例
要运行这个脚本,需要在终端中输入:
push_file.sh
然后就可以看到类似下面的输出:
1. framework.jar (一个压缩文件,包含了Android系统框架层的Java类。) 2. framework-res.apk (一个压缩文件,包含了Android系统框架层的资源文件。) 3. libandroid_servers.so (一个动态链接库文件,包含了Android系统框架层服务层的native代码。) 4. selinux_policy (一个文件,包含了Android系统的安全增强型Linux(SELinux)策略。) 请输入你想推送的文件的编号: 2 找到以下设备: 1: 192.168.1.64:5555 2: emulator-5554 请选择一个设备的编号: 1 成功推送了framework-res.apk 到 \system\framework\ 你是否同意重启设备?(Y/N): Y