Files
gitlab-instance-0a899031_lo…/_ubuntu_gps_pipeline.py
2026-04-05 01:00:07 -05:00

87 lines
2.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
同步 rebuilt_app 到 Ubuntu执行 scripts/ubuntu_gps_pipeline.sh编译 + 可选 adb 安装/拉原版 APK
环境变量: FL_SSH_PASS或 fl_ssh_pass.txt单行
"""
import os
import subprocess
import sys
import paramiko
from _gps_ssh_auth import ssh_password
HOST = "192.168.2.179"
USER = "eric"
GPS_ROOT = os.path.dirname(os.path.abspath(__file__))
REBUILT = os.path.join(GPS_ROOT, "rebuilt_app")
TGZ = os.path.join(GPS_ROOT, "rebuilt_sync.tgz")
REMOTE_TGZ = "/home/eric/rebuilt_sync.tgz"
REMOTE_PROJ = "/home/eric/codex_apk_recovery/rebuilt_app"
_JADX_EXPORT = ""
if os.environ.get("FL_GPS_JADX", "").strip().lower() in ("1", "true", "yes", "on"):
_JADX_EXPORT = "export GPS_JADX_REFERENCE=1\n"
REMOTE = f"""set -e
{_JADX_EXPORT}cd /tmp
rm -rf rebuilt_app
tar xzf {REMOTE_TGZ}
rm -rf {REMOTE_PROJ}
mv rebuilt_app {REMOTE_PROJ}
chmod +x {REMOTE_PROJ}/gradlew
chmod +x {REMOTE_PROJ}/scripts/ubuntu_gps_pipeline.sh
chmod +x {REMOTE_PROJ}/scripts/adb_device_autosetup.sh
bash {REMOTE_PROJ}/scripts/ubuntu_gps_pipeline.sh
"""
def main():
if hasattr(sys.stdout, "reconfigure"):
try:
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
except Exception:
pass
password = ssh_password(GPS_ROOT)
if not password:
print("Set FL_SSH_PASS or create fl_ssh_pass.txt in", GPS_ROOT, file=sys.stderr)
sys.exit(2)
if not os.path.isdir(REBUILT):
print("Missing rebuilt_app", file=sys.stderr)
sys.exit(2)
subprocess.run(
[
"tar",
"-czf",
TGZ,
"--exclude=rebuilt_app/.gradle",
"--exclude=rebuilt_app/app/build",
"--exclude=rebuilt_app/build",
"--exclude=rebuilt_app/fl_xposed/build",
"rebuilt_app",
],
cwd=GPS_ROOT,
check=True,
)
t = paramiko.Transport((HOST, 22))
t.connect(username=USER, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(TGZ, REMOTE_TGZ)
sftp.close()
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(HOST, username=USER, password=password, timeout=45)
stdin, stdout, stderr = client.exec_command(REMOTE, get_pty=True, timeout=900)
for line in stdout:
sys.stdout.write(line)
err = stderr.read().decode()
if err:
sys.stderr.write(err)
code = stdout.channel.recv_exit_status()
client.close()
t.close()
sys.exit(code)
if __name__ == "__main__":
main()