Skip to content

Commit

Permalink
Merge pull request #53 from ArcticFoxPro/master
Browse files Browse the repository at this point in the history
默认使用浏览器接管下载意图、使用 Kotlin Serialization 替换 Google Gson、上游更新
  • Loading branch information
klxiaoniu authored Jun 13, 2024
2 parents 429278d + 2d3dfd2 commit 9a5f912
Show file tree
Hide file tree
Showing 10 changed files with 369 additions and 289 deletions.
46 changes: 35 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ QQ 版本列表实用工具的源代码依据经过开源促进会([Open Sourc

## 注意事项:使用前须知

- 请确保您在使用前充分审慎阅读了[用户协议](/UserAgreement.md)。鉴于 QQ 测试版可能存在不可预知的稳定性问题,您在下载及使用该测试版本之前,必须明确并确保自身具备足够的风险识别和承受能力。根据相关条款,您使用本软件时应当已了解并同意,因下载或使用 QQ 测试版而可能产生的任何直接或间接损失、损害以及其他不利后果,均由您自行承担全部责任。
> [!WARNING]
> 请确保您在使用前充分审慎阅读了[用户协议](/UserAgreement.md)。鉴于 QQ 测试版可能存在不可预知的稳定性问题,您在下载及使用该测试版本之前,必须明确并确保自身具备足够的风险识别和承受能力。根据相关条款,您使用本软件时应当已了解并同意,因下载或使用 QQ 测试版而可能产生的任何直接或间接损失、损害以及其他不利后果,均由您自行承担全部责任。
- QQ 版本列表实用工具提供的所有服务及内容均旨在促进合法的学习交流活动,严禁用户将其用于任何非法、违规或侵犯他人权益的目的。敬请所有用户严格遵守相关法律法规,在使用本应用的过程中秉持合法、正当与诚信原则,切勿涉足任何违法用途。如有违反,相关法律责任将由行为人自负,同时,本应用亦保留采取一切必要措施的权利,包括但不限于暂停或终止服务,并追究其法律责任。
> [!WARNING]
> QQ 版本列表实用工具提供的所有服务及内容均旨在促进合法的学习交流活动,严禁用户将其用于任何非法、违规或侵犯他人权益的目的。敬请所有用户严格遵守相关法律法规,在使用本应用的过程中秉持合法、正当与诚信原则,切勿涉足任何违法用途。如有违反,相关法律责任将由行为人自负,同时,本应用亦保留采取一切必要措施的权利,包括但不限于暂停或终止服务,并追究其法律责任。
## 简介

Expand All @@ -54,19 +56,19 @@ QQ 版本列表实用工具 for Android 是一个使用 Material 3 组件库构

### 版本列表

在进入 QQ 版本列表实用工具时,您首先会看到一系列显示“版本:x.y.z 大小:xxx MB”的卡片,这些卡片组成的列表即为 Android QQ 的版本列表,卡片列表展示了已经或即将发布的 Android QQ 版本。版本信息来源:https://im.qq.com/rainbow/androidQQVersionList
在进入 QQ 版本列表实用工具时,您首先会看到一系列显示“x.y.z””xxx MB”的卡片,这些卡片组成的列表即为 Android QQ 的版本列表,卡片列表展示了已经或即将发布的 Android QQ 版本。版本信息来源:https://im.qq.com/rainbow/androidQQVersionList

通过点击卡片右侧箭头按钮,可展开卡片以查阅到更为详尽的信息。

默认情况下,长按卡片文字会弹出展示卡片原始 Json 字符串的对话框,长按对话框文字可选择复制字符串内容。可在设置中关闭此功能。
默认情况下,长按卡片文字会弹出展示卡片原始 JSON 字符串的对话框,长按对话框文字可选择复制字符串内容。可在设置中关闭此功能。

### 猜版
### 猜版 Extended

在 Android QQ - 首页侧滑菜单 - 设置 - 关于QQ与帮助 中可得知,Android QQ 的版本号通常为 `x.y.z.nnnnn`。其中 `x.y.z` 在这里被称为“主版本号”,而 `nnnnn` 被称为“小版本号”。

在 QQ 版本列表实用工具界面,点击右下角放大镜图标按钮即可进入“猜版 for Android”对话框。
在 QQ 版本列表实用工具界面,点击右下角放大镜图标浮动按钮即可进入“猜版 Extended”对话框。

对话框含有三个输入框,分别是“主版本号”、“版本”和“小版本号”。“主版本号”已经预填入了版本列表显示的最新版本号,也可自行修改。
对话框含有三个输入框,分别是“主版本号”、“猜版类型”和“小版本号”。“主版本号”已经预填入了版本列表显示的最新版本号,也可自行修改。

- 若选择猜正式版,无需填写小版本号,软件将尝试访问以下链接:
- `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android_<主版本号>_64.apk`
Expand Down Expand Up @@ -117,8 +119,18 @@ QQ 版本列表实用工具 for Android 是一个使用 Material 3 组件库构
- `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android_<主版本号><自定义后缀>.apk`
- `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android_<主版本号>.<小版本号><自定义后缀>.apk`

> [!TIP]
> QQ 版本列表实用工具实验性支持了 Android 微信的猜版。若选择微信猜版,对话框将变更为四个输入框,分别是“主版本号”、“猜版”、“真实版本号”和“十六进制代码”,对应的直链为:
>
> `http://dldir1.qq.com/weixin/android/weixin<主版本号>android<真实版本号>_<十六进制代码>_arm64.apk`
>
> 填入相应输入框内容后,软件将尝试访问上述链接。若当次访问未果,默认情况下将自动递增十六进制代码后再次尝试访问,直到访问成功为止。
访问成功后,软件会弹出成功对话框,对话框下方提供了一系列动作按钮,依次是“分享”、“下载”、“停止”、“跳过”和“复制”。

> [!WARNING]
> 微信猜版功能为 QQ 版本列表实用工具附带的实验性功能,可能存在不可预知的稳定性问题。请明确并确保自身具备足够的风险识别和承受能力。
<span id="获取更新"></span>

## 获取更新
Expand All @@ -131,7 +143,11 @@ QQ 版本列表实用工具 for Android 是一个使用 Material 3 组件库构

## 常见问题

### “猜版”里的“空格版”是什么?
### QQ 版本列表实用工具能否实现“检测到新测试版本自动提醒您”的功能?

QQ 版本列表实用工具不能实现“检测到新版本自动提醒您”的功能,因为这需要自有服务器,并且需要自有服务器去长时间请求腾讯服务器,存在法律和技术风险。

### “猜版”里的“空格猜版”是什么?

2023 年 12 月 22 日,腾讯 QQ 官方团队在上传 Android QQ 9.0.8.14600 版本时,不慎将常规链接格式 `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android.9.0.8.14600.64.apk` 错误配置为包含 URL 编码空格形式的链接地址 `https://downv6.qq.com/qqweb/QQ_1/android_apk/Android%209.0.8.14600%2064.apk`。鉴于这一异常现象,QQ 版本列表实用工具增设了“空格版”猜版模式,该功能在原有的“测试版”猜版模式上将版本号中的 `.` 字符替换为 URL 编码的空格符 `%20`,以适应并支持此类非标准但实际存在的直接下载链接。

Expand All @@ -143,13 +159,20 @@ QQ 版本列表实用工具 for Android 是一个使用 Material 3 组件库构

即使版本列表已出现了新的版本号,也并不意味着 QQ 团队已经完成了新版本(含测试版)安装包在腾讯公网服务器的部署和发布。一种可能的情况是,QQ 团队正在进行新版本的内部测试阶段,因而尚未对外提供公网下载渠道。

### 为什么不提供 Android 微信的版本列表?

目前还没有找到来自官方的可靠且请求次数少而信息密度大的 Android 微信版本列表数据源,因此 QQ 版本列表实用工具无法提供 Android 微信的版本列表。如果您发现了可靠的 Android 微信版本列表数据源,欢迎提出 Issue(s) 或提交 PR。

## 其它

- QQ 版本列表实用工具始终坚守法律底线,秉持尊重与保护所有用户及第三方合法权益的原则。我们深切认识到任何可能存在的权益侵犯行为都会对权益方造成潜在影响,对此,我们表示由衷歉意,并承诺,一旦接到权益方的权益受到侵犯的通知,我们将立即依法启动核查程序,并在确认侵权事实后,迅速采取有效措施,以最大程度地消除不良影响,恢复并保障权益方的合法权益。敬请相关权益方在发现 QQ 版本列表实用工具存在任何侵权内容时,及时与我们取得联系,我们将竭诚为权益方提供必要的协助与支持。
> [!IMPORTANT]
> QQ 版本列表实用工具始终坚守法律底线,秉持尊重与保护所有用户及第三方合法权益的原则。我们深切认识到任何可能存在的权益侵犯行为都会对权益方造成潜在影响,对此,我们表示由衷歉意,并承诺,一旦接到权益方的权益受到侵犯的通知,我们将立即依法启动核查程序,并在确认侵权事实后,迅速采取有效措施,以最大程度地消除不良影响,恢复并保障权益方的合法权益。敬请相关权益方在发现 QQ 版本列表实用工具存在任何侵权内容时,及时与我们取得联系,我们将竭诚为权益方提供必要的协助与支持。
- “QQ”“腾讯 QQ”“腾讯”“微信”“WeChat”是深圳市腾讯计算机系统有限公司和/或其关联公司的商标。本应用对“QQ”“腾讯 QQ”“腾讯”“微信”“WeChat”的使用旨在注明和指向对应主体,并非表示对“QQ”、“腾讯 QQ”、“腾讯”、“微信”、“WeChat”商标的注册和拥有。
> [!NOTE]
> “QQ”“腾讯 QQ”“腾讯”“微信”“WeChat”是深圳市腾讯计算机系统有限公司和/或其关联公司的商标。本应用对“QQ”“腾讯 QQ”“腾讯”“微信”“WeChat”的使用旨在注明和指向对应主体,并非表示对“QQ”、“腾讯 QQ”、“腾讯”、“微信”、“WeChat”商标的注册和拥有。
- Android™ 是 Google LLC 的商标。
> [!NOTE]
> Android™ 是 Google LLC 的商标。
## 贡献成员

Expand All @@ -173,6 +196,7 @@ QQ 版本列表实用工具的诞生离不开以下开源项目,感谢以下
- [Eclipse Temurin™](https://adoptium.net/zh-CN/temurin/),Licensed under GNU General Public License, version 2 with the Classpath Exception
- [Oracle JDK](https://www.oracle.com/java/technologies/downloads/),Licensed under [Oracle No-Fee Terms and Conditions](https://www.java.com/freeuselicense)
- [JetBrains Runtime](https://github.com/JetBrains/JetBrainsRuntime),Licensed under [GNU General Public License, version 2](https://github.com/JetBrains/JetBrainsRuntime/blob/main/LICENSE)
- [Kotlin Serialization](https://github.com/Kotlin/kotlinx.serialization),Licensed under [Apache License Version 2.0](https://github.com/Kotlin/kotlinx.serialization/blob/master/LICENSE.txt)

## 孪生项目

Expand Down
6 changes: 3 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import java.io.ByteArrayOutputStream
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
kotlin("plugin.serialization") version "2.0.0"
}

fun String.execute(currentWorkingDir: File = file("./")): String {
Expand All @@ -27,8 +28,7 @@ android {
minSdk = 24
targetSdk = 34
versionCode = gitCommitCount
versionName = "1.3.0-$gitCommitHash"

versionName = "1.3.1-$gitCommitHash"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Expand Down Expand Up @@ -79,7 +79,7 @@ dependencies {
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.google.code.gson:gson:2.11.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.0")
implementation("io.coil-kt:coil:2.6.0")
implementation("androidx.datastore:datastore-preferences:1.1.1")
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@

package com.xiaoniu.qqversionlist.data

import kotlinx.serialization.Serializable


@Serializable
data class QQVersionBean(
val versions: String,
val versionNumber: String,
Expand All @@ -26,7 +30,7 @@ data class QQVersionBean(
val imgs: List<String>,
val summary: List<String>,

var jsonString: String,
var jsonString: String = "",
var displayType: Int = 0, // 0为收起
var displayInstall: Boolean = false, // false 为不展示
var isShowProgressSize: Boolean = false
Expand Down
Loading

0 comments on commit 9a5f912

Please sign in to comment.