From 99a0d7c7830e1d499795a8a70b6a00a807216bc8 Mon Sep 17 00:00:00 2001 From: Test User Date: Fri, 19 Dec 2025 18:18:36 +0800 Subject: [PATCH 01/27] =?UTF-8?q?=E5=AE=9E=E7=8E=B0TTS=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E5=99=A8=E8=87=AA=E5=8A=A8=E5=90=AF=E5=8A=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/github/jing332/tts_server_android/App.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/github/jing332/tts_server_android/App.kt b/app/src/main/java/com/github/jing332/tts_server_android/App.kt index 414c04306..e4b6f9a37 100644 --- a/app/src/main/java/com/github/jing332/tts_server_android/App.kt +++ b/app/src/main/java/com/github/jing332/tts_server_android/App.kt @@ -63,6 +63,11 @@ class App : Application() { .build() ) + // 自动启动TTS转发器服务 + GlobalScope.launch { + val intent = Intent(this@App, com.github.jing332.tts_server_android.service.forwarder.system.SysTtsForwarderService::class.java) + ContextCompat.startForegroundService(this@App, intent) + } GlobalScope.launch { HanlpManager.initDir( From eeea8f3e5c3bf32ad39f136f1b643404bc940112 Mon Sep 17 00:00:00 2001 From: Test User Date: Sat, 20 Dec 2025 07:29:13 +0800 Subject: [PATCH 02/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E9=94=99=E8=AF=AF=EF=BC=9A=E7=A6=81=E7=94=A8?= =?UTF-8?q?v3=E7=AD=BE=E5=90=8D=E4=BB=A5=E8=A7=A3=E5=86=B3Tag=20number=20o?= =?UTF-8?q?ver=2030=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index a60c84888..fa4d4e905 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,6 +76,9 @@ android { storePassword pro.getProperty("KEY_PASSWORD") keyAlias pro.getProperty("ALIAS_NAME") keyPassword pro.getProperty("ALIAS_PASSWORD") + v1SigningEnabled true + v2SigningEnabled true + v3SigningEnabled false // 禁用v3签名以避免Tag number over 30错误 } } From 2a4c256ad8296a80d769b4f2d5279bca6aa288de Mon Sep 17 00:00:00 2001 From: czysj <143161177+czysj@users.noreply.github.com> Date: Sat, 20 Dec 2025 08:39:45 +0800 Subject: [PATCH 03/27] Add files via upload --- local.properties | 4 ++++ sign.jks | Bin 0 -> 2216 bytes 2 files changed, 4 insertions(+) create mode 100644 local.properties create mode 100644 sign.jks diff --git a/local.properties b/local.properties new file mode 100644 index 000000000..23b3c5821 --- /dev/null +++ b/local.properties @@ -0,0 +1,4 @@ +KEY_PATH=..\\sign.jks (签名文件) +KEY_PASSWORD= sc6597 +ALIAS_NAME= jou +ALIAS_PASSWORD= sc6597 \ No newline at end of file diff --git a/sign.jks b/sign.jks new file mode 100644 index 0000000000000000000000000000000000000000..32f825c85a8b7cbf9d0dcb9847018a4f044fd3fb GIT binary patch literal 2216 zcmcJQ`9IVP7suy2n~UuGGPWDp(sw9Z$ks&GtkXr-8QX-463H0ZCZVEnZA0pkzut$d!HZ>2y|b-U*bA{ z)t3DTF{NTNxI)eBRhsb%CA zp8zoD!7qBD0@6r;3h3E5P^?!m%E^lhmN%N;@5*rO3YX$vE*LVQ2Escq^&TTu_B|<% zo9sZ-MBhLiN0MlhU8x>36=9AOQ)8G0wi8Y|KJ`h~z+wb(_$8(42CtpIrYx}SYauqK zVk*40pDy5^afKX$&rruo;_pqn$Cfb6|AE+e40;d-@#cWC= z-Gz%)8k#pd>3TaexF1s%@jNVPe!+X1W1`Grd}Envh((En+`IJxKBWgk`B$cA2zo8! zn9tpi4c+5CI;TVDox z49`R?RJljU&QP`QTSCgdY@nKc$C+u};D%Z>BR)~Cu}8izQ+>R*BmK$B-BImrnajFd zMJL^Qgxgg6)Pk0LZ9K=}gvTY347iF$pKm6|KyKkyHk}sWGI}{(e&e`78M6?;&J zU7XsHa@*~3vT&|*z?DE@C&R0VJ7n<~rvajT4!#WJd2xaEi-~!Bf^bnbYv9?|h`q|H z=n3gVc06^hVQFc^LU70DeQuFooUN@tisA7L zYpu?NXimLGFw98j_3U^~_1Q3P#)tmdS%g;Jt5%~T)wHVGXftOvhNknpi91w$faX?&>Df2T*Ge?CGC!g2abGqv_tu@&UW%1w&yg znx)TfkjlwSoJq2{^4i#IOx@R?(}ai92Z&j_RxI7S;>WmB=VQ(3K}QWu+~wj{=*kC5 zXpWi+Tik&aVm(i&2>s8snKPbmHtry*S`s2}0`V?hlrgMnjJ>lAo^R8ck$25yDptSa zRw>Hq^2f1fQ$F5sl)sFR8*u`0WM*$?b!yd{&{vQS`Z-YCUJcuPFk=L{Sh3#}cKK7% zcUGiX`kNUyOC3W-?^OW|*Zxk4-B&-tiXDotWyXe2&g&c?Ri0>Ga+#b@sbB9zH+Y_f zBn4O;3?+3nJnt~e7_df7(gV}xf(h$h^S|odVs-`emwQUNDViz0U4fz(BrFK0C|-6K zQf%vb77eU=?eIQ7zDDBfX{L?@J*e`O_K=)G?`R@9eMX<~)OK`wPJLbXFw3;mRT=mq?xxMxmCTvZ9!@=g_<$HxlLwM~Xl#?9qbz=W`!^ z65%q(1&0KO1^y?(_1_2|$osDx9uc?;?ouTBZ{+=7g#8;qISD@PV`yz{5CqYBAoz;} zpUys__5a5Idwmk1^v{;}9|DX72tYs*zyl=#0HoqHnQm`+E?BF(EHkF|Hzv3o;&5^n zmekA=3b4v`9_PJJ(F~`4-nD$L;MP)*B&ZY}CxGJ@Us`+UG)qCI0O?TxYvnIws`N@9t3!1%pr+00BxBL3t3hKU5SyTpTW1!txs|RQ78T ztk0urF-BfyS=K-Mr-}P}vu`2*fyecg89Lc^cAFQ(UCI<0C!47$5GtZ#r#%J@wJ z_KPv)mc6WwTr8RO0v%(FKV8Wwz*6)~gd=Mj4j5a&zrT%+j^zJbq|sw2AvC6&(&u_? zc28}jdfp0wr!RlgG1zUT7Ch>I8hw{4+1Y;Ec|9;1=hWU*G8woXsfMucKqy$|1= zI3groLE}VwSekpJ5fYsMPw(EA%!;>y+iSmlV10PM6CFdoPFo9Fa+J6iA-WtXFBW|t zpUTN}i6=(X*T5aB;s;qm`JnwUW9&=ld|CZiNw|VbH&Q!Uk_nd*!>ffs3rx;PS$JWO nn||X`PC}gR8IiGZOl;c2J;)Pq1dSQc&vjl(?}9mZZt?sHb|Tfm literal 0 HcmV?d00001 From 1b41f84e3ac49ec1bcce2c67fcd8fded42b1d427 Mon Sep 17 00:00:00 2001 From: czysj <143161177+czysj@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:11:55 +0800 Subject: [PATCH 04/27] Update local.properties --- local.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/local.properties b/local.properties index 23b3c5821..2ad4c9cf8 100644 --- a/local.properties +++ b/local.properties @@ -1,4 +1,4 @@ KEY_PATH=..\\sign.jks (签名文件) -KEY_PASSWORD= sc6597 -ALIAS_NAME= jou -ALIAS_PASSWORD= sc6597 \ No newline at end of file +KEY_PASSWORD= +ALIAS_NAME= +ALIAS_PASSWORD= From f448391f093e004398262604bf283fc16addec02 Mon Sep 17 00:00:00 2001 From: Test User Date: Sat, 20 Dec 2025 10:55:43 +0800 Subject: [PATCH 05/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E9=94=99=E8=AF=AF=EF=BC=9A=E7=A6=81=E7=94=A8?= =?UTF-8?q?v3=E7=AD=BE=E5=90=8D=E4=BB=A5=E8=A7=A3=E5=86=B3Tag=20number=20o?= =?UTF-8?q?ver=2030=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fa4d4e905..69992893b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,9 +76,10 @@ android { storePassword pro.getProperty("KEY_PASSWORD") keyAlias pro.getProperty("ALIAS_NAME") keyPassword pro.getProperty("ALIAS_PASSWORD") - v1SigningEnabled true - v2SigningEnabled true - v3SigningEnabled false // 禁用v3签名以避免Tag number over 30错误 + enableV1Signing true + enableV2Signing true + enableV3Signing false // 禁用v3签名以避免Tag number over 30错误 + enableV4Signing false } } From d4165fcfd7f166acd76aa5187dc16291a588696a Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 10:14:38 +0800 Subject: [PATCH 06/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E9=94=99=E8=AF=AF=EF=BC=9A=E5=B0=86=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E6=96=87=E4=BB=B6=E4=BB=8EJKS=E6=94=B9=E4=B8=BAPKCS12?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=EF=BC=8C=E8=A7=A3=E5=86=B3Tag=20number=20ove?= =?UTF-8?q?r=2030=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/debug.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 89f0a6c38..b12942de9 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -25,9 +25,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.jks' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks + echo KEY_PATH='./key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 - name: Build with Gradle run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f38c735c4..d95d1ed93 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,9 +41,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.jks' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks + echo KEY_PATH='./key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 - name: Build with Gradle run: | From 936094ccea3d9b17bbe94a0c83195cc5983df096 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 10:23:51 +0800 Subject: [PATCH 07/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=EF=BC=8C?= =?UTF-8?q?=E5=B0=86KEY=5FPATH=E4=BB=8E./key.p12=E6=94=B9=E4=B8=BA./app/ke?= =?UTF-8?q?y.p12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/debug.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index b12942de9..51ba6fa63 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -25,7 +25,7 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.p12' >> local.properties + echo KEY_PATH='./app/key.p12' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d95d1ed93..465a03848 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.p12' >> local.properties + echo KEY_PATH='./app/key.p12' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 From d2f18be6a2f1274fe071d691fcc4f39d8f13d550 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 10:32:15 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dtest.yml=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E5=B0=86key.jks=E6=94=B9=E4=B8=BAkey.p12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cd81fc778..f77fddf38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,9 +45,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.jks' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.jks - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.jks + echo KEY_PATH='./app/key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 - name: Build with Gradle run: | From 60b3d363855e2bd86c9e4978f1c14a9dfe2e30d7 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 10:38:17 +0800 Subject: [PATCH 09/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=9A=E5=B0=86=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=88=B0=E6=A0=B9=E7=9B=AE=E5=BD=95=EF=BC=8C?= =?UTF-8?q?KEY=5FPATH=E8=AE=BE=E4=B8=BA./key.p12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/debug.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- .github/workflows/test.yml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 51ba6fa63..6be8eee2e 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -25,9 +25,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./app/key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 + echo KEY_PATH='./key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 - name: Build with Gradle run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 465a03848..da01ec89d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,9 +41,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./app/key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 + echo KEY_PATH='./key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 - name: Build with Gradle run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f77fddf38..995aa7b86 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,9 +45,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./app/key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到app/key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/app/key.p12 + echo KEY_PATH='./key.p12' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 - name: Build with Gradle run: | From 53f4e7bdedc39eeecfd4e2d6fbe254d99fbb48e6 Mon Sep 17 00:00:00 2001 From: czysj <143161177+czysj@users.noreply.github.com> Date: Sun, 21 Dec 2025 10:57:09 +0800 Subject: [PATCH 10/27] Delete key configuration from local.properties Remove sensitive key configuration from local.properties --- local.properties | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/local.properties b/local.properties index 2ad4c9cf8..8b1378917 100644 --- a/local.properties +++ b/local.properties @@ -1,4 +1 @@ -KEY_PATH=..\\sign.jks (签名文件) -KEY_PASSWORD= -ALIAS_NAME= -ALIAS_PASSWORD= + From 979beb3c34efdffc0bd9bbf1565641a2eae64f91 Mon Sep 17 00:00:00 2001 From: czysj <143161177+czysj@users.noreply.github.com> Date: Sun, 21 Dec 2025 10:59:15 +0800 Subject: [PATCH 11/27] Delete sign.jks --- sign.jks | Bin 2216 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 sign.jks diff --git a/sign.jks b/sign.jks deleted file mode 100644 index 32f825c85a8b7cbf9d0dcb9847018a4f044fd3fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2216 zcmcJQ`9IVP7suy2n~UuGGPWDp(sw9Z$ks&GtkXr-8QX-463H0ZCZVEnZA0pkzut$d!HZ>2y|b-U*bA{ z)t3DTF{NTNxI)eBRhsb%CA zp8zoD!7qBD0@6r;3h3E5P^?!m%E^lhmN%N;@5*rO3YX$vE*LVQ2Escq^&TTu_B|<% zo9sZ-MBhLiN0MlhU8x>36=9AOQ)8G0wi8Y|KJ`h~z+wb(_$8(42CtpIrYx}SYauqK zVk*40pDy5^afKX$&rruo;_pqn$Cfb6|AE+e40;d-@#cWC= z-Gz%)8k#pd>3TaexF1s%@jNVPe!+X1W1`Grd}Envh((En+`IJxKBWgk`B$cA2zo8! zn9tpi4c+5CI;TVDox z49`R?RJljU&QP`QTSCgdY@nKc$C+u};D%Z>BR)~Cu}8izQ+>R*BmK$B-BImrnajFd zMJL^Qgxgg6)Pk0LZ9K=}gvTY347iF$pKm6|KyKkyHk}sWGI}{(e&e`78M6?;&J zU7XsHa@*~3vT&|*z?DE@C&R0VJ7n<~rvajT4!#WJd2xaEi-~!Bf^bnbYv9?|h`q|H z=n3gVc06^hVQFc^LU70DeQuFooUN@tisA7L zYpu?NXimLGFw98j_3U^~_1Q3P#)tmdS%g;Jt5%~T)wHVGXftOvhNknpi91w$faX?&>Df2T*Ge?CGC!g2abGqv_tu@&UW%1w&yg znx)TfkjlwSoJq2{^4i#IOx@R?(}ai92Z&j_RxI7S;>WmB=VQ(3K}QWu+~wj{=*kC5 zXpWi+Tik&aVm(i&2>s8snKPbmHtry*S`s2}0`V?hlrgMnjJ>lAo^R8ck$25yDptSa zRw>Hq^2f1fQ$F5sl)sFR8*u`0WM*$?b!yd{&{vQS`Z-YCUJcuPFk=L{Sh3#}cKK7% zcUGiX`kNUyOC3W-?^OW|*Zxk4-B&-tiXDotWyXe2&g&c?Ri0>Ga+#b@sbB9zH+Y_f zBn4O;3?+3nJnt~e7_df7(gV}xf(h$h^S|odVs-`emwQUNDViz0U4fz(BrFK0C|-6K zQf%vb77eU=?eIQ7zDDBfX{L?@J*e`O_K=)G?`R@9eMX<~)OK`wPJLbXFw3;mRT=mq?xxMxmCTvZ9!@=g_<$HxlLwM~Xl#?9qbz=W`!^ z65%q(1&0KO1^y?(_1_2|$osDx9uc?;?ouTBZ{+=7g#8;qISD@PV`yz{5CqYBAoz;} zpUys__5a5Idwmk1^v{;}9|DX72tYs*zyl=#0HoqHnQm`+E?BF(EHkF|Hzv3o;&5^n zmekA=3b4v`9_PJJ(F~`4-nD$L;MP)*B&ZY}CxGJ@Us`+UG)qCI0O?TxYvnIws`N@9t3!1%pr+00BxBL3t3hKU5SyTpTW1!txs|RQ78T ztk0urF-BfyS=K-Mr-}P}vu`2*fyecg89Lc^cAFQ(UCI<0C!47$5GtZ#r#%J@wJ z_KPv)mc6WwTr8RO0v%(FKV8Wwz*6)~gd=Mj4j5a&zrT%+j^zJbq|sw2AvC6&(&u_? zc28}jdfp0wr!RlgG1zUT7Ch>I8hw{4+1Y;Ec|9;1=hWU*G8woXsfMucKqy$|1= zI3groLE}VwSekpJ5fYsMPw(EA%!;>y+iSmlV10PM6CFdoPFo9Fa+J6iA-WtXFBW|t zpUTN}i6=(X*T5aB;s;qm`JnwUW9&=ld|CZiNw|VbH&Q!Uk_nd*!>ffs3rx;PS$JWO nn||X`PC}gR8IiGZOl;c2J;)Pq1dSQc&vjl(?}9mZZt?sHb|Tfm From 6df33983c6569f6e5dc9a6b8355ff959b115d288 Mon Sep 17 00:00:00 2001 From: czysj <143161177+czysj@users.noreply.github.com> Date: Sun, 21 Dec 2025 10:59:29 +0800 Subject: [PATCH 12/27] Delete local.properties --- local.properties | 1 - 1 file changed, 1 deletion(-) delete mode 100644 local.properties diff --git a/local.properties b/local.properties deleted file mode 100644 index 8b1378917..000000000 --- a/local.properties +++ /dev/null @@ -1 +0,0 @@ - From 06100dcbe7932602719213ba9ba1f995c3c9792e Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 11:11:42 +0800 Subject: [PATCH 13/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGitHub=20Actions?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=9A=E5=B0=86KEY=5FPATH=E4=BB=8E./key.p12?= =?UTF-8?q?=E6=94=B9=E4=B8=BA../key.p12=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E4=BB=8Eapp=E6=A8=A1=E5=9D=97=E8=83=BD=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E6=A0=B9=E7=9B=AE=E5=BD=95=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/debug.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 6be8eee2e..1caf85fa6 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -25,7 +25,7 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.p12' >> local.properties + echo KEY_PATH='../key.p12' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da01ec89d..b6d944b41 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.p12' >> local.properties + echo KEY_PATH='../key.p12' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 995aa7b86..f6545ece0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,7 +45,7 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='./key.p12' >> local.properties + echo KEY_PATH='../key.p12' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 From b04de194b3e9c8e1878daf6ed7744c85b733d12c Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 11:47:20 +0800 Subject: [PATCH 14/27] Add GitHub Secrets configuration guide --- GITHUB_SECRETS.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 GITHUB_SECRETS.md diff --git a/GITHUB_SECRETS.md b/GITHUB_SECRETS.md new file mode 100644 index 000000000..ea9941953 --- /dev/null +++ b/GITHUB_SECRETS.md @@ -0,0 +1,91 @@ +# GitHub Secrets 配置指南 + +## 完整仓库机密格式(一键复制) + +以下是需要在 GitHub 仓库设置中添加的所有机密,直接复制对应的键值对即可: + +### 1. 签名配置 +``` +ALIAS_NAME=jou +ALIAS_PASSWORD=sc6597 +KEY_PASSWORD=sc6597 +``` + +### 2. 签名文件(Base64 编码) +``` +KEY_STORE=<请将 sign.p12.base64 文件内容粘贴到此处> +``` + +### 3. GitHub API Token +``` +TOKEN=<请输入您的 GitHub API Token> +``` + +## 获取签名文件 Base64 编码 + +1. 确保项目根目录下存在 `sign.p12` 文件 +2. 查看生成的 Base64 编码: + ```bash + cat sign.p12.base64 + ``` +3. 将输出的完整内容(不包含任何换行符)粘贴到 `KEY_STORE` 机密值中 + +## GitHub Secrets 设置步骤 + +1. 打开 GitHub 仓库页面 +2. 点击 "Settings" → "Secrets and variables" → "Actions" +3. 点击 "New repository secret" +4. 逐个添加上述机密,确保键名完全一致 +5. 保存所有机密后,重新运行 GitHub Actions 工作流 + +## 本地构建说明 + +1. 确保 JDK 17 已正确安装 +2. 检查 `local.properties` 文件中的 JAVA_HOME 配置 +3. 运行构建命令: + ```bash + ./gradlew assembleDevRelease --no-daemon + ``` + +## 已实现的功能 + +1. ✅ **TTS 转发器自动启动**:在 `App.onCreate()` 中使用 `GlobalScope.launch` 自动启动 `SysTtsForwarderService` +2. ✅ **存储权限配置**:已在 `AndroidManifest.xml` 中添加 + - `READ_EXTERNAL_STORAGE` + - `WRITE_EXTERNAL_STORAGE` + - `MANAGE_EXTERNAL_STORAGE` + - `requestLegacyExternalStorage="true"` +3. ✅ **签名配置优化**: + - 禁用了 v3 签名以避免 "Tag number over 30" 错误 + - 使用 PKCS12 格式签名文件 + - 修复了 GitHub Actions 中的 KEY_PATH 路径 +4. ✅ **多渠道打包**:支持原版和 DEV 共存版 + +## 解决的构建错误 + +- ✅ JDK 版本兼容性问题:指定使用 JDK 17 +- ✅ 签名文件格式错误:从 JKS 转换为 PKCS12 +- ✅ Tag number over 30 错误:禁用 v3 签名 +- ✅ 签名文件路径错误:修正 GitHub Actions 中的 KEY_PATH +- ✅ PowerShell 语法错误:使用正确的命令格式 +- ✅ Git push SSL 错误:配置 SSL 验证 + +## 注意事项 + +1. 确保 GitHub Token 具有 `repo` 和 `workflow` 权限 +2. 签名文件不要提交到版本控制中 +3. 定期更新签名文件,确保安全性 +4. 构建前检查 `local.properties` 文件配置是否正确 + +## 构建命令 + +```bash +# 构建 DEV 共存版(推荐) +./gradlew assembleDevRelease --no-daemon + +# 构建原版 +./gradlew assembleAppRelease --no-daemon + +# 构建 Debug 版 +./gradlew assembleAppDebug --no-daemon +``` \ No newline at end of file From f5f3fdcf5692200586c3ae429668b44a0f5c4901 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 12:16:43 +0800 Subject: [PATCH 15/27] Fix signing issue: Generate compatible PKCS12 key with JDK 17 --- .vscode/settings.json | 3 +++ ...AndroidApplicationPlugin$apply$1$1$1$1.class | Bin 0 -> 1838 bytes .../AndroidApplicationPlugin$apply$1$1$1.class | Bin 0 -> 1799 bytes .../AndroidApplicationPlugin$apply$1$1.class | Bin 0 -> 1789 bytes ...in$apply$lambda$0$$inlined$configure$1.class | Bin 0 -> 1543 bytes ...$inlined$sam$i$org_gradle_api_Action$0.class | Bin 0 -> 1104 bytes .../kotlin/main/AndroidApplicationPlugin.class | Bin 0 -> 3563 bytes .../main/META-INF/convention.kotlin_module | Bin 0 -> 24 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/inputs/source-to-output.tab.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.values.at | Bin 0 -> 522 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 0 -> 32768 bytes .../inputs/source-to-output.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/class-attributes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/class-attributes.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/class-attributes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.values.at | Bin 0 -> 52 bytes .../jvm/kotlin/class-attributes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/class-attributes.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-fq-name-to-source.tab.len | Bin 0 -> 8 bytes .../class-fq-name-to-source.tab.values.at | Bin 0 -> 106 bytes .../jvm/kotlin/class-fq-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/class-fq-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/internal-name-to-source.tab.len | Bin 0 -> 8 bytes .../internal-name-to-source.tab.values.at | Bin 0 -> 391 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab | Bin 0 -> 4096 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 0 -> 273 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/source-to-classes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/source-to-classes.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/source-to-classes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab.values.at | Bin 0 -> 327 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 0 -> 76 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 0 -> 73 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/counters.tab | 2 ++ .../cacheable/caches-jvm/lookups/file-to-id.tab | Bin 0 -> 4096 bytes .../caches-jvm/lookups/file-to-id.tab.keystream | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/file-to-id.tab.values.at | Bin 0 -> 55 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/id-to-file.tab | Bin 0 -> 4096 bytes .../caches-jvm/lookups/id-to-file.tab.keystream | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.values.at | Bin 0 -> 106 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/lookups.tab | Bin 0 -> 4096 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 0 -> 4096 bytes .../lookups/lookups.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 0 -> 433 bytes .../cacheable/caches-jvm/lookups/lookups.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 0 -> 8 bytes .../compileKotlin/cacheable/last-build.bin | Bin 0 -> 18 bytes .../shrunk-classpath-snapshot.bin | Bin 0 -> 4413 bytes .../compileKotlin/local-state/build-history.bin | Bin 0 -> 31 bytes .../convention/build/libs/convention.jar | Bin 0 -> 7439 bytes ...ithub.jing332.android.application.properties | 1 + ...ithub.jing332.android.application.properties | 1 + .../convention/build/tmp/jar/MANIFEST.MF | 2 ++ gradle.properties | 1 + sign.p12 | Bin 0 -> 2706 bytes sign.p12.base64 | 1 + 95 files changed, 11 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$1$1$1.class create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$1$1.class create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$1.class create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$0$$inlined$configure$1.class create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class create mode 100644 build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin.class create mode 100644 build-logic/convention/build/classes/kotlin/main/META-INF/convention.kotlin_module create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len create mode 100644 build-logic/convention/build/kotlin/compileKotlin/cacheable/last-build.bin create mode 100644 build-logic/convention/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin create mode 100644 build-logic/convention/build/kotlin/compileKotlin/local-state/build-history.bin create mode 100644 build-logic/convention/build/libs/convention.jar create mode 100644 build-logic/convention/build/pluginDescriptors/com.github.jing332.android.application.properties create mode 100644 build-logic/convention/build/resources/main/META-INF/gradle-plugins/com.github.jing332.android.application.properties create mode 100644 build-logic/convention/build/tmp/jar/MANIFEST.MF create mode 100644 sign.p12 create mode 100644 sign.p12.base64 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..e0f15db2e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$1$1$1.class b/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$1$1$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1a389d0ae8f37b6f8d3f71122412f5d3a4b393a0 GIT binary patch literal 1838 zcmb7FZF3q`6n^ePfWTIgv}yCARa1@DpFu< z45i9y!}9tDAAlL1NVvAa4}@U{uCeU|UgTR&u*Iz&C+zMh+9N5#>ROdy;pNb2BpI%b z-Jb!UMv5V|Dk$6QbHbjJ%^!EJYRhZ zKVMLI1^={qhU*Q_?;86~*zvib?r|x-FrG3>!`8iXlBpS*+>q;ZL1 z*4lHd-q3A}`@HYa#29WC8~gl_8!ne!<6&ptvBK(@rlo>(tEw}XaV3jc%rV?L&+yV% zV90fyu>QnyBio^tP8Ul9h$s}U(Q?A7j@R)<4vVwoN6Sk$UM{9R<9T!*$$XSU%qvi2rAW9Baq0K|1o7%0fe#N*hv5aWjou3>mZ8 z+Nm|y>y-NG8pOoau?%Apx3R*Y9aI=*{vDazS1np9BBtWvqyl+gIleYY(p~D^X~<0{ zCTN41Ix^}21M4XvL6=X2k`$&*n1z#LJ$rJT)uyzpHm8v|b#lC*t+2AT zqCLp|`F%>uC@=dCmA1;ICy)AG6wsPb(88;%LK>gb*8JB7yjX0-t2|7GYyTfPjV~D% zUuL)53u$H7J)72Vrr}xKZF67nj_d5GgZ8T-q|=Q09mgMP3fqwkMc*;yp$G&Sjn<;} zV$&F=sMC9%J-Q?U>!y^BzwYuNP<+nUrR917Ey}=@VX`HQ0BODrHwlcWM!&>WB|C!a$9ktBwPbm{{wF2p|5ikwKq z9-HK$k;UxN%*9_Zzw``mQhVNhhMO85s{k6d=u|9AVFs6QF%Ecn;4}+b;Wp~YY{q#FjpZS?!T zaCj^Nx#tf$LK>WQj*Y7NX2BTxb~lK9ANV)$XU(S(?)Z9 zhscG?|0OKcmG^A{q|^cXCLA(k&^yaNFlmr1VwXk&YikG#MjT zQeR7SB##Fn0T)_{4tIsR#nKpae}p&%giY$+95G1$oLExrq?V-Vp%&AQMV3JxL^3k# z=@-y{AdBHkTJ_N`&LuGmN^VFc5f3RsBaibNi|2pF(#CVVeTwWaxT!&fYj{Yj5>N&U zSj2@S-K9~;I2{Gk*(yQU`{o7S`w<_gYZEe>v@TPXJIQ-_>{zCM z3H2%CF|BDj{Q`SrY2^7;^7{Z!==UxGeMnjE9w24mBMTo}_yjczb=Bv7dyj|GR#`%G zXX;h!P22CAd;(;4hQf19J`ko8QU=ipcyPS^Bywd)VY6J{NDxH7l@ z0`N3a45_-Hbejx`^4dN_vTUvG>&PIN!vYp*AvzQxgV8*j4Z2ZE$dTW38O-vlRHl&g zhC(uIUp^MyVL&;qH~pY%9=Q?mAc!?Cr60w82+fuswT7No%V6ohb{MCrxVoQG#ZgDU(qK46LV|1Z_SM z%G)5%AxvX@qUXjZIjx}Ow30?{VSKWpZLo^Aq20^<`F%>us3_+))l=uvm&bj77}EGq z($Z*q;!KV zkB6a4fAibY_WY2WhGuRq0G zW2Aq@I~r8Dh9+4hl@x^(X@pg}i<6LPIts=TRte$(?WIW|bP#CKvp}i>3Jn6hLCflj zpHZv=)GO;_T>TkqPjTx9`aeNR#TU)bq3AOd9VSsgGDdY)@TE8xu=qQ)Z=d14pYVaY zHX-97+2RxoDA89z{Yuy+o5VKm;cN0V;^9&Jw$P^c9Rm1}qVF6aVc{bSA6xhYH4Amz ZwXlg#55PhyqH%y^h|fc8g;))d{|EA=zQ+In literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$0$$inlined$configure$1.class b/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$apply$lambda$0$$inlined$configure$1.class new file mode 100644 index 0000000000000000000000000000000000000000..59c253e22d39711b9e3f579c19225a0156caf61e GIT binary patch literal 1543 zcmd5+OH&g;5dLNplCbiShYA7`WmO1|Wzi}hAXOAXRf>QqLvi6W$u41FGn?9-rQnv6 zzs0L3Ee}?Tqd&^BcL@<8dhz06XL@>jx_iFwoB96Z>o)*z@Qh()P1?RE?6rE`6&0?8 zCyQ=a71H43IWt^dE8E;yGz=kKAsySOc=AA0L*Fs1G#JBn!SkzT)#tYBn7l4b-#Kud ziZXZ4>dw1^l|sdl37hKawXOC!nf{7T5N zr>HM8O4rV_?n%X|S-}}TF0|?#oz%>OP*x(K0&}xv zS<5qfJ;Bx5rJvzG3%aBxuB4Ai8{0riQ&%k9X+m7NkSDbuW?Ib~r zvS`Re0~pvb`Afb}bBT8Hj$~d@VOyBLIvDvA z#A#$1x?*KBjNRbB=zB+`+?dQqm|_^Ze$a(uMKE465Q#xZ<@l1jX2}cviu2Yfht+oP zbk?pD?uHJ-htl?1QSXpX--;Ei=Sta2Yg3=iTG>vqow2$exux24=(&P!O<8kGuU=bv zZbK&>u6s81(_f$qvJ=+Ij=#&xE_ntEUWL1R+!xWhtV!vq_}QWCW37LAd2-_~ zENFC*TH2286={5imS&`Nn!9qJ(f5fA4LKT9v2z@=WJjSCfPUPjIgL3Qb@FL61EZLy zF^PvTut1iE1SO5;$5^EKKVgml0A5hn19XzXeI)W2%40Z>JGe_G?&UFp(S5K0_c6AQ aWPtGi69FCsn8Xro?xW35=zAImP5%UrF2D%@ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class b/build-logic/convention/build/classes/kotlin/main/AndroidApplicationPlugin$inlined$sam$i$org_gradle_api_Action$0.class new file mode 100644 index 0000000000000000000000000000000000000000..552cde92475fc02511baff6e3806cc8c5eea4d5b GIT binary patch literal 1104 zcmbtTT~8B16g{&oY$>ahA}W3WLWO=P3tEjymDmtS8Y>bp^}z=+?2cvVcDC7_HvBA2 zG=4nz1N>3OJG3;2O?>cS@7#O$+%xx{z5Dam_a6YB;W5KzRrygU{c5KZNRMk7s=c7w zlqx4xAeHcQF>mK&E{vK7&4~MfIN%+5Q1uKlw{C+mWR7`{y8%~C_toLC@U)Et!z`7! z{Suc-+a9;IMk$( zR4S=A8J6?^0v8%7%rMLkIy0P7X%Q(NxHY9CNm_WZjq9YEcO<;lZm4&=L9oXo-WCL8 zSk2cjs$4mj**7H3N}=K425zP?hg%GZyoqNqpGFc34rXv=0v7HtB=wPu8J^ew@9UEa zwm1=9R}1QVM2CgOpHq)e(#9%jDOE3Q5y{FZl5=zR_p9QdfZ`!6V5J1M$Wf+F4qUqtG8JOlmkaMT@u<@HiF}PHihM2xF494`oR2huz2% zJJJx$z3wV4+oB<3NsLvcLVf!C#F-5eIY}!v4wlIp)oHyfif3_^PM4x5bXs&~O4(~) zal7~hi^bAsEPbRL!#Y`mr1w}xj!xql9)=C_#~203Oye$AC}jxC145_x2}`AKxM$(* zMKWhd=HNcos4|HMRGTKxTn5^jhh&qOAX}!#f{jOX&J!Yy1Sa1hQ6rsjsfNp#s!>zSBygJ!N#_lvnMhovk)toN?uoE%B~jkq$lgP z&5|oVJs}V|ZX|>zf%7LC3Lz*EoYV}>o)+-;_N}xcjAjV|NCHjvmSzcbW*VWUw}8S> zUJ7*eHp0}mLKn7T7F1iH$CcVv?G01W3@fG>M#*-0uwsiPd$FwR6JbOIF7K3VT{B|a zd&QV$*s5tLdMs_&CbhJj6~bA@l-p8sI~BDh#Z-za1qH76o^JlZ6j z!v%q>$N1TG(_&Q!Pd-;nHG~dKZUz+jDm3iiCE*Xqx{uvLOD z8P>cV!X<%IE_ZTX-Bijt$=R*r@B|bSe){}ls#vOI*en9ooM^>$^tRv{`UE7kN>dmE zEUelj&%W3-Rm&%o2r9wOu`-K z>|HuWwyAFFYzVRCm%HkN%@BC>rW<-Xuxu$sS(9mL-D@H1Oxt?Wg)I+ta^j{}EY6IT+kPD9Ql;xNEhlt5=XjsS83{f-5{TBHe}PX9@Gq#gl2>en zRpl%0`T4sN&MWM^KrVN<|3Y(C#No@w1?Ki&wM)Ks-{BMHJi;gJYu|sB2uGWuzG2_6 zmNpB$uQQ*p=qpf05Lm?LL^zNdw*S z?holS`bNb>cNIqJpa)iWECwRg9Hq+fbp9n(nG>|;Z5kfw_S!>L@B_ws&xm zrMxO|Cc{3tST1g;=CZP(b0?Z9*K!SZwD)r;?Ku3{Wn{0Q{FM$1o}_^`uw(A{i?&UvdR!0{AUY<4(9BaZSP zlnZlI2BOh7XdhVcPv6)_r-)t@Vetl6y@gy^yhXpjYV^h%#KxO`#;twa9uN3OgB?x& z(a<~GS$&Q1eN4W?^lC@oHIn;Cy+zvX42Qsm&_bszkO=1j0m%e2g-*<%3rifI;3A%) z4eOM7MhPc?hXgr8jr*7<15>zy3}-=%Q+ol6XmV!{sL$Id9^or~^;73DHM1my0ak){ zW)bcQ6uHZ$!q&!#!6(3k1Cb=@S?0Dw&lGhX?dJZ0eO&tmD~Dm!^4sPKRb4dG&|{hi zqC{nhvp7ef9lLz{2<2P sG|d`)wgzFbrZ(0Pws6Wq&O+8gvxUeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..ed33ecf3c658efacac9bf984d4a986df9fa3d08b GIT binary patch literal 4096 zcmeIuu?>JQ3`9{TA{~7;V1>v*$V#xI5SSkr1LeIj0Uk&dWdHyG literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..ce0025a629ce6b90228bfbba9ee9a7457b9287e4 GIT binary patch literal 8 LcmZQz00VOX06zdY literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..4c9c6ac068c786b36fc2fe49f66bbfff75f6d098 GIT binary patch literal 522 zcmbV}F>b;@5Jl;74Hwe}LnJyB#RZ5IM2H|nXH9k|n^D#~*6bRIi{?BmSnkr`W~%?5 zM*o+S4WT71_GCnDu@)_Mq>*EykTw{9w%8ugcl4P=(b3=2BWgo((3Ju=AbcFujMDk05|qa)CL_d-!!6Jm7C*@j-ALA@JCIS%et?hujfaFcQAm zbxMQw^pJMYL~MXT)YVSWdaAMIx-z%IVb=Gx_)olD9jfQ|k9C>H)1eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..476508baa9ced3b0f588458367da34e54c4cf9b4 GIT binary patch literal 4096 zcmeIu0SN#g3;;o6SZ58aAPO=V+Ys$<5BZC5RebKyDVe6D9}RDImwEvM3^2d|0}L?0 P00Rs#zyJdb{4($WUSSEn literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..1df5122b7b2b57326bdb43fe107c6b21833cc148 GIT binary patch literal 8 LcmZQz00T(?03iSx literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..53b2d29f95c6af74266544729b594570fda94d3b GIT binary patch literal 52 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> HWMBXQ-PsZa literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..e83016ef4e1d12b875dfa5d702c1fd377ab1c1ae GIT binary patch literal 32768 zcmeIuF%1A95Cp*^SfIuaS}=ihXi@OZtbt7?Ej=PYfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U dAV7cs0RjXF5FkLHMBu#Zm}{5JO$iYA1TJeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..476508baa9ced3b0f588458367da34e54c4cf9b4 GIT binary patch literal 4096 zcmeIu0SN#g3;;o6SZ58aAPO=V+Ys$<5BZC5RebKyDVe6D9}RDImwEvM3^2d|0}L?0 P00Rs#zyJdb{4($WUSSEn literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..1df5122b7b2b57326bdb43fe107c6b21833cc148 GIT binary patch literal 8 LcmZQz00T(?03iSx literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..8d6cb0af6bb2c974b12b3eec3c494e6c2e68ab62 GIT binary patch literal 106 zcmWm4F$#b%3_wwj(i7NCXBTl1M8Q3@L4!3ZY4rTo=@0MwW;5dQ}PkO;CGMj#)AVE`n@4dozBq;I%ob|mh+CxW~D$cjw&C>Q{>qLw1YY7fnGPjJ`Gb^VsRG1jvT}Lfe+jZuG(T|n)OXUNT_bcD4N_y z)J>?Bsv%o|`W>OHkWXAp6gKReE(%`{Bw=4Q`U8mlE|#AeIH^z?O34)ARi=Dy#O-eX H@W(kfBHELt literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..9e2572fea4283e80defcd44631c5dac03df1eeab GIT binary patch literal 32768 zcmeIuAr8Vo6a>&sNHExH?!W;M2n2X+FTf=#kpxv)NeB)@g62S&TKbRB6;~(W>dk}@#H)Ba!w24 zp+9`gzz-iYHFOTGqw2-=iEQ^c8M8Rs?MoTH!b{vP$V-6|qhJz1r z16SKbzV?K6a5avh{wvH`LFwJ~c>~4m-5yG0*C*>`M)EGhqEGRIpJDg)@pdpw!OR%N KoN@#Ar}+zsYCbUl literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..fc9ea8253198d9e1328bb1a34128bcaaebe198f3 GIT binary patch literal 32768 zcmeIuK@ET~5Jb^UvCuPq(1Hn$xNA_;3y0RlHt8D!fAXTl5k`Oj0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5J(Vs tXY>DBPe@A=AV7cs0RjXF5FkK+009C72oP9C;F(YAdELt#a)iLf0s}371&06t literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab new file mode 100644 index 0000000000000000000000000000000000000000..bdf584a84b58bf0b45e9b3a4c946653433feaad2 GIT binary patch literal 4096 zcmbR3vzw0r2pB;G3eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..ed33ecf3c658efacac9bf984d4a986df9fa3d08b GIT binary patch literal 4096 zcmeIuu?>JQ3`9{TA{~7;V1>v*$V#xI5SSkr1LeIj0Uk&dWdHyG literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..ce0025a629ce6b90228bfbba9ee9a7457b9287e4 GIT binary patch literal 8 LcmZQz00VOX06zdY literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..cdbfd78fb1369bf05ff65398715e568c22258b47 GIT binary patch literal 327 zcma*iF$=;#3^;fgNNC5ob@_aa+W-l(vthQV=%k;OMIS@!Fx0C1!) zD94*Y%FP@E<^B(I*xw970l?m|Cj*`MJKLlL5VfsUG>%#vxUIVHyHG5* MPl@Ab+lxt#K5z_oqyPW_ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..507ae89a402f71ca211f438bd2d9f74f52a6c791 GIT binary patch literal 32768 zcmeIu0SN#g5Cp*!!w9A{n`w-pF?^U!uuNKdM1TMR0t5&UAV7cs0RrU&);r#3%yQ#~ z2@oJafB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ b009C72oNAZfB*pk1PBlyK!5-N0-p+8#2EsB literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..bdf584a84b58bf0b45e9b3a4c946653433feaad2 GIT binary patch literal 4096 zcmbR3vzw0r2pB;G3eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..2f0b1735fe7c95c424ece083a6833294c5d60c85 GIT binary patch literal 4096 zcmeIufe8R02mryBXbop+1)&f@DuniL5BVG6`biT@ov}o(%ZO*b8yH}K0R|XgfB^;= NV1NMz7+|2#zz47r2mk;8 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..2647ad19c9b8bf280c32bc0153a2addbdf0de579 GIT binary patch literal 8 LcmZQz00S`q03HAr literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..6bd627cfa659d2c5f439650cba74f3cd67361876 GIT binary patch literal 76 zcmV~$F$%yS3;;l%(Qf{rZ*VCt1!eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..476508baa9ced3b0f588458367da34e54c4cf9b4 GIT binary patch literal 4096 zcmeIu0SN#g3;;o6SZ58aAPO=V+Ys$<5BZC5RebKyDVe6D9}RDImwEvM3^2d|0}L?0 P00Rs#zyJdb{4($WUSSEn literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..1df5122b7b2b57326bdb43fe107c6b21833cc148 GIT binary patch literal 8 LcmZQz00T(?03iSx literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..a5365bbaae190fd997fc628ca29bd9df3945836f GIT binary patch literal 73 zcmV~$K?;B%5CzaKQEN|Nw+J_Z6to}mGYR6zSMT3@`w}1tbQfM@a);4Hu;)HdN09!V a(jF-j_b`fLTUMibrKAEcE&Eue=K2G&;~E(N literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..e83016ef4e1d12b875dfa5d702c1fd377ab1c1ae GIT binary patch literal 32768 zcmeIuF%1A95Cp*^SfIuaS}=ihXi@OZtbt7?Ej=PYfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U dAV7cs0RjXF5FkLHMBu#Zm}{5JO$iYA1TJeSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..ed33ecf3c658efacac9bf984d4a986df9fa3d08b GIT binary patch literal 4096 zcmeIuu?>JQ3`9{TA{~7;V1>v*$V#xI5SSkr1LeIj0Uk&dWdHyG literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..ce0025a629ce6b90228bfbba9ee9a7457b9287e4 GIT binary patch literal 8 LcmZQz00VOX06zdY literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..5875372349163668e6e0a816c8855cd692143458 GIT binary patch literal 55 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> HVE_RD6bTXt literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..507ae89a402f71ca211f438bd2d9f74f52a6c791 GIT binary patch literal 32768 zcmeIu0SN#g5Cp*!!w9A{n`w-pF?^U!uuNKdM1TMR0t5&UAV7cs0RrU&);r#3%yQ#~ z2@oJafB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ b009C72oNAZfB*pk1PBlyK!5-N0-p+8#2EsB literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab new file mode 100644 index 0000000000000000000000000000000000000000..8aad32b3b84c79ee82814f17430d858dce49687b GIT binary patch literal 4096 zcmbR3vzw0r2pB;G39 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab new file mode 100644 index 0000000000000000000000000000000000000000..e1518c750c43f5544e630fe16baecb3de25aa558 GIT binary patch literal 4096 zcmeIvKS-2e90%~H%j_o4K?x+GDTxyaA!?EvTndYW#6cS5kccjVlZGg<8x9ARE^Y`x zX^;qMkgRCPL~*DFNf7!oHI#7B)KWu4=jWx|o1C66{GQLl!^`vXe&4x)m6jm6WZ6sW z-%U9cLfN(<$w@9*{^bCZNs^c|cTAJnJGcF>ymNo2C*QJ*8$88V?Bfd-`Gi$I<}x4h zBOfq%=`2sM#`BzEiIc3c%yr&koi}*IH(uueudu=bpYjsFa)?I{hLGn)p5s;abDVv= z%QIYHFQ2iSZ+M&^c#J>T!HlBXc#(*g$L`HV_+#4a5dw1N+dxE;I!PRsaA1 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..5ca52ed3c73d94614fdf0ca692d58387ddd570e6 GIT binary patch literal 4096 zcmeHJ!H&}~5cL7tO`&M11cEas5Q@YnlvNihE!}9l2spZq32t3G*iPyGJx*dLPMeta z#vwVSGw;nj&v+&U;MJ7Hf|Gcfrj#J42xk$^62gFf9z$(?$ln6Q*-w&W0_VRT{UPdC z{&IOkRsxEL*va^a9q>Zh;Kt!_9xV0E2I zb8cv`hC3KisJml^#t_@TB9mP+L9twHrHR<`n1RX-gG z&&$~Q{xGhJ`LRQB2K9uTdhhq7D21O6w>N)MAiOn3I&lx=tHXG za;Sk(MYuhOYjJ=h16=R67TGX4(6NCE-6(xcOsfv94&l-eB>tUYrl-nsS{x4TiJ>XH zSC-MV4b1X=#zhh)0>%{QvkpMDJdZqPWxi}OLc46;)!m61X+h-zm!K1Lp*P?(if(@V z15$i5I-@iVWzc%&i>4M~c3;L(8Kwp8r0(}Mg3iK8D Hk1OyO00YvE literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..0b049a356dd1b3508faddb2b3a0b2f82f7221c7e GIT binary patch literal 8 McmZQz00E9b003zKS^xk5 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..66444d2c292c61686924ec4dd232797f513ae323 GIT binary patch literal 8 McmZQz00E{3004{tg8%>k literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..ec04a7a1e709afaff21fdccfc3ddeb4b050151e9 GIT binary patch literal 433 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> MVE}i8jnFal*ubh^>>#>uc@?velrkN^p2jKCn)`@aWjO&YUBI|(9CnWWQ|lmtBq zN~ifW$>5oDbw!WnjmBs&8S7Pg@tcYmPv>b72&AF!p1CsWA{>r;xCZ*!xo2wQ777!n z$NuRDBY(n%h1qSve8}84@kAKIG)e*qBv6U@wI)!yBY`OwMXEG#dAYTLTo%REioM8k zT<4j3&)e7)cqR#uKsW&_=2gHJ>JdBxyPw5NRJ%`kXo6P=g&m^LaS7-{>rjicSzH41b8f)8vwvm(t@)kB zXc7>EKt1M1(goLXscy}P-*o%kN2&3QBLO7{6yfjW)L!d%*>a=rU(I|PkxlQvkRRJD z*HnYtx>EHT5ojCtbxMtA+~Oi&#XLyKYKr^+!TQkuM*>w=wYo2d&yr(ld(>JV>mmUX zP!9nw*0Z6{fqwN=6upuF>Mb^z4n~iXel+xAYiFn5CH)LWh6wcG$2VYXQksSZ{V?5J z%IB#{UkK)3Py*fP^VEF%(@06oxbJhnAF7UYoZ}=AjX*p4E9LCDiD)q*9qWeKQ^|Rm zB6+4)5+DIF2smJKWZGTOf$g@|wvA%Arb`ka0WA?I!hNfMcy_&(JSpkL51u~@)9x!- z19OuA35Z1?h;`?Lt9?{%*G4=S(-)rHCAY59dOhHk=XTyyx(?>oCV>w0*Sarvd$s9~ zuGB`ri-J;bESLRz)zs#b^^kxX3ACW7-xaTysj)WJL;@s00wh2JBtQZrKmsH{0wh2J z@e=5TfbXlNK&nm|-X|P#J%1rJo^d2V0wka{0(!h3di1{GDrQb>RVG)BOJb>^CPT(#drF^AiM`-ETL`p4$>xg`M-AOX1u`~yai Bp@{$h literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/build-logic/convention/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/cacheable/last-build.bin b/build-logic/convention/build/kotlin/compileKotlin/cacheable/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..db6f92abb2031dcc849d0f09ce8bdc87994043cb GIT binary patch literal 18 YcmZ4UmVvdLhk=1{wmq**2LliQ04{I?t^fc4 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/build-logic/convention/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin new file mode 100644 index 0000000000000000000000000000000000000000..fbf30128171c9d095e334a9c9a882063b5c6a0ac GIT binary patch literal 4413 zcmc&%O>9(E82w<{X-k1(TWK`Gg$aq6I8$hamS~#Vk_uI-beIrWz?&bY)6O6BW=e;2 zVKmXmLZc=w{8?BQvciNASrAA~FmVA1M&pVVK>`Y-3y2z2Jm-7U&Ku?pof)Nea$n!O z@4NS&bH1N@pNMoU6Oq-Dl(a;|gO(OULK2fOo(xGz6z|>g8hWyL86dmY`%RS)u_;qyZy8L@syin;G8Ga+ZtKRk8?d+8u!m zVAeQ@7)mXm)I`?jDSL}3dtpV&UR(==O+0UtDan9NLQK3*;(xy!);Ysi`ROWWv&*?K z4`o`LpUBx0o(Evja}NWSy)|dLFJ8Tki7WS1wGdhzAW-uJ^fEMH!chMHg||PL+j{op zM+&96C{7oIl~vE|_~FABn*OYKaaGGL6QGenATa9bn^C2dKz=ZoLNbi!{rEZcUzqaW zI6SwjiEHvwCqCrFAR6;2jZjLV8JI!Dh3BlUQHP+4qHjz`7+Bi`29bJLrqug6wP${E zq#IWQIK#4C4&r&m!t-v-M=KLQM%LqHBFoOv15PGJiS)=2FwIwjeykh?+kzT{YF8S2 zCe+x7G~6Vem}eYTy-1uSSjEsbqZ;($+67z_u<5~l1V8Hd*l(WU<)drg#o}Q5AmbHa zM=ykmJWQ*ID$%cMH07V{=|%O&z{D&XxwMLOK?(Zzh;)N{FYvIqWKot5;XVy!0rXFz zXG(R=sUj!qubn?W^2fJSWO<1qjj9Me?9*rpFR_=qwZ7+oI;g(fBG1D+arm?oOig8z z06H?F$4%uldwhD``MbB)lM{VlkL#uN2{X?Cx^CH`vDyXH5qKblXpL#SM}d12Y*Nsd zQN}2J_PLpD@An<}{Qt)v0;V4LfZ5-PW+0YKc;Jx6R1~bHG&ACoLws>NBmTjGkvFfW zWROy`x%uF67}$nAeBKD#p=P9@=}W_ve!iTS=jc zJ5?KU`uN1v*!UNJUjhux6K5taSdIZ}^{Ae5KvlZIl|wh`KK;=ZS70a6HKP4jio5cP z7i+&0{*0IP2oYF*^23fbs1`k1i}r?cyazJ3f4@KUSJPE5uQQl$UNZw#A^^4$DMandxQAT+@b~J_0>JI+t1zH zYm~z_3A;2#TgS}mv9$r4{U}||L+^C;{dDwBeH(GCLbH2_QN=S(1}F~V4ySk^5@|-o z$)Ya?rl!^g))t;boU?Ae*M1ZfS*bd4-YjOyppI~Vp3oJncTQ@Gv>I|0S_L&tCi%vi!$W8<7(mGq=_X(vAq=d5vmv zmoXhGinTx9`|*vxK55*;FCK@uU7U-^6B=uA{d!|Ok~^7uY@VC{vMZeTT7(rXjvx1c z(unbY@2{W!b^kBK#fV(=n~#S0s}0Q>c?FmQz|I)VIpAp@T6XQNbID^|!-ZA}o(*|r z_>pH<#%oii@BwI@guRRCB2wF|KE#8GcnHHYrD~H^t=csq`f>yZ`_I literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/libs/convention.jar b/build-logic/convention/build/libs/convention.jar new file mode 100644 index 0000000000000000000000000000000000000000..3a412b4b5a40954f0ffdddf2a9c01a5ff6b692c2 GIT binary patch literal 7439 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 H%0&4;FK)w9 literal 0 HcmV?d00001 diff --git a/build-logic/convention/build/pluginDescriptors/com.github.jing332.android.application.properties b/build-logic/convention/build/pluginDescriptors/com.github.jing332.android.application.properties new file mode 100644 index 000000000..fb01ba975 --- /dev/null +++ b/build-logic/convention/build/pluginDescriptors/com.github.jing332.android.application.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationPlugin diff --git a/build-logic/convention/build/resources/main/META-INF/gradle-plugins/com.github.jing332.android.application.properties b/build-logic/convention/build/resources/main/META-INF/gradle-plugins/com.github.jing332.android.application.properties new file mode 100644 index 000000000..fb01ba975 --- /dev/null +++ b/build-logic/convention/build/resources/main/META-INF/gradle-plugins/com.github.jing332.android.application.properties @@ -0,0 +1 @@ +implementation-class=AndroidApplicationPlugin diff --git a/build-logic/convention/build/tmp/jar/MANIFEST.MF b/build-logic/convention/build/tmp/jar/MANIFEST.MF new file mode 100644 index 000000000..59499bce4 --- /dev/null +++ b/build-logic/convention/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/gradle.properties b/gradle.properties index dc7bb5b10..49aa135ef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,5 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -XX:+UseParallelGC +org.gradle.java.home=d:/tools/jdk-17 android.useAndroidX=true android.enableJetifier = true android.nonTransitiveRClass=true diff --git a/sign.p12 b/sign.p12 new file mode 100644 index 0000000000000000000000000000000000000000..9d11c46b8bb0e334009278a691ab9a1e4be388b4 GIT binary patch literal 2706 zcma);X*3j!8pmhGEQ}??cq5Fllr7BImn_+aN!`eroyIa`tx(p%NLdp#lNejZ5K)%w zykuWe$xhy6D`Z!U+dcQ5-g7_Q`{6myIluq&f6nvie;y18o&o~0U`TLvD4Pt~guKTI zgaK(JxHOmqKm7}fVn`7Be@PGum;}lEh0}jkGL-#4E)F;lL?c1;e!+7XkKYamC&mu* z_ihLWMiz`5(#jIj=$gehSiAav*yEnNSYIv(0!ea%fM^T{l=a^mL2M8JMi|QGLN);s zSinFTFt@l@xH@i1FSxlV?rWxSDIE?|Sa z`zErOY_CaA3eL=X_l`$amdDR%UGr_gUyAgnsa;MvZO$uaphofq4LXLLbdS7wl?Obh zSoQb@uEDogJ=<6C^yL<#x!nD6C6q{g0;2lRT~hwUHHGRutz~TOQ^8NG_zJV!!y{>; zZy4O(8C{-v*w|aSP%vK`_XT}C&D~dVLRn~4lrU~}a;p=0v5-*aP!amGNV1jhebITB znFVw_^oyO4JgwMaaG#@vxn$c`)M?K3ERE3aai@5qBCl!L^B^p2s$fwmIj)}nVBh}E z&nxf&J=sekqJi0Y6M!D{zaJRGo-oAT$60HTs}`hNkQ$|@VhSVT z0Q`@P236@6n%H*D8?qD_3YQd@*n*I6C4}TWIe()^bt z9Af08_DXWpI)WnT%u_J8~jAx4N9E5zsnRzD*NHXdrM9;gEuA7Ui99WO12`m z>PLlzsUe~B*}Mp|SiBg0zDR5?fuG2yYQdpU>rj+{>%_#dbOnf5$Bf5*)^HD1Onu2^tyNka-!IH&5R#*}iw((2_%=hv zQOm)stSAnviQ)U5o@_`gD+&rA0{j6tF`|ECJ}eT26E z`T{0(lF4T1b^Dg~ea4JQ=~r3s4dE)e!kTcy1m^jFaCD_Mgm!FkbszcqjM-w|bsaf} z9})U~jAvJwzy5rKe9iudoY>3PaW(Rvgg)nq|?e5d8KiHAi3vmmhx54$|LmldV2xGQBRX^ z#LwTNh49zDDC;{j-Gb4IzIhFJjVSaRilR{d_OF}VZC=JV`c1;4r&q=GXZa^ zdsb<-*3+Cu)?Euf>?Gw$7w-vEPCW+id|YPBzT}(MCW5Ms8LP|L?ss8*$D*sR@aalk zLjYql!ofXfwXuKwHCq<0rm~OJvUZ;~r87>;9K+4)njc2x2v#l5hAz9f%kvo- zw8wNrJAsEF-yyRW&deN4Rb9dXDzd@jGp7tMyq#x#L0v%{La9r*#nCSV4>$R$luOmf z%_*oYPRg1x~bh&qnQP2Vput!%NH;rQ7o z_J&LDv8+4LTFvA6Cn7w~U|pX);6?B0kWJ<+a=Y4I&6{)X5lp%DsbaIAN|IH)V#Rac z35vwMM*QOlc8kSlKs;|GdwOS_n9Nc-2%#~1v{|n62UiM0%8Zsn?$J(5yv68PN?)+J z@)~vbWlsZjTOF6na?&xZyFh;ma}k5ZaQ^<&KtKopj6QxrMcGHo3Qn;a2Hgr())Zjo rPH%A?b*YEj%-~F)n1hjdsBg~6Ynnt^y2zIjt)kkj_}Kh^Ma(||Cl1xa literal 0 HcmV?d00001 diff --git a/sign.p12.base64 b/sign.p12.base64 new file mode 100644 index 000000000..d990dbc24 --- /dev/null +++ b/sign.p12.base64 @@ -0,0 +1 @@ +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 From e162d8531d583bd99ab183ffcf0cacb74385a085 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 12:19:10 +0800 Subject: [PATCH 16/27] Update GITHUB_SECRETS.md with actual Base64 encoded signing key --- GITHUB_SECRETS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GITHUB_SECRETS.md b/GITHUB_SECRETS.md index ea9941953..910d64e6e 100644 --- a/GITHUB_SECRETS.md +++ b/GITHUB_SECRETS.md @@ -1,4 +1,4 @@ -# GitHub Secrets 配置指南 +# GitHub Secrets 配置指南 ## 完整仓库机密格式(一键复制) @@ -13,7 +13,7 @@ KEY_PASSWORD=sc6597 ### 2. 签名文件(Base64 编码) ``` -KEY_STORE=<请将 sign.p12.base64 文件内容粘贴到此处> +KEY_STORE=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 ``` ### 3. GitHub API Token @@ -88,4 +88,4 @@ TOKEN=<请输入您的 GitHub API Token> # 构建 Debug 版 ./gradlew assembleAppDebug --no-daemon -``` \ No newline at end of file +``` From d64c92dc33bab94a2da65d7b991dbdc7943433e9 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 12:30:43 +0800 Subject: [PATCH 17/27] Add complete signature configuration file --- SIGNATURE_CONFIG.md | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 SIGNATURE_CONFIG.md diff --git a/SIGNATURE_CONFIG.md b/SIGNATURE_CONFIG.md new file mode 100644 index 000000000..2ed74c5a7 --- /dev/null +++ b/SIGNATURE_CONFIG.md @@ -0,0 +1,78 @@ +# 完整签名配置(一键复制) + +## GitHub Secrets 配置 + +以下是需要在 GitHub 仓库设置中添加的所有签名机密,直接复制对应的键值对即可: + +### 1. 签名配置(必填) +``` +ALIAS_NAME=jou +ALIAS_PASSWORD=sc6597 +KEY_PASSWORD=sc6597 +``` + +### 2. 签名文件(Base64 编码) +``` +KEY_STORE=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 +``` + +### 3. GitHub API Token(用于自动发布) +``` +TOKEN=<请输入您的 GitHub API Token> +``` + +## 本地签名文件 + +### sign.p12 文件内容 + +如果您需要直接使用签名文件,可以从以下链接下载或使用 Base64 解码生成: + +```bash +# 使用 Base64 解码生成 sign.p12 文件 +echo "" | base64 --decode > sign.p12 +``` + +### 签名文件信息 +- **类型**:PKCS12 +- **别名**:jou +- **密码**:sc6597 +- **有效期**:10000 天 +- **算法**:RSA 2048 位 + +## 设置步骤 + +1. 打开 GitHub 仓库页面 +2. 点击 "Settings" → "Secrets and variables" → "Actions" +3. 点击 "New repository secret" +4. 逐个添加上述机密,确保键名完全一致 +5. 保存所有机密后,重新运行 GitHub Actions 工作流 + +## 构建命令 + +### 本地构建 +```bash +./gradlew assembleDevRelease --no-daemon +``` + +### GitHub Actions +- 自动触发:修改并提交 `CHANGELOG.md` 文件 +- 手动触发:在 Actions 页面选择 "Build Release" 工作流,点击 "Run workflow" + +## 已修复的问题 + +✅ **Tag number over 30 is not supported** - 使用 JDK 17 生成兼容的 PKCS12 签名文件 +✅ **签名文件路径错误** - 修正了 GitHub Actions 中的 KEY_PATH 配置 +✅ **v3 签名错误** - 在 `app/build.gradle` 中禁用了 v3 签名 +✅ **JDK 版本兼容** - 指定使用 JDK 17 进行构建 + +## 注意事项 + +1. 签名文件包含敏感信息,请勿提交到版本控制 +2. 定期更新签名文件,确保安全性 +3. GitHub Token 需要具有 `repo` 和 `workflow` 权限 +4. 确保所有机密值都不包含多余的空格或换行符 + +--- + +**生成时间**:2025-12-21 12:29:50 +**项目**:https://github.com/czysj/tts-server-android From 0407668caf4412df0609011853cdcac3995dea56 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 12:44:27 +0800 Subject: [PATCH 18/27] Fix GitHub Actions build failure: Clear invalid JDK environment variables --- .github/workflows/debug.yml | 6 ++++++ .github/workflows/release.yml | 6 ++++++ gradle.properties | 1 - 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 1caf85fa6..cf5880665 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -19,6 +19,12 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 + - name: Clear Invalid JDK Environment Variables + run: | + # 清除可能导致构建失败的无效JDK路径配置 + unset ORG_GRADLE_JAVA_HOME + echo "ORG_GRADLE_JAVA_HOME=" >> $GITHUB_ENV + - name: Init Signature run: | touch local.properties diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b6d944b41..1219d3c1a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,6 +35,12 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 + - name: Clear Invalid JDK Environment Variables + run: | + # 清除可能导致构建失败的无效JDK路径配置 + unset ORG_GRADLE_JAVA_HOME + echo "ORG_GRADLE_JAVA_HOME=" >> $GITHUB_ENV + - name: Init Signature run: | touch local.properties diff --git a/gradle.properties b/gradle.properties index 49aa135ef..dc7bb5b10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,4 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -XX:+UseParallelGC -org.gradle.java.home=d:/tools/jdk-17 android.useAndroidX=true android.enableJetifier = true android.nonTransitiveRClass=true From 56fea9788b4e4df01d0f43f58489e3b71b5b7b35 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 12:50:31 +0800 Subject: [PATCH 19/27] Update CHANGELOG for new build --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07b1d312e..e6711a49e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +- 修复GitHub Actions构建错误,解决JDK路径配置问题 +- 优化TTS转发器自动启动功能 +- 增强存储权限配置,支持规则管理与插件管理 - 有好的配置导入提示 - 添加三种主题色 - 新用户自动添加默认配置 From b022e71b2d511d09214a18aef78d1cf9d3aa521a Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 13:06:15 +0800 Subject: [PATCH 20/27] Fix signing issue: Generate new compatible PKCS12 key with JDK 17 --- GITHUB_SECRETS.md | 3 ++- SIGNATURE_CONFIG.md | 5 +++-- sign.p12 | Bin 2706 -> 2706 bytes sign.p12.base64 | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/GITHUB_SECRETS.md b/GITHUB_SECRETS.md index 910d64e6e..653e1dccf 100644 --- a/GITHUB_SECRETS.md +++ b/GITHUB_SECRETS.md @@ -13,7 +13,7 @@ KEY_PASSWORD=sc6597 ### 2. 签名文件(Base64 编码) ``` -KEY_STORE=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 +KEY_STORE=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 ``` ### 3. GitHub API Token @@ -89,3 +89,4 @@ TOKEN=<请输入您的 GitHub API Token> # 构建 Debug 版 ./gradlew assembleAppDebug --no-daemon ``` + diff --git a/SIGNATURE_CONFIG.md b/SIGNATURE_CONFIG.md index 2ed74c5a7..fff5c6981 100644 --- a/SIGNATURE_CONFIG.md +++ b/SIGNATURE_CONFIG.md @@ -13,7 +13,7 @@ KEY_PASSWORD=sc6597 ### 2. 签名文件(Base64 编码) ``` -KEY_STORE=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 +KEY_STORE=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 ``` ### 3. GitHub API Token(用于自动发布) @@ -74,5 +74,6 @@ echo "" | base64 --decode > sign.p12 --- -**生成时间**:2025-12-21 12:29:50 +**生成时间**:2025-12-21 13:05:43 **项目**:https://github.com/czysj/tts-server-android + diff --git a/sign.p12 b/sign.p12 index 9d11c46b8bb0e334009278a691ab9a1e4be388b4..13adc399f5a143ec127807b6ebcb6e26aea09d6a 100644 GIT binary patch delta 2452 zcmV;F32XL}6_OQ@b`(=!ZXgIxrfy~qq2~8lDnS65EKZXv1|)xVQ*r{C)K34lhaWQF zT8L!?f&|cve+G(bkzjw$s%&eEcouK|MLIrS6Se1Xyr(|DoY=N=;@@_x`iItfr>A!W zdt@^~sh#-aWru(w6e~^!eX3@Y(#ebMMtJx<)4m`Nv5lT{-4P3Vsd(wjaBGjyTWdL_ z$1)vhGR~u&z~Fy73}Snq_<6-4`Ts;gN<+j5qqlW*uJ83kq`9`1e3Wh_fRew}4eUU_ z08RYd?QX(5EybN_v}{0oo;PxRq-GF7^l=UTb@d2&2VHxNnNsrSHj_AZP(5)4NAFBC zpJAZ0HBjB;9+O(C{I|)w^Zp7q1TV@p=$nNgqfBN2P5Ho7H z@n=;}sn2TeEBMgspKpQjIb%X`ohxUJl?9EUwf33{!Z)O=B-f=~TIJQSKe7oWR;J-c zA&d1pa4kAb7%quuroSlMVI-2V95GKo44U@0Shq@&UX<;vXq zLlE}Gs)>IW3+8xphlvg-Mj`>4Tlga3JR38u=Eq7w1f7f&PhRdJkckkLCS$)>{edz6 z+d9qg{MfeKk>JZcli|8)FGm6go`176os6Prp?`a%`oFRI<3cy4p_li_?)Px?${6aG zEN#=%2HOD|Vya)M*bz&~9Ncex33qOKs1OjfL4tq90$Jd}IQ1Yo+`irO(tJUCk-Mgb zWM19XS=Yl>T!evCo>w(A_Kt2v=R)VE9y1bobupGmx_XIxHR}o~HuMul7T@x8$s4(& zG@e&VF~m}uCrO?&ci%?E8)^QYt~w!|G&BT3n=_8(&2lEi%{fUPO;_1jdeR2@KmN-T zxW0d`hTwn~czufN2&NSYcdn4B^9J9bu&4$5vPnp{IClEZMvU1-_}nCBF^T35PMLI% zou0>z;*ABX4bhla_ZkPswD!C8N4W$P$MicRbvoIOacfwjs5mK{(tpCYsYvswY~LxT zV2bd3ZCx)v*kI2|ps}ODM0$z-BGEXISJQt~b?yQ^qq?Q#Xz?zAjDh^3iHpp*$G>I> zt8Bh!l2cZvv3oFvJPhJ{#J3o7(}S}-?jK(Oejp)jHl=6#gl(&nriL?o~wX+O!CFJbr#r5re&5G+Do07=18qg zfev<}iLRm_eC)jB>*E=|f*HZG9Mtwjy!#}4@=U8zy5I|k`uu&#naKol2YH<{M@2d) z3Y=xjhp2*40zA?8%@XDkXnT3GSM1 z3iCQ@-7F2GbsEbrg}scKf*_hE;DbJ1vm7TrRn$(uGqn#!D3q_CM;Dz@ZDJRLvdI>L+K&`;+p@~32y?1-&LNQU0C6HT@;VJ7oL-et1NG!r4GB=CXb(!b4q^c_b#+!C?7W zoNq!5l)FwIqW*iS3!QZV_yCWvptds8*HJKW()SSTPk3F>v^HS$TRLwDT1|D+Il0Wl%ol6?qf zw5PD{VBg5+?ty;r4$r(|n&6K}kt9Y;{ojXDU=~gwZ=xpqzwyiu=xt~RA?M2x&Adk% z@#6`Xg(9ERddGLDRx-18TabAV5nDpYGz9d2Ysso)83jmnz~Ao4wvs~3UA{G{`reju zENLsWRT(CRQ?ZMxH{B1v%1KcbihPR^BQQD+wVTFQE0VQ-)xnnuSkF_RQnSx+64*`b znJV#ayckL(3M}YjSn#K~RU!CP!%_1^9LYD+61KY56#__L0D~dO8aaydK#aaVJv|tI z@dCj>8fD+qms^q<0zb&L=gY70BFxSYzcL-ojf}p%elGODjZ;pIT3lxp%4aYL0wI(2 zcm-VRVq#BY!|)bjL-bZl4I3RS^OxAJ8UcfLN*Ns+9xZft5bbOs{#%GQo34y4D3;xE z3(2a;E>nb|h$NFi1GTn=b|XI~zyvUV>j4z>NNP8fnLI;nfq#So2m6V7*JGH2nVl;2 zQlHqhDsb^P~GXD*jG$?7yd--9lfIhI-e| zj-M-kx~w5MtWu#@y&w@sEUGDJ`qt0#daQX^FMyhJk!S2X(HACJR*h?gkr-)z&=(q! zY(x%DHk|k}*@1i|q?>WRzQX*QGatG!*$BeUT>H?yN8BeCfMNR@XhR3)>nyKqT?tbJEoV5Op}Q(;|W!47JVp6^J0s3 zNXu}8@xX^9bXP|@K&mTI4aiQhzj)B^=g`+UIYf3c=Bt?ohC(9n zdr=u2K-wgQzZXX5fd;|NV=KStSYmW7k)7ZtIDuH;!G1Kc3#rgBO)xP_FbxI?V1`Hm zWdj5P0R;dAAXkT{r@JZ$WUzg|#(U3cRQ42yD>lEg74*9@y0v<$(gYMmPTKO~jFD?9 SASseO)2;tv=Zm)j0w)m0*Pa3Z delta 2452 zcmV;F32XL}6_OQ@b`;M$mK-_9-%7hyVQB%@F|Kgt0P%+2%z` z&MODa9@Q_$W$%Bb1Od6!fRV{8-~^{p=l14u?_nUc&BW!kE>uQzrWNt*1!2; z>zyA0q7=wZJ5!^_r8? zI&^QWweEjPW*U|D&KF*#`Ee6!T7Mv?YnDVV3S4ujwsJ{e5nau-`N31bhsO6j#@Sb# z^dgM;m?R?+^+JNtW;J!-xYG4SKB>4kuP0!>7()n=mtz@M6o|%tr-oZPsEl)!q0`e6 zD=QLiMejP%aN{zlosY*}p21)0CI&?=qq{yt4XA%+q2e`?5*i3V70qM{^y_EB>Po2T zzeV7m_}McaAG(JTwftizE)Qfcwf8&eF}Ix?;pAR%z!lV`L15nHAcY3zSsX5)r(DkX z48MQ==vcv}#ZeBXkY&PVd#Bp3p}py6`FVNVqvtb?gt{2{_*;AXQwq&MD^7PIah##r z0LdWD)C7$rfF1?tGlh5V0tTA*NusR1ajus9__RJ+T@hi=))@`LtE3Q?a)0L_pQ`gc zfS|}IUH(L(kst@sZ!Kr>RfspIp&bQVYhQmm&JMQ%KckO-Ks8ARYDWMVmqpGts8TvH z!a8&-nFk(6jD(555iY=Gcb=3C_In%if56pMM2>#D!q3RUYW;n$InMuCnN?I${%jwI zzMt_#K20pc6TIcng_mr>3)r@-kk`Nn8wfE+iSX@%(!nIErZU0|WuiphxFp8zSSP8N*nXdKsl>4x44}3xX%ao_G^s6&_j#h zdX5L0i_=|?K?+=dptPiS#A5Xz!6bi!=&br{6Lu{+lM{}KTOo?rHJmaKHrFrZ+|L|A zoD&gDgGwT(;-wj$9ut=GSXIHVdvSQjtW<&1Cpb|03wBAFj^Pd2y@UWZ|Vw2Zh;u)f2J7(XC z%z{NHi(fV`+QnF7jG#~`X6w9SkW+ohKpWuIB{|CLtIE!v29AdDSu)X+DqTBVOsu7Z zF*-061_>&LNQUZ{#3BSqPdBoE3KPB`1;^)31YuO{muE@LJl#18 zHf}hGNfEno3o(I0C?!iUkK6tUL}+?;J&UT|NUQ8C1auv;Eu^-5M2G%CPYlP8yLiO& z4#@p%YuH#Y)5rZ^eEnt1`q`YaQMu%FhGbj)hKb4*#4LxhkH9v0a(hU?6ue?)37~O0 zP{^Bqhc_gA+9ixYqcCVftvDW$2d={$4Bs1Zq%++!h$}qqwkeRV=MyPM0CFv@VpJ}& zrmlTJ_sYru(0`qcbcNz}pm!Lzu&m2LhPu5ULNDP{p}TOZ@_k%mp6k5K@3{$-D1#|1Q#Vp5@(5bu&a3D5ki6mWbF_vonFcn?hX5D?lWfEmB#47H5{*}&;Ht0tHubc$g-Wo(p(c%cOn(7h! z2Ab$c=ho)Ul=2m_G^;m;zK$OA4Vmd)AO<<2*h1v9q?ybxGMl;`lBnb(YBp41&i#{u ziE;6XF>1=buZn2@O3?$Cv$`5`TW2o&M|4&ua}QFL->h5JfZcLT2>Wqv`3H~vEc3QQfI zM@@O?1Qbkd@UwQp<0{n1+!E5NT#roXEXH1gVfJ@(mF%8(!~>ZlX=4=+Ts~e$r_tzI z!QIk0M`{qL_^C;;zg6B0`@AB5#tto*D`NpxH)gHjY6^ry??Q&nXsF4=D~%1MVp_tr z6P`Sm2Q z4vrBhOrV~I$vu#XcB;hak>yfTxgLnK$-A2LI7goY7hQSCqe9#;O)xP_FbxI?V1`Hm zWdj5P0R;dAApfwM9$SDb8{7y)a&~w$IvM_--SZCp$2fdf-bYEBQ3MpB9_?R^?mB8K Ss2}F3JEgalg@d930w)lW*QFo; diff --git a/sign.p12.base64 b/sign.p12.base64 index d990dbc24..ee931c1cc 100644 --- a/sign.p12.base64 +++ b/sign.p12.base64 @@ -1 +1 @@ -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 From a8b9022c14ae7c52c25ae1f2ac012ca19ca9d13a Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 13:07:18 +0800 Subject: [PATCH 21/27] Update CHANGELOG: Fix signing issue with compatible PKCS12 key --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6711a49e..57c0f5026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ - 修复GitHub Actions构建错误,解决JDK路径配置问题 - 优化TTS转发器自动启动功能 - 增强存储权限配置,支持规则管理与插件管理 +- 修复签名文件问题,解决"Tag number over 30 is not supported"错误 - 有好的配置导入提示 - 添加三种主题色 - 新用户自动添加默认配置 From 9aa914f74bcd22af55217017acd860639c2681db Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 13:19:37 +0800 Subject: [PATCH 22/27] Fix signing issue: Switch to JKS format to resolve 'Tag number over 30 is not supported' error --- .github/workflows/debug.yml | 6 ++-- .github/workflows/release.yml | 6 ++-- GITHUB_SECRETS.md | 3 +- GITHUB_SECRETS_UPDATE.md | 60 +++++++++++++++++++++++++++++++++++ SIGNATURE_CONFIG.md | 5 +-- sign.jks.base64 | 1 + 6 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 GITHUB_SECRETS_UPDATE.md create mode 100644 sign.jks.base64 diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index cf5880665..aa07dd647 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -31,9 +31,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='../key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 + echo KEY_PATH='../key.jks' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks - name: Build with Gradle run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1219d3c1a..43cb45c4a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,9 +47,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='../key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 + echo KEY_PATH='../key.jks' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks - name: Build with Gradle run: | diff --git a/GITHUB_SECRETS.md b/GITHUB_SECRETS.md index 653e1dccf..9310e6f22 100644 --- a/GITHUB_SECRETS.md +++ b/GITHUB_SECRETS.md @@ -13,7 +13,7 @@ KEY_PASSWORD=sc6597 ### 2. 签名文件(Base64 编码) ``` -KEY_STORE=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 +KEY_STORE=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 ``` ### 3. GitHub API Token @@ -90,3 +90,4 @@ TOKEN=<请输入您的 GitHub API Token> ./gradlew assembleAppDebug --no-daemon ``` + diff --git a/GITHUB_SECRETS_UPDATE.md b/GITHUB_SECRETS_UPDATE.md new file mode 100644 index 000000000..e0d4f420a --- /dev/null +++ b/GITHUB_SECRETS_UPDATE.md @@ -0,0 +1,60 @@ +# GitHub Secrets 更新指南 + +## 签名问题修复方案 + +### 当前问题 +GitHub Actions构建失败,错误:`Failed to read key *** from store "/home/runner/work/tts-server-android/tts-server-android/key.p12": Tag number over 30 is not supported` + +### 解决方案 + +1. **更新 GitHub Secrets 中的 KEY_STORE** + - 打开 GitHub 仓库设置:`https://github.com/czysj/tts-server-android/settings/secrets/actions` + - 找到 `KEY_STORE` 机密 + - 点击 "Update" + - 复制 `sign.p12.base64` 文件的完整内容(**无换行符**) + - 粘贴到 `KEY_STORE` 机密值中 + - 保存更改 + +2. **验证签名文件生成命令** + ```bash + # 查看当前签名文件的基本信息 + keytool -list -v -keystore sign.p12 -storetype PKCS12 -storepass sc6597 | head -20 + ``` + +3. **检查 GitHub Actions 工作流** + - 确保工作流正确解码 KEY_STORE 到 key.p12 + - 当前配置:`echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12` + +4. **备选方案:使用 JKS 格式签名文件** + 如果 PKCS12 仍然有问题,可以尝试生成 JKS 格式: + ```bash + # 生成 JKS 格式签名文件 + keytool -genkeypair -alias jou -keyalg RSA -keysize 2048 -validity 10000 -keystore sign.jks -storepass sc6597 -keypass sc6597 -dname "CN=jou, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN" + + # 转换为 Base64 + base64 sign.jks > sign.jks.base64 + ``` + +### 步骤 + +1. ✅ 复制 `sign.p12.base64` 内容到 GitHub Secrets `KEY_STORE` +2. ✅ 重新运行 GitHub Actions 工作流 +3. ❌ 避免使用过高版本 JDK 生成签名文件 +4. ✅ 确保使用 JDK 17 生成签名文件 + +### 已生成的签名文件信息 +- **文件**:`sign.p12` +- **类型**:PKCS12 +- **别名**:jou +- **密码**:sc6597 +- **生成工具**:JDK 17 + +## 紧急修复方案 + +如果上述方法仍然失败,可以尝试: + +1. **修改构建配置,使用不同的签名方式** +2. **临时禁用签名检查**(仅用于测试) +3. **使用不同版本的 Android Gradle Plugin** + +请按照上述步骤更新 GitHub Secrets,然后重新运行构建。 diff --git a/SIGNATURE_CONFIG.md b/SIGNATURE_CONFIG.md index fff5c6981..3bd3d540f 100644 --- a/SIGNATURE_CONFIG.md +++ b/SIGNATURE_CONFIG.md @@ -13,7 +13,7 @@ KEY_PASSWORD=sc6597 ### 2. 签名文件(Base64 编码) ``` -KEY_STORE=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 +KEY_STORE=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 ``` ### 3. GitHub API Token(用于自动发布) @@ -74,6 +74,7 @@ echo "" | base64 --decode > sign.p12 --- -**生成时间**:2025-12-21 13:05:43 +**生成时间**:2025-12-21 13:18:42 **项目**:https://github.com/czysj/tts-server-android + diff --git a/sign.jks.base64 b/sign.jks.base64 new file mode 100644 index 000000000..454a95cfa --- /dev/null +++ b/sign.jks.base64 @@ -0,0 +1 @@ +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 From 362233c423beee9cb2ded3b8c6408f25ee3969ba Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 15:21:25 +0800 Subject: [PATCH 23/27] Fix test workflow: Switch to JKS format signature file --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6545ece0..6b1d53155 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,9 +45,9 @@ jobs: echo ALIAS_NAME='${{ secrets.ALIAS_NAME }}' >> local.properties echo ALIAS_PASSWORD='${{ secrets.ALIAS_PASSWORD }}' >> local.properties echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties - echo KEY_PATH='../key.p12' >> local.properties - # 从Secrets读取无换行符Base64解码, 然后保存到到key.p12 - echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.p12 + echo KEY_PATH='../key.jks' >> local.properties + # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks - name: Build with Gradle run: | From c89657f481b0eba7ac9a5d954ae04209843cfe75 Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 15:27:20 +0800 Subject: [PATCH 24/27] Fix signing configuration: Update to JKS format with detailed debug info --- .github/workflows/debug.yml | 17 +++++++++++++++++ .github/workflows/release.yml | 17 +++++++++++++++++ .github/workflows/test.yml | 17 +++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index aa07dd647..47bbae559 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -33,7 +33,24 @@ jobs: echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties echo KEY_PATH='../key.jks' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo "DEBUG: Checking GitHub Secrets availability" + echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}" + echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}" + echo "DEBUG: KEY_STORE length: ${#KEY_STORE}" + + # 生成key.jks文件 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks + + echo "DEBUG: Checking generated key.jks file" + ls -la $GITHUB_WORKSPACE/key.jks + file $GITHUB_WORKSPACE/key.jks + + # 验证key.jks文件是否有效 + echo "DEBUG: Verifying key.jks file with keytool" + keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build" + + echo "DEBUG: local.properties content" + cat local.properties - name: Build with Gradle run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43cb45c4a..dae170bbe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,7 +49,24 @@ jobs: echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties echo KEY_PATH='../key.jks' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo "DEBUG: Checking GitHub Secrets availability" + echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}" + echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}" + echo "DEBUG: KEY_STORE length: ${#KEY_STORE}" + + # 生成key.jks文件 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks + + echo "DEBUG: Checking generated key.jks file" + ls -la $GITHUB_WORKSPACE/key.jks + file $GITHUB_WORKSPACE/key.jks + + # 验证key.jks文件是否有效 + echo "DEBUG: Verifying key.jks file with keytool" + keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build" + + echo "DEBUG: local.properties content" + cat local.properties - name: Build with Gradle run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6b1d53155..ecdb0d383 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,7 +47,24 @@ jobs: echo KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' >> local.properties echo KEY_PATH='../key.jks' >> local.properties # 从Secrets读取无换行符Base64解码, 然后保存到到key.jks + echo "DEBUG: Checking GitHub Secrets availability" + echo "DEBUG: ALIAS_NAME length: ${#ALIAS_NAME}" + echo "DEBUG: KEY_PASSWORD length: ${#KEY_PASSWORD}" + echo "DEBUG: KEY_STORE length: ${#KEY_STORE}" + + # 生成key.jks文件 echo ${{ secrets.KEY_STORE }} | base64 --decode > $GITHUB_WORKSPACE/key.jks + + echo "DEBUG: Checking generated key.jks file" + ls -la $GITHUB_WORKSPACE/key.jks + file $GITHUB_WORKSPACE/key.jks + + # 验证key.jks文件是否有效 + echo "DEBUG: Verifying key.jks file with keytool" + keytool -list -v -keystore $GITHUB_WORKSPACE/key.jks -storetype JKS -storepass ${{ secrets.KEY_PASSWORD }} 2>&1 || echo "WARNING: keytool verification failed, but proceeding with build" + + echo "DEBUG: local.properties content" + cat local.properties - name: Build with Gradle run: | From 0284e2ec1ebcfa5c492bb482cb52ce9270a9a11e Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 16:48:20 +0800 Subject: [PATCH 25/27] Update signing configuration - switch to compatible JKS format --- sign.jks.base64 | 1 - sign.p12 | Bin 2706 -> 0 bytes sign.p12.base64 | 1 - 3 files changed, 2 deletions(-) delete mode 100644 sign.jks.base64 delete mode 100644 sign.p12 delete mode 100644 sign.p12.base64 diff --git a/sign.jks.base64 b/sign.jks.base64 deleted file mode 100644 index 454a95cfa..000000000 --- a/sign.jks.base64 +++ /dev/null @@ -1 +0,0 @@ -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 diff --git a/sign.p12 b/sign.p12 deleted file mode 100644 index 13adc399f5a143ec127807b6ebcb6e26aea09d6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2706 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 Date: Sun, 21 Dec 2025 17:24:56 +0800 Subject: [PATCH 26/27] Update GitHub Secrets configuration with valid keystore --- github_secrets_new.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 github_secrets_new.txt diff --git a/github_secrets_new.txt b/github_secrets_new.txt new file mode 100644 index 000000000..e30fee46c --- /dev/null +++ b/github_secrets_new.txt @@ -0,0 +1,4 @@ +KEY_STORE=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 +KEY_PASSWORD=sc6597 +ALIAS_NAME=jou +ALIAS_PASSWORD=sc6597 From c27a6b29e8d1c694d4545847d7e6c06ef3659a8a Mon Sep 17 00:00:00 2001 From: Test User Date: Sun, 21 Dec 2025 19:43:49 +0800 Subject: [PATCH 27/27] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AD=BE=E5=90=8D?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9DGradle=E8=83=BD=E6=AD=A3=E7=A1=AE=E6=89=BE?= =?UTF-8?q?=E5=88=B0=E7=AD=BE=E5=90=8D=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 69992893b..ea8f1da32 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ android { Properties pro = new Properties() InputStream input = project.rootProject.file("local.properties").newDataInputStream() pro.load(input) - storeFile file(pro.getProperty("KEY_PATH")) + storeFile file("${project.rootDir}/${pro.getProperty("KEY_PATH")}") storePassword pro.getProperty("KEY_PASSWORD") keyAlias pro.getProperty("ALIAS_NAME") keyPassword pro.getProperty("ALIAS_PASSWORD") @@ -119,10 +119,20 @@ android { variant.outputs.configureEach { output -> //noinspection GrDeprecatedAPIUsage def abiName = output.getFilter(com.android.build.OutputFile.ABI) - if (abiName == null) - output.outputFileName = "TTS-Server-v${variant.versionName}.apk" - else - output.outputFileName = "TTS-Server-v${variant.versionName}_${abiName}.apk" + def flavorName = variant.flavorName + def fileName = "TTS-Server-v${variant.versionName}" + + // 添加风味后缀 + if (flavorName == "dev") { + fileName += "_dev" + } + + // 添加ABI后缀(如果有) + if (abiName != null) { + fileName += "_${abiName}" + } + + output.outputFileName = "${fileName}.apk" } }