From e5461cbf1280e0bdfb408f9cd0d6190acdd6282b Mon Sep 17 00:00:00 2001 From: tianmo Date: Fri, 16 Oct 2026 15:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=20viewpanel/run.sh=EF=BC=9A=E4=B8=80?= =?UTF-8?q?=E6=9D=A1=E5=91=BD=E4=BB=A4=E6=89=8B=E5=8A=A8=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=EF=BC=88=E5=85=88=E6=9D=80=E6=97=A7?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E3=80=81=E6=8C=89=E9=9C=80=20rebuild?= =?UTF-8?q?=E3=80=81=E6=97=A5=E5=BF=97=E5=86=99=20/tmp/spineview.log?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sample/3.8.99/3899.spine | Bin 645 -> 717 bytes viewpanel/run.sh | 59 ++++++++++++++++++++++----------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/sample/3.8.99/3899.spine b/sample/3.8.99/3899.spine index 4e18fec3c1e63377877a3b176a5b3eaa7cb7c8f1..17ace5922a38a7d9cd4f914c69ad7dfeff7d3acf 100644 GIT binary patch literal 717 zcmV;;0y6!rluu04a1_UXulse~*0p0pgpI8mAf03pgItuDEc=sqFfqmiuLfnAQ(y)- z8X}2jjV8tefrBSbfC@8m(X>N3dhq5|uZDmJ4utw%8(jv4M8hxnecQfo`}_Rf`!z4J zl3Ga(_FwG3^d6v{g#ctoG67)ferc>UUHvJ52l~%f#z)GfsbwAlDF`vf0Vb=}U+6K; zaEK&c5-IzLF&~Ma9s?vYNsvS#LnR4oFgG`6wNtc%BuWw^=>&+w?drsj1k)fH0yYB< zGl)DNH?Jbk^dZk^E!Pk7j2i2Zja|lrM&#KACHv~ZuA1Gr^X(5Wx3l@!;pLt$2OORp z4<1Ajzw`!qD$j2+k64&JB0q9va{nQ}qj+zT7v_Z_24eoRwdcwsS0?uac&o^3XN3Kln3GiyjOK`Jf?ThBHweQL!S0?v=dEO9s zGSK49(&A)0i<3A%e<6v*E5vbem{m2fa4=A4kK?8C$gR=xnvn1ScO22VNC3W!?$77} z4R8%hb}m8WH9q4^gcR$79!7lQleHz8FNtr>@Ats0(ysVbK|O>& z=gSQEGXuxaSDWeY?9#eruOmIbbR@kdgx%;v{>;!Z^jd>1VatkuL`#lLV4Iq*V9&yn z@qh?kkj4Oy9hkteQ(;u3w~Ic!3*c1n?36*}veKvGQwz@1INNb{fLMt^;nS)7H4H30pN=leVU8?PA^O9yo*F^p0K85ATAVb&1V@klSL|Ql&mH zjSnmJnEKlJrM_SRnc7E{_&Y*W<(B4Hm}0H$6gVwC4hbEYri0)Cr-c_Q+ruDWgU3SL z#P;3j?XbS|b#d{ofR!7qOzt$jm4@2)g>^EM&Ab%xx|(C%6vNz++{<)qR}Jeo%+P1{ literal 645 zcmV;00($+el*?-qQ543{H<`&KolG9}(N`u(TRUkCMoKqYgwiD7!i@-ZE0Km8Y#V61 zF6~}$(_L`iRV~_9bS2KB?%as~fw&V<7cQjZIWy1@I|(ScaKD*3-^}^lIrnk~4{`^& z+0u>D&DX#XB>)3iQh<%e^_BW&^Q(doO4l2!wdMN8b2R}yhEY<1^=9)Yd!!N%O(ZO$ z&u)i>S^W z<~flrJaG+i|AA+uV}GNBUw^^8xLSTsA+560g(t2dZXb9rnU_*4a|Eq?;{FcgiED`4 z2i_s`E~%A!T+esEy8NHGhPZv;9Wif2U3lug)tqOp8^{ya5VsG!W9C_^Q+H1_XVEMV;{Go$oIt3EWO!bZi|r>D@eh9`%f+jtIXQOX8Mr(MrmS(bzFd2-w0xvkA*jBi z`4=6C6zyoy9>{=mxQ2g;F|YlZN*Z!Bj!Ejxw}j6tH}iq`LnVF=e=Sm+i56#i&<{K5 zue{O*(QT%e_q)=Ml~fRYE?S)HK|gNOb#7UM&?RMUjoZ{_gL@Y5Ob8mn&{x3Q4pLO^ zR2?G_yBNt^e%WYW1glx zwLHyun)Nj2={QZ~Cvkpwc) f%47G#C(q1w@^Zo(?~F}IjQ^d # 打开指定工程 +# +# 做的事:①杀掉已在跑的实例(避免同时开好几个 Spine 窗口) +# ②源码比 class 新就自动 rebuild ③启动编辑器(后台,日志 /tmp/spineview.log) set -e HERE="$(cd "$(dirname "$0")" && pwd)" -LAB="$HERE/../spine-lab" +ROOT="$(cd "$HERE/.." && pwd)" +JX="$ROOT/tools/jdk8u504-b01/Contents/Home/bin/java" +ASM="$ROOT/tools/asm/asm.jar:$ROOT/tools/asm/asm-tree.jar" +PAY="$ROOT/spine-lab/home/Library/Application Support/Spine/updates/3.8.99.orig" +PROJ="${1:-$ROOT/sample/3.8.99/3899.spine}" +LOG="${SPINEVIEW_LOG:-/tmp/spineview.log}" -[[ -f "$HERE/build/inject.dylib" ]] || { echo "先跑 ./build.sh" >&2; exit 1; } +echo "== 关掉旧实例" +pkill -f com.spineview.Launcher 2>/dev/null || true +sleep 1 -# 先关掉旧的实验室实例,避免测试时越开越多。 -for pid in $(/bin/ps -eo pid,command | grep "$LAB/Spine.app/Contents/MacOS/Spine" | grep -v grep | awk '{print $1}'); do - kill "$pid" 2>/dev/null && echo "关掉旧实例 pid=$pid" -done -sleep 2 - -echo "注入器 : $HERE/build/inject.dylib" -echo "面板类 : $HERE/build/classes" -echo "日志 : /tmp/spine-viewpanel.log" - -# 可选:把工程文件一起打开(第一个参数) -PROJECT_ARGS=() -if [[ -n "$1" ]]; then - PROJECT_ARGS=(--args "$1") - echo "工程 : $1" +if [[ ! -f "$HERE/build/classes/com/spineview/Launcher.class" ]] \ + || [[ -n "$(find "$HERE/src" -newer "$HERE/build/classes/com/spineview/Launcher.class" 2>/dev/null | head -1)" ]]; then + echo "== 源码有更新,先编译" + JAVA_HOME="${JAVA_HOME:-/tmp/jdk-17.0.20.1+1/Contents/Home}" "$HERE/build.sh" | tail -3 fi -open -n \ - --env "DYLD_INSERT_LIBRARIES=$HERE/build/inject.dylib" \ - --env "SPINE_VIEWPANEL_CLASSES=$HERE/build/classes" \ - --env "SPINE_VIEWPANEL_MAIN=com/spineview/SceneScan" \ - --env "SPINE_USER_HOME=$LAB/home" \ - "$LAB/Spine.app" "${PROJECT_ARGS[@]}" +echo "== 启动(工程 $PROJ)" +nohup "$JX" \ + "-javaagent:$ROOT/tools/agent/view-agent.jar" \ + -DSpineJava=1 \ + "-Dspine.payload=$PAY" \ + "-Dspine.resources=$HERE/resources" \ + "-Dspine.compat=$HERE/compat-classes" \ + "-Dspine.classes=$HERE/build/classes" \ + "-Duser.home=$ROOT/spine-lab/home" \ + -cp "$HERE/build/classes:$ASM" com.spineview.Launcher "$PROJ" \ + >"$LOG" 2>&1 & + +sleep 2 +echo "== 已启动:pid $(pgrep -f com.spineview.Launcher | tr '\n' ' ')" +echo " 日志:tail -f $LOG"