# Remote build helper — FL_SSH_PASS 或 fl_ssh_pass.txt import os import paramiko import sys from _gps_ssh_auth import ssh_password HOST = "192.168.2.179" USER = "eric" GPS_ROOT = os.path.dirname(os.path.abspath(__file__)) SCRIPT = r"""set -e cd /tmp rm -rf rebuilt_app tar xzf /home/eric/rebuilt_sync.tgz rm -rf /home/eric/codex_apk_recovery/rebuilt_app mv rebuilt_app /home/eric/codex_apk_recovery/rebuilt_app chmod +x /home/eric/codex_apk_recovery/rebuilt_app/gradlew export ANDROID_HOME=/home/eric/android-sdk if test -d /usr/lib/jvm/java-17-openjdk-amd64; then export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 elif test -d /usr/lib/jvm/java-11-openjdk-amd64; then export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 else export JAVA_HOME=$(dirname "$(dirname "$(readlink -f "$(which java)")")") fi cd /home/eric/codex_apk_recovery/rebuilt_app echo "JAVA_HOME=$JAVA_HOME" echo "ANDROID_HOME=$ANDROID_HOME" ./gradlew :app:assembleDebug :fl_xposed:assembleDebug --no-daemon ls -la app/build/outputs/apk/debug/ ls -la fl_xposed/build/outputs/apk/debug/ """ def main(): password = ssh_password(GPS_ROOT) if not password: print("Set FL_SSH_PASS or fl_ssh_pass.txt", file=sys.stderr) sys.exit(2) client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(HOST, username=USER, password=password, timeout=40) stdin, stdout, stderr = client.exec_command(SCRIPT, get_pty=True, timeout=600) 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() sys.exit(code) if __name__ == "__main__": main()