From 5cc0f44e8d18501f2c53006e9f35a60179d86841 Mon Sep 17 00:00:00 2001 From: keta1 Date: Sat, 3 Sep 2022 23:01:28 +0800 Subject: [PATCH] refactor: generate eulaAndPrivacy html at compile time Signed-off-by: keta1 --- .gitignore | 1 + PRIVACY_LICENSE.md | 32 +++++ app/build.gradle.kts | 39 +++++- app/licenses.yml | 10 +- app/src/main/assets/eula.md | 132 ------------------ app/src/main/assets/eula.txt | 132 ------------------ app/src/main/assets/privacy_license.txt | 30 ---- .../io/github/qauxv/fragment/EulaFragment.kt | 10 +- .../io/github/qauxv/util/LicenseStatus.kt | 4 +- .../src/main/kotlin/{ => task}/ReplaceIcon.kt | 24 ++++ 10 files changed, 103 insertions(+), 311 deletions(-) create mode 100644 PRIVACY_LICENSE.md delete mode 100644 app/src/main/assets/eula.md delete mode 100644 app/src/main/assets/eula.txt delete mode 100644 app/src/main/assets/privacy_license.txt rename build-logic/convention/src/main/kotlin/{ => task}/ReplaceIcon.kt (57%) diff --git a/.gitignore b/.gitignore index 5279a5b4..bf1bdab3 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,4 @@ app/src/main/res/drawable/icon.xml app/signing.properties .vscode /app/src/main/assets/licenses.json +/app/src/main/assets/eulaAndPrivacy.html diff --git a/PRIVACY_LICENSE.md b/PRIVACY_LICENSE.md new file mode 100644 index 00000000..72a7e861 --- /dev/null +++ b/PRIVACY_LICENSE.md @@ -0,0 +1,32 @@ +# 隐私条款 +我们非常重视用户的隐私保护,因此制定了本涵盖如何收集、使用、披露、分享以及存储用户的信息的《隐私条款》。用户在使用本模块时,我们可能会收集和使用您的相关信息。 +我们希望通过本《隐私条款》向您说明,在使用本模块时,我们如何收集、使用、储存和分享这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。 +本《隐私条款》适用于用户与本模块的交互行为以及用户安装和使用本模块的服务,我们建议您仔细地阅读本政策,以帮助您了解维护自己隐私权的方式。 +您使用或继续使用本模块,即表示您同意我们按照本《隐私条款》收集、使用、储存和分享您的相关信息。如对本《隐私条款》或相关事宜有任何问题,请进行留言。 +## 一、我们可能收集的信息 +我们提供服务时,可能会收集、储存和使用下列与您有关的信息。如果您不提供相关信息,可能无法享受我们提供的某些服务,或者无法达到相关服务拟达到的效果。 +### (一)您提供的信息: +您在使用本模块时,向我们提供的相关信息,例如QQ号等; +### (二)其他方分享的您的信息: +其他方使用本模块时所提供有关您的共享信息。 +### (三)我们获取的您的信息: +1. 您使用服务时我们可能收集如下信息: + +- 日志信息: 指您使用本模块时,系统自动采集的技术信息,包括: +- 设备或软件信息: 例如您的移动设备或用于使用我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本; + +## 二、我们如何使用您的信息 +### (一)我们可能将在向您提供服务的过程之中所收集的信息用作下列用途: +1. 向您提供服务。在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性; +2. 帮助我们设计新服务,改善我们现有服务; +3. 使我们更加了解您如何使用和使用本模块,从而针对性地回应您的个性化需求,例如个性化的帮助服务和指示,或对您和其他用户作出其他方面的回应; +4. 软件认证或管理软件升级; +5. 让您参与有关我们产品和服务的调查。 +## 三、我们如何分享您的信息 +除以下情形外,未经您同意,我们不会与任何第三方分享您的个人信息: +- 您授权或同意本模块披露的; +- 遵守适用的法律法规; +- 遵守法院命令或其他法律程序的规定; +- 遵守相关政府机关的要求; +- 为遵守适用的法律法规、维护社会公共利益; +- 根据本模块各服务条款及声明中的相关规定。 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bdeb9dc7..8d7f10a3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -28,6 +28,7 @@ import com.android.tools.build.apkzlib.zip.AlignmentRules import com.android.tools.build.apkzlib.zip.CompressionMethod import com.android.tools.build.apkzlib.zip.ZFile import com.android.tools.build.apkzlib.zip.ZFileOptions +import org.jetbrains.changelog.markdownToHTML import java.io.FileInputStream import java.security.KeyStore import java.security.cert.X509Certificate @@ -38,6 +39,7 @@ plugins { id("com.google.devtools.ksp") version "${Version.kotlin}-${Version.ksp}" kotlin("plugin.serialization") id("com.cookpad.android.plugin.license-tools") version "1.2.0" + id("org.jetbrains.changelog") version "1.3.1" } val currentBuildUuid = UUID.randomUUID().toString() @@ -132,6 +134,7 @@ android { applicationVariants.all { val variantCapped = name.capitalize() tasks.findByName("merge${variantCapped}Assets")?.dependsOn(tasks.generateLicenseJson.get()) + tasks.findByName("merge${variantCapped}Assets")?.dependsOn(generateEulaAndPrivacy) } } @@ -150,7 +153,6 @@ dependencies { compileOnly("de.robv.android.xposed:api:82") implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3") - implementation("io.noties.markwon:core:4.6.2") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") implementation("com.google.android.material:material:1.6.1") implementation("com.google.android.flexbox:flexbox:3.0.0") @@ -183,9 +185,11 @@ val openQQ = tasks.register("openQQ") { tasks.register("openTroubleShooting") { group = "qauxv" - commandLine(adb, "shell", "am", "start", + commandLine( + adb, "shell", "am", "start", "-e", "qa_jump_action_cmd", "io.github.qauxv.TROUBLE_SHOOTING_ACTIVITY", - "com.tencent.mobileqq/.activity.JumpActivity") + "com.tencent.mobileqq/.activity.JumpActivity" + ) isIgnoreExitValue = true } @@ -217,7 +221,7 @@ androidComponents.onVariants { variant -> } } -tasks.register("replaceIcon") { +tasks.register("replaceIcon") { group = "qauxv" projectDir.set(project.projectDir) commitHash = Common.getGitHeadRefsSuffix(rootProject) @@ -375,3 +379,30 @@ val synthesizeDistReleaseApksCI by tasks.registering { logger.info("Task :app:synthesizeDistReleaseApksCI: completed in ${endTime - startTime}ms") } } + +val generateEulaAndPrivacy by tasks.registering { + inputs.files("${rootDir}/LICENSE.md", "${rootDir}/PRIVACY_LICENSE.md") + outputs.file("${projectDir}/src/main/assets/eulaAndPrivacy.html") + + doFirst { + val head = """ + + + + + """.trimIndent() + + val html = inputs.files.map{ markdownToHTML(it.readText()) } + + outputs.files.forEach { + it.writeText( + buildString { + append("") + append(head) + html.forEach(::append) + append("") + } + ) + } + } +} diff --git a/app/licenses.yml b/app/licenses.yml index facbf3ae..08e664af 100644 --- a/app/licenses.yml +++ b/app/licenses.yml @@ -410,12 +410,6 @@ copyrightHolder: Copyright 2013 rovo89, Tungstwenty license: The Apache Software License, Version 2.0 licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt -- artifact: io.noties.markwon:core:+ - name: core - copyrightHolder: #COPYRIGHT_HOLDER# - license: The Apache Software License, Version 2.0 - licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt - url: https://github.com/noties/Markwon - artifact: org.jetbrains.kotlin:kotlin-reflect:+ name: kotlin-reflect copyrightHolder: #COPYRIGHT_HOLDER# @@ -482,3 +476,7 @@ license: The Apache Software License, Version 2.0 licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt url: https://github.com/LSPosed/AndroidHiddenApiBypass +- artifact: com.google.guava:listenablefuture:+ + name: listenablefuture + copyrightHolder: #COPYRIGHT_HOLDER# + license: #LICENSE# diff --git a/app/src/main/assets/eula.md b/app/src/main/assets/eula.md deleted file mode 100644 index 23b13fc9..00000000 --- a/app/src/main/assets/eula.md +++ /dev/null @@ -1,132 +0,0 @@ -# 通用许可协议 - -## 版权所有 © 2022 James Clef - -版本 2 2022-04-09 - -本协议证原始发布地址: [https://github.com/qwq233/license](https://github.com/qwq233/license) / [https://qwq2333.top/license-v2](https://qwq2333.top/license-v2) - - -允许在遵守 CC BY-NC-SA 4.0 协议的同时,复制和分发此协议文档的逐字记录副本,且允许对其进行更改,但必须保留其版权信息与原作者。如果您提出申请特殊权限,协议作者可口头或书面授予任何人任何的使用本协议的权利。 - -## 正文 - -请务必仔细阅读和理解通用许可协议书中规定的所有权利和限制。在使用前,您需要仔细阅读并决定接受或不接受本协议的条款。除非或直至您接受本协议的条款,否则本作品及其相关副本、相关程序代码或相关资源不得在您的任何终端上下载、安装或使用。 - -您一旦下载、使用本作品及其相关副本、相关程序代码或相关资源,即表示您同意接受本协议各项条款的约束。如您不同意本协议中的条款,您则应当立即删除本作品、附属资源及其相关源代码。 - -本作品权利只许可使用,而不出售。 - -1. 定义 - - 1. “本协议”指通用许可协议第二版。 - - 2. “您”指依据本通用许可协议行使其所获得授予之权利的个人或机构。 “您的” 有相应的含义。 - - 3. “作者”或“本作品作者”指通过本协议进行授权的个人或组织和/或根据《与贸易有关的知识产权协定》所规定的对本作品拥有著作权的个人或组织。 - - 4. “协议作者”指上文提及的协议版权方,即 James Clef 。 - - 5. “本作品”或“作品”指根据本协议的任何受版权保护的作品,如源代码。 - - 6. “本作品发布网址”指本作品作者初次或后续发布的所指定的唯一或多个的网址。 - - 7. “修改”作品是指以需要版权许可的方式复制或改编该作品的全部或部分内容,而不是制作一个完全的副本。由此产生的作品也被称为本作品的"修改版"或“基于”本作品的作品。 - - 8. “修改作品作者”指任何依据本通用许可协议对在修改作品中所贡献的部分所享有的著作权的个人或机构。 - - 9. “传播”作品指对该作品进行任何未经许可的行为,这将使您直接或次要根据适用的版权法承担侵权责任,但在计算机上执行该作品或修改其私人副本除外。传播包括复制、分发(进行或不进行修改)、向公众公开、以及在某些国家/地区进行其他活动。 - - 10. “非商业使用”指该使用的主要意图或者指向并非获取商业优势或金钱报酬。为本协议之目的,以数字文件共享或类似方式,用本作品交换其他受到著作权与类似权利保护的作品是非商业性使用,只要该交换不直接或潜在涉及金钱报酬的支付。 - - 11. “商业使用”指该使用的主要意图或者指向为获取商业优势或金钱报酬。以数字文件共享或类似方式,用本作品交换其他受到著作权与类似权利保护的作品是商业性使用,只要该交换直接或潜在涉及金钱报酬的支付。 - - 12. “源代码”指生成、安装和(对于可执行作品)运行目标代码以及修改作品所需的所有源代码,包括控制这些活动的脚本。但是,它不包括作品的系统库,也不包括在执行这些活动时未经修改但不属于作品的通用工具或普遍可用的免费程序。 - - 13. “目标代码”指通过本作品源代码或修改作品源代码生成的计算机可识别的机器语言或近似与机器语言的代码。“编译作品”有相同含义。 - - -2. 本协议无意削减、限制、或约束您基于以下法律规定对本作品的合法使用:合理使用,权利穷竭原则,及著作权法或其他相关法律对著作权人专有权利的限制。 - -3. 授权范围 - - 根据本协议的条款和条件,作者在此授予您全球性、免版税、非独占并且在本作品的著作权存续期间内均有效的许可,就本作品行使以下权利: - - 1. 在一台个人所有终端上安装、使用、显示、运行本作品的一份副本。 - - 2. 为了防止副本损坏而制作备份复制品。这些备份复制品不得通过任何方式提供给他人使用,并在您丧失该合法副本的所有权时,负责将备份复制品销毁。 - - 3. 为了把本作品用于实际的终端应用环境或者改进其功能、性能而进行必要的修改。 - - 4. 对本作品进行反向工程、反向编译或反汇编;或进行其他获得本作品源代码的访问或行为。 - - 5. 发行、公开传播本作品及其修改作品。 - - 6. 根据本协议的条款,作者授予您在全球范围内,免费的、不可再许可、非独占、不可撤销的许可,以对本作品行使以下“协议所授予的权利”: - - 1. 复制和分享本作品的全部或部分,仅限于非商业性使用。 - - 2. 以非商业使用为目的制作、复制和分享修改作品。 - - 以上权利可在任何现有的或者以后出现的并为可适用的法律认可的媒体和形式上行使。上述权利包括为在其他媒体和形式上行使权利而必须进行技术性修改的权利。作者在此保留所有未明示授予的权利。 - -4. 限制 - - 1. 您在发行或公开传播本作品时,必须遵守本协议。在您发行或公开传播的本作品的每一份复制件中,您必须附上一份本协议协议的复制件。您不得就本作品提出或增加任何条款,从而限制本协议协议或者限制获得本作品的第三方行使本协议协议所赋予的权利。您不得对本作品进行再许可。您必须在您发行或公开传播的每份作品复制件中完整保留所有与本协议协议及免责条款相关的声明。 在发行或公开传播本作品时,您不得对本作品施加任何技术措施,从而限制从您处获得本作品的第三方行使本协议协议授予的权利。 - - 2. 您必须以下述许可条款发行或公开传播修改作品: - - 1. 本协议或后续版本 - - 2. 您不得就修改作品提出或增加任何条款,从而限制“可适用的协议”的规定,或者限制获得修改作品的第三方行使“可适用的协议”所赋予的权利。在发行或公开传播包含本作品的修改作品时,您必须在本作品的每一份复制件中完整地保留所有与“可适用的协议”及免责条款相关的声明。在发行或公开传播修改作品时,您不得对修改作品施加任何技术措施,从而限制从您处获得修改作品的第三方行使“可适用的协议”所赋予的权利。本项(第 4 款第 2 项)规定同样适用于收录在汇编作品中的修改作品,但并不要求汇编作品中除基于本作品而创作的修改作品之外的其他作品受“可适用的协议”的约束。 - - 3. 以源代码的形式传播本作品或编译作品时,您必须满足以下所有条件: - - 1. 修改作品必须有醒目的声明,说明您修改了它,并给出相关的日期。 - - 2. 若修改作品使用了本作品所包含全部或部分源代码和/或其他部分的本作品,需提供完整的修改作品,如其全部源代码、可用于生成修改作品的编译作品的脚本、修改作品使用到的资源。 - - 4. 以编译作品的形式传播本作品或修改作品时,以下列方式之一传递源代码: - - 1. 在实体产品(包括实体销售媒介)中传递编译作品,或体现在实体产品(包括实体销售媒介)中,同时将相应的源代码固定在通常用于软件交换的实体媒介上。 - - 2. 点对点传输。 - - 3. 可免费访问的网络服务器。 - - 3. 您不得进行商业使用,这里的商业使用包括第 1 款第 10 项所提到的内容、以盈利为目的的提供本作品和/或修改作品的帮助和/或指南、以盈利为目的的使用或授予他人本作品的所提供给您的权利/许可。 - - 4. 在发行或公开传播本作品、任何修改作品时,您必须完整保留所有关于本作品的著作权声明,并以适于所使用的媒介或方法的形式提供下述信息: - - 1. 作者的姓名或者其他能够体现作者身份的标志物。 - - 2. 标明本作品发布网址 - - 3. 依第 4 条第 2 项之要求,注明修改作品中使用的本作品的作者的姓名或者其他能够体现作者身份的标志物和作品名称。为避免疑义,本条有关标示作者姓名和作品名称之规定,仅适用于前述署名的用途;除非您事先另行取得作者的书面同意,否则您不得以明示或者默示的方式主张或暗示,您本人或您对作品的使用与作者有关联或者已获得上述人士的赞助或者支持。 - - 5. 您在复制、发行或者公开表演本作品,或者复制、发行或者公开表演作为任何修改作品一部分的本作品时,不得歪曲、损害或者以其他方式损害本作品,导致原始作者的名誉或者荣誉受损。 - - 6. 您不得利用本作品的全部或部分申请商业用途的商标和/或专利。 - - 7. 作者拥有对本协议的修改权,当您使用本作品、源代码及其附属资源的修改协议后的作品,需遵守最新协议。 - -5. 免责声明: - - 1. 您在下载并使用本作品时均被视为已经仔细阅读本协议并完全同意。凡以任何方式使用本作品,或直接、间接使用本作品,均被视为自愿接受相关声明和用户服务协议的约束。 - - 2. 除非本协议的当事人相互以书面的方式做出相反约定,且在相关法律所允许的最大范围内,否则作者按其现状提供本作品,对本作品不作任何明示或者默示、依照法律或者其他规定的陈述或担保,包括但是不限于任何有关可否商业性使用、是否符合特定的目的、不具有潜在的或者其他缺陷、准确性或者不存在不论能否被发现的错误的担保。有些司法管辖区不允许排除前述默示保证,因此这些排除性规定并不一定适用于您。 - - 3. 用户明确并同意其使用本作品所存在的风险及法律风险将完全由其本人承担;因其使用作品而产生的一切后果也由其本人承担,本作品作者对此不承担任何责任。 - - 6. 除非书面同意,否则在任何情况下,任何作者与协议作者,或经其修改和/或传送上述程序的任何其他方均不对您承担赔偿责任,包括任何一般的,特殊的,因本作品而使您对其他法律实体造成的一切损害。本作品及作者已提前告知您此类损害的可能性。 - - 7. 您在传播、使用本作品及其修改作品时,应自行保证您的一切行为与本作品的全部功能符合一切对您有管辖权的法律法规的要求,由您传播、使用本作品产生的法律风险及其造成的相应后果,将由您自行承担,本作品及其作者不承担任何责任。 - - 8. 本协议最终解释权归本作品作者与协议作者所有。 - - -6. 许可终止: - - 1. 在您违反本协议协议任何条款时,本协议及其所授予的权利将自动终止。然而,根据本协议从您处获取修改作品的自然人、法人或者其他组织,如果他们仍完全遵守相关条款,则对他们的许可不会随之终止。即使本协议被终止,第 1 款、第 2 款、第 5 款、第 6 款仍然有效。 - - 2. 在上述条款及条件的前提下,此处授予的许可在法定著作权保护期限内有效。即便如此,作者保留依其他许可条款发行本作品及在任何时候停止发行本作品的权利;但是,作者的上述权利不能被用于撤销本协议或任何其他在本协议条款下授予的或必须授予的许可,除本款第 1 项指明的终止外,本协议将保持其完全效力。 diff --git a/app/src/main/assets/eula.txt b/app/src/main/assets/eula.txt deleted file mode 100644 index ca2f78ae..00000000 --- a/app/src/main/assets/eula.txt +++ /dev/null @@ -1,132 +0,0 @@ -通用许可协议 - -## 版权所有 © 2022 James Clef - -版本 2 2022-04-09 - -本协议证原始发布地址: https://github.com/qwq233/license / https://qwq2333.top/license-v2 - - -允许在遵守 CC BY-NC-SA 4.0 协议的同时,复制和分发此协议文档的逐字记录副本,且允许对其进行更改,但必须保留其版权信息与原作者。如果您提出申请特殊权限,协议作者可口头或书面授予任何人任何的使用本协议的权利。 - -## 正文 - -请务必仔细阅读和理解通用许可协议书中规定的所有权利和限制。在使用前,您需要仔细阅读并决定接受或不接受本协议的条款。除非或直至您接受本协议的条款,否则本作品及其相关副本、相关程序代码或相关资源不得在您的任何终端上下载、安装或使用。 - -您一旦下载、使用本作品及其相关副本、相关程序代码或相关资源,即表示您同意接受本协议各项条款的约束。如您不同意本协议中的条款,您则应当立即删除本作品、附属资源及其相关源代码。 - -本作品权利只许可使用,而不出售。 - -1. 定义 - - 1. “本协议”指通用许可协议第二版。 - - 2. “您”指依据本通用许可协议行使其所获得授予之权利的个人或机构。 “您的” 有相应的含义。 - - 3. “作者”或“本作品作者”指通过本协议进行授权的个人或组织和/或根据《与贸易有关的知识产权协定》所规定的对本作品拥有著作权的个人或组织。 - - 4. “协议作者”指上文提及的协议版权方,即 James Clef 。 - - 5. “本作品”或“作品”指根据本协议的任何受版权保护的作品,如源代码。 - - 6. “本作品发布网址”指本作品作者初次或后续发布的所指定的唯一或多个的网址。 - - 7. “修改”作品是指以需要版权许可的方式复制或改编该作品的全部或部分内容,而不是制作一个完全的副本。由此产生的作品也被称为本作品的"修改版"或“基于”本作品的作品。 - - 8. “修改作品作者”指任何依据本通用许可协议对在修改作品中所贡献的部分所享有的著作权的个人或机构。 - - 9. “传播”作品指对该作品进行任何未经许可的行为,这将使您直接或次要根据适用的版权法承担侵权责任,但在计算机上执行该作品或修改其私人副本除外。传播包括复制、分发(进行或不进行修改)、向公众公开、以及在某些国家/地区进行其他活动。 - - 10. “非商业使用”指该使用的主要意图或者指向并非获取商业优势或金钱报酬。为本协议之目的,以数字文件共享或类似方式,用本作品交换其他受到著作权与类似权利保护的作品是非商业性使用,只要该交换不直接或潜在涉及金钱报酬的支付。 - - 11. “商业使用”指该使用的主要意图或者指向为获取商业优势或金钱报酬。以数字文件共享或类似方式,用本作品交换其他受到著作权与类似权利保护的作品是商业性使用,只要该交换直接或潜在涉及金钱报酬的支付。 - - 12. “源代码”指生成、安装和(对于可执行作品)运行目标代码以及修改作品所需的所有源代码,包括控制这些活动的脚本。但是,它不包括作品的系统库,也不包括在执行这些活动时未经修改但不属于作品的通用工具或普遍可用的免费程序。 - - 13. “目标代码”指通过本作品源代码或修改作品源代码生成的计算机可识别的机器语言或近似与机器语言的代码。“编译作品”有相同含义。 - - -2. 本协议无意削减、限制、或约束您基于以下法律规定对本作品的合法使用:合理使用,权利穷竭原则,及著作权法或其他相关法律对著作权人专有权利的限制。 - -3. 授权范围 - - 根据本协议的条款和条件,作者在此授予您全球性、免版税、非独占并且在本作品的著作权存续期间内均有效的许可,就本作品行使以下权利: - - 1. 在一台个人所有终端上安装、使用、显示、运行本作品的一份副本。 - - 2. 为了防止副本损坏而制作备份复制品。这些备份复制品不得通过任何方式提供给他人使用,并在您丧失该合法副本的所有权时,负责将备份复制品销毁。 - - 3. 为了把本作品用于实际的终端应用环境或者改进其功能、性能而进行必要的修改。 - - 4. 对本作品进行反向工程、反向编译或反汇编;或进行其他获得本作品源代码的访问或行为。 - - 5. 发行、公开传播本作品及其修改作品。 - - 6. 根据本协议的条款,作者授予您在全球范围内,免费的、不可再许可、非独占、不可撤销的许可,以对本作品行使以下“协议所授予的权利”: - - 1. 复制和分享本作品的全部或部分,仅限于非商业性使用。 - - 2. 以非商业使用为目的制作、复制和分享修改作品。 - - 以上权利可在任何现有的或者以后出现的并为可适用的法律认可的媒体和形式上行使。上述权利包括为在其他媒体和形式上行使权利而必须进行技术性修改的权利。作者在此保留所有未明示授予的权利。 - -4. 限制 - - 1. 您在发行或公开传播本作品时,必须遵守本协议。在您发行或公开传播的本作品的每一份复制件中,您必须附上一份本协议协议的复制件。您不得就本作品提出或增加任何条款,从而限制本协议协议或者限制获得本作品的第三方行使本协议协议所赋予的权利。您不得对本作品进行再许可。您必须在您发行或公开传播的每份作品复制件中完整保留所有与本协议协议及免责条款相关的声明。 在发行或公开传播本作品时,您不得对本作品施加任何技术措施,从而限制从您处获得本作品的第三方行使本协议协议授予的权利。 - - 2. 您必须以下述许可条款发行或公开传播修改作品: - - 1. 本协议或后续版本 - - 2. 您不得就修改作品提出或增加任何条款,从而限制“可适用的协议”的规定,或者限制获得修改作品的第三方行使“可适用的协议”所赋予的权利。在发行或公开传播包含本作品的修改作品时,您必须在本作品的每一份复制件中完整地保留所有与“可适用的协议”及免责条款相关的声明。在发行或公开传播修改作品时,您不得对修改作品施加任何技术措施,从而限制从您处获得修改作品的第三方行使“可适用的协议”所赋予的权利。本项(第 4 款第 2 项)规定同样适用于收录在汇编作品中的修改作品,但并不要求汇编作品中除基于本作品而创作的修改作品之外的其他作品受“可适用的协议”的约束。 - - 3. 以源代码的形式传播本作品或编译作品时,您必须满足以下所有条件: - - 1. 修改作品必须有醒目的声明,说明您修改了它,并给出相关的日期。 - - 2. 若修改作品使用了本作品所包含全部或部分源代码和/或其他部分的本作品,需提供完整的修改作品,如其全部源代码、可用于生成修改作品的编译作品的脚本、修改作品使用到的资源。 - - 4. 以编译作品的形式传播本作品或修改作品时,以下列方式之一传递源代码: - - 1. 在实体产品(包括实体销售媒介)中传递编译作品,或体现在实体产品(包括实体销售媒介)中,同时将相应的源代码固定在通常用于软件交换的实体媒介上。 - - 2. 点对点传输。 - - 3. 可免费访问的网络服务器。 - - 3. 您不得进行商业使用,这里的商业使用包括第 1 款第 10 项所提到的内容、以盈利为目的的提供本作品和/或修改作品的帮助和/或指南、以盈利为目的的使用或授予他人本作品的所提供给您的权利/许可。 - - 4. 在发行或公开传播本作品、任何修改作品时,您必须完整保留所有关于本作品的著作权声明,并以适于所使用的媒介或方法的形式提供下述信息: - - 1. 作者的姓名或者其他能够体现作者身份的标志物。 - - 2. 标明本作品发布网址 - - 3. 依第 4 条第 2 项之要求,注明修改作品中使用的本作品的作者的姓名或者其他能够体现作者身份的标志物和作品名称。为避免疑义,本条有关标示作者姓名和作品名称之规定,仅适用于前述署名的用途;除非您事先另行取得作者的书面同意,否则您不得以明示或者默示的方式主张或暗示,您本人或您对作品的使用与作者有关联或者已获得上述人士的赞助或者支持。 - - 5. 您在复制、发行或者公开表演本作品,或者复制、发行或者公开表演作为任何修改作品一部分的本作品时,不得歪曲、损害或者以其他方式损害本作品,导致原始作者的名誉或者荣誉受损。 - - 6. 您不得利用本作品的全部或部分申请商业用途的商标和/或专利。 - - 7. 作者拥有对本协议的修改权,当您使用本作品、源代码及其附属资源的修改协议后的作品,需遵守最新协议。 - -5. 免责声明: - - 1. 您在下载并使用本作品时均被视为已经仔细阅读本协议并完全同意。凡以任何方式使用本作品,或直接、间接使用本作品,均被视为自愿接受相关声明和用户服务协议的约束。 - - 2. 除非本协议的当事人相互以书面的方式做出相反约定,且在相关法律所允许的最大范围内,否则作者按其现状提供本作品,对本作品不作任何明示或者默示、依照法律或者其他规定的陈述或担保,包括但是不限于任何有关可否商业性使用、是否符合特定的目的、不具有潜在的或者其他缺陷、准确性或者不存在不论能否被发现的错误的担保。有些司法管辖区不允许排除前述默示保证,因此这些排除性规定并不一定适用于您。 - - 3. 用户明确并同意其使用本作品所存在的风险及法律风险将完全由其本人承担;因其使用作品而产生的一切后果也由其本人承担,本作品作者对此不承担任何责任。 - - 6. 除非书面同意,否则在任何情况下,任何作者与协议作者,或经其修改和/或传送上述程序的任何其他方均不对您承担赔偿责任,包括任何一般的,特殊的,因本作品而使您对其他法律实体造成的一切损害。本作品及作者已提前告知您此类损害的可能性。 - - 7. 您在传播、使用本作品及其修改作品时,应自行保证您的一切行为与本作品的全部功能符合一切对您有管辖权的法律法规的要求,由您传播、使用本作品产生的法律风险及其造成的相应后果,将由您自行承担,本作品及其作者不承担任何责任。 - - 8. 本协议最终解释权归本作品作者与协议作者所有。 - - -6. 许可终止: - - 1. 在您违反本协议协议任何条款时,本协议及其所授予的权利将自动终止。然而,根据本协议从您处获取修改作品的自然人、法人或者其他组织,如果他们仍完全遵守相关条款,则对他们的许可不会随之终止。即使本协议被终止,第 1 款、第 2 款、第 5 款、第 6 款仍然有效。 - - 2. 在上述条款及条件的前提下,此处授予的许可在法定著作权保护期限内有效。即便如此,作者保留依其他许可条款发行本作品及在任何时候停止发行本作品的权利;但是,作者的上述权利不能被用于撤销本协议或任何其他在本协议条款下授予的或必须授予的许可,除本款第 1 项指明的终止外,本协议将保持其完全效力。 diff --git a/app/src/main/assets/privacy_license.txt b/app/src/main/assets/privacy_license.txt deleted file mode 100644 index 6fd73421..00000000 --- a/app/src/main/assets/privacy_license.txt +++ /dev/null @@ -1,30 +0,0 @@ -隐私条款 -我们非常重视用户的隐私保护,因此制定了本涵盖如何收集、使用、披露、分享以及存储用户的信息的《隐私条款》。用户在使用本模块时,我们可能会收集和使用您的相关信息。 -我们希望通过本《隐私条款》向您说明,在使用本模块时,我们如何收集、使用、储存和分享这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。 -本《隐私条款》适用于用户与本模块的交互行为以及用户安装和使用本模块的服务,我们建议您仔细地阅读本政策,以帮助您了解维护自己隐私权的方式。 -您使用或继续使用本模块,即表示您同意我们按照本《隐私条款》收集、使用、储存和分享您的相关信息。如对本《隐私条款》或相关事宜有任何问题,请进行留言。 -一、我们可能收集的信息 -我们提供服务时,可能会收集、储存和使用下列与您有关的信息。如果您不提供相关信息,可能无法享受我们提供的某些服务,或者无法达到相关服务拟达到的效果。 -(一)您提供的信息: -您在使用本模块时,向我们提供的相关信息,例如QQ号等; -(二)其他方分享的您的信息: -其他方使用本模块时所提供有关您的共享信息。 -(三)我们获取的您的信息: -1、您使用服务时我们可能收集如下信息: -(1)日志信息,指您使用本模块时,系统自动采集的技术信息,包括: -o 设备或软件信息,例如您的移动设备或用于使用我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本; -二、我们如何使用您的信息 -(一)我们可能将在向您提供服务的过程之中所收集的信息用作下列用途: -1、向您提供服务。在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性; -2、帮助我们设计新服务,改善我们现有服务; -3、使我们更加了解您如何使用和使用本模块,从而针对性地回应您的个性化需求,例如个性化的帮助服务和指示,或对您和其他用户作出其他方面的回应; -4、软件认证或管理软件升级; -5、让您参与有关我们产品和服务的调查。 -三、我们如何分享您的信息 -除以下情形外,未经您同意,我们不会与任何第三方分享您的个人信息: -o 您授权或同意本模块披露的; -o 遵守适用的法律法规; -o 遵守法院命令或其他法律程序的规定; -o 遵守相关政府机关的要求; -o 为遵守适用的法律法规、维护社会公共利益; -o 根据本模块各服务条款及声明中的相关规定。 diff --git a/app/src/main/java/io/github/qauxv/fragment/EulaFragment.kt b/app/src/main/java/io/github/qauxv/fragment/EulaFragment.kt index fd09ba0d..5672157e 100644 --- a/app/src/main/java/io/github/qauxv/fragment/EulaFragment.kt +++ b/app/src/main/java/io/github/qauxv/fragment/EulaFragment.kt @@ -24,6 +24,7 @@ package io.github.qauxv.fragment import android.content.Intent import android.net.Uri import android.os.Bundle +import android.text.Html import android.text.SpannableStringBuilder import android.view.Gravity import android.view.LayoutInflater @@ -94,9 +95,8 @@ class EulaFragment : BaseRootLayoutFragment(), View.OnClickListener { val sb = SpannableStringBuilder() try { - sb.append(ResUtils.openAsset("eula.md").readText()) - sb.append("\n\n") - sb.append(ResUtils.openAsset("privacy_license.txt").readText()) + val eulaAndPrivacy = ResUtils.openAsset("eulaAndPrivacy.html").readText() + sb.append(Html.fromHtml(eulaAndPrivacy, Html.FROM_HTML_MODE_LEGACY)) } catch (e: IOException) { sb.append(Log.getStackTraceString(e)) } @@ -134,9 +134,9 @@ class EulaFragment : BaseRootLayoutFragment(), View.OnClickListener { agree.text = "我同意并继续" addView(agree, newLinearLayoutParams(MATCH_PARENT, WRAP_CONTENT, 2 * _5dp, _5dp, 2 * _5dp, _5dp)) val deny = Button(context) - deny.setId(R.id.btn_deny) + deny.id = R.id.btn_deny deny.setOnClickListener(this@EulaFragment) - deny.setText("我拒绝") + deny.text = "我拒绝" addView(deny, newLinearLayoutParams(MATCH_PARENT, WRAP_CONTENT, 2 * _5dp, _5dp, 2 * _5dp, _5dp)) } else { tv = TextView(context) diff --git a/app/src/main/java/io/github/qauxv/util/LicenseStatus.kt b/app/src/main/java/io/github/qauxv/util/LicenseStatus.kt index 1405bd3a..153ef5bb 100644 --- a/app/src/main/java/io/github/qauxv/util/LicenseStatus.kt +++ b/app/src/main/java/io/github/qauxv/util/LicenseStatus.kt @@ -33,10 +33,10 @@ object LicenseStatus { @JvmField var sDisableCommonHooks: Boolean = isBlacklisted() - private const val qn_eula_status = "qa_eula_status" //typo, ignore it + private const val qn_eula_status = "qa_eula_status" private const val qn_user_auth_status = "qn_user_auth_status" private const val qn_user_auth_last_update = "qn_user_auth_last_update" - const val CURRENT_EULA_VERSION = 10 + const val CURRENT_EULA_VERSION = 11 @JvmStatic fun getEulaStatus(): Int { diff --git a/build-logic/convention/src/main/kotlin/ReplaceIcon.kt b/build-logic/convention/src/main/kotlin/task/ReplaceIcon.kt similarity index 57% rename from build-logic/convention/src/main/kotlin/ReplaceIcon.kt rename to build-logic/convention/src/main/kotlin/task/ReplaceIcon.kt index 4ac7d90a..acc1d40f 100644 --- a/build-logic/convention/src/main/kotlin/ReplaceIcon.kt +++ b/build-logic/convention/src/main/kotlin/task/ReplaceIcon.kt @@ -1,3 +1,27 @@ +/* + * QAuxiliary - An Xposed module for QQ/TIM + * Copyright (C) 2019-2022 qwq233@qwq2333.top + * https://github.com/cinit/QAuxiliary + * + * This software is non-free but opensource software: you can redistribute it + * and/or modify it under the terms of the GNU Affero General Public License + * as published by the Free Software Foundation; either + * version 3 of the License, or any later version and our eula as published + * by QAuxiliary contributors. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * and eula along with this software. If not, see + * + * . + */ + +package task + import org.gradle.api.file.DirectoryProperty import org.gradle.api.tasks.Copy import org.gradle.api.tasks.Input