diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml index cb97880..da09bf0 100644 --- a/.github/workflows/build-apk.yml +++ b/.github/workflows/build-apk.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4.0.0 with: distribution: "temurin" java-version: 17 @@ -30,7 +30,7 @@ jobs: echo "sdk.dir=${ANDROID_HOME}" > local.properties - name: Setup Gradle - uses: gradle/gradle-build-action@v2.9.0 + uses: gradle/gradle-build-action@v2.10.0 - name: Build with Gradle run: | @@ -46,42 +46,41 @@ jobs: KEY_ALIAS: ${{ secrets.SIGN_ALIAS }} KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }} - - name: Install aapt - run: sudo apt-get update && sudo apt-get install -y aapt - - name: Set Shamrock Version run: | - apk_file=${{ env.APK_FILE_ALL }} - apk_dump=$(aapt dump badging "$apk_file") - version_name=$(sed -n "s/.*versionName='\([^']*\)'.*/\1/p" <<< "$apk_dump") - echo "SHAMROCK_VERSION=$version_name" >> $GITHUB_ENV + version_name_all=$(basename -s .apk "${{ env.APK_FILE_ALL }}") + version_name_arm64=$(basename -s .apk "${{ env.APK_FILE_ARM64 }}") + version_name_x86_64=$(basename -s .apk "${{ env.APK_FILE_X86_64 }}") + echo "SHAMROCK_VERSION_ALL=$version_name_all" >> $GITHUB_ENV + echo "SHAMROCK_VERSION_ARM64=$version_name_arm64" >> $GITHUB_ENV + echo "SHAMROCK_VERSION_x86_64=$version_name_x86_64" >> $GITHUB_ENV - name: Show Artifacts SHA256 run: | echo "### Build Success :rocket:" >> $GITHUB_STEP_SUMMARY echo "|ABI|SHA256|" >> $GITHUB_STEP_SUMMARY echo "|:--------:|:----------|" >> $GITHUB_STEP_SUMMARY - all=($(sha256sum ${{ env.APK_FILE_ALL }})) + all=($(sha256sum "${{ env.APK_FILE_ALL }}")) echo "|all|$all" >> $GITHUB_STEP_SUMMARY - arm64=($(sha256sum ${{ env.APK_FILE_ARM64 }})) + arm64=($(sha256sum "${{ env.APK_FILE_ARM64 }}")) echo "|arm64|$arm64" >> $GITHUB_STEP_SUMMARY - x86_64=($(sha256sum ${{ env.APK_FILE_X86_64 }})) + x86_64=($(sha256sum "${{ env.APK_FILE_X86_64 }}")) echo "|x86_64|$x86_64" >> $GITHUB_STEP_SUMMARY - name: Upload ALL APK RELEASE uses: actions/upload-artifact@v3 with: - name: Shamrock-v${{ env.SHAMROCK_VERSION }}-all - path: ${{ env.APK_FILE_ALL }} + name: "${{ env.SHAMROCK_VERSION_ALL }}" + path: "${{ env.APK_FILE_ALL }}" - name: Upload ARM64 APK RELEASE uses: actions/upload-artifact@v3 with: - name: Shamrock-v${{ env.SHAMROCK_VERSION }}-arm64 - path: ${{ env.APK_FILE_ARM64 }} + name: "${{ env.SHAMROCK_VERSION_ARM64 }}" + path: "${{ env.APK_FILE_ARM64 }}" - name: Upload X86_64 APK RELEASE uses: actions/upload-artifact@v3 with: - name: Shamrock-v${{ env.SHAMROCK_VERSION }}-x86_64 - path: ${{ env.APK_FILE_X86_64 }} + name: "${{ env.SHAMROCK_VERSION_x86_64 }}" + path: "${{ env.APK_FILE_X86_64 }}" diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt index 944893a..b36f4d2 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt @@ -2,6 +2,7 @@ package moe.fuqiuluo.qqinterface.servlet +import androidx.core.text.HtmlCompat import com.tencent.common.app.AppInterface import com.tencent.mobileqq.app.BusinessHandlerFactory import com.tencent.mobileqq.app.QQAppInterface @@ -805,12 +806,13 @@ internal object GroupSvc: BaseSvc() { senderId = obj["u"].asLong, publishTime = obj["pubt"].asLong, message = GroupAnnouncementMessage( - text = obj["msg"].asJsonObject["text"].asString, - images = obj["msg"].asJsonObject["pics"].asJsonArrayOrNull?.map { +// text = obj["msg"].asJsonObject["text"].asString, + text = fromHtml(obj["msg"].asJsonObject["text"].asString), + images = obj["msg"].asJsonObject["pics"].asJsonArrayOrNull?.map { pic -> GroupAnnouncementMessageImage( - id = it.jsonObject["id"].asString, - width = it.jsonObject["w"].asString, - height = it.jsonObject["h"].asString, + id = pic.jsonObject["id"].asString, + width = pic.jsonObject["w"].asString, + height = pic.jsonObject["h"].asString, ) } ?: ArrayList() ) @@ -821,6 +823,14 @@ internal object GroupSvc: BaseSvc() { } } + private fun fromHtml(htmlString: String): String { + return HtmlCompat + // 特殊处理 ,目的是替换为换行符,否则会被fromHtml忽略并移除 + .fromHtml(htmlString.replace(" ", "[shamrockplaceholder]"), HtmlCompat.FROM_HTML_MODE_LEGACY) + .toString() + .replace("[shamrockplaceholder]", "\n") + } + @OptIn(ExperimentalSerializationApi::class) suspend fun uploadImageTroopNotice(image: String): Result { val file = FileUtils.parseAndSave(image)