Commit bdd7ee995a495823e23ffb22a10bf2928bbdf19a

Authored by Key
1 parent ba96a4bc

隐私协议文案及新入口

android/app/build.gradle
... ... @@ -24,6 +24,7 @@ if (flutterVersionName == null) {
24 24 apply plugin: 'com.android.application'
25 25 apply plugin: 'kotlin-android'
26 26 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
  27 +apply from: "../archive_apk.gradle"
27 28  
28 29 android {
29 30 namespace "com.kouyuxingqiu.wow_english"
... ... @@ -71,6 +72,17 @@ android {
71 72 }
72 73  
73 74 buildTypes {
  75 + android.applicationVariants.all {
  76 + variant ->
  77 + variant.outputs.all {
  78 + output ->
  79 + output.outputFileName = "wow_${buildType.name}" +
  80 + "_${defaultConfig.versionName}(${defaultConfig.versionCode})" +
  81 + "_" + new Date().format("yyyy-MM-dd_HH-mm", TimeZone.getDefault()) +
  82 + ".apk"
  83 + }
  84 + }
  85 +
74 86 debug {
75 87 signingConfig signingConfigs.release
76 88 minifyEnabled false
... ...
android/archive_apk.gradle 0 → 100644
  1 +android.applicationVariants.all { variant ->
  2 + if (variant.buildType.name != 'release') {
  3 + println("archive apk: current buildType=[${variant.buildType.name}], not release, cancel copy.")
  4 + return
  5 + }
  6 + // 我嫌找起来麻烦才写的这个东西,所以直接放到下载文件里, /Users/key/Downloads/kyxq_archive
  7 + File desFilePath = new File("${System.properties['user.home']}/Downloads/wow_archive")
  8 + if (!desFilePath.exists()) {
  9 + println("archive apk: you are not Key, return.")
  10 + return
  11 + }
  12 + // 简化版可以:variant.assemble.doLast
  13 + /*variant.assemble.doLast {
  14 + println("archive apk: ${variant.outputs[0].outputFile.absolutePath} copy to: ${desFilePath.absolutePath}, exists=${desFilePath.exists()}")
  15 + try {
  16 + copy {
  17 + from variant.outputs[0].outputFile
  18 + into desFilePath
  19 + }
  20 + } catch (Exception e) {
  21 + e.printStackTrace()
  22 + }
  23 + }*/
  24 +
  25 + variant.assembleProvider.configure {
  26 + doLast {
  27 + variant.outputs.all {
  28 + println("archive apk: copy from ${outputFile}")
  29 + println("archive apk: copy to ${desFilePath.absolutePath}/${outputFileName}")
  30 + try {
  31 + // 删除同一分钟的编译文件
  32 + File desFile = new File(desFilePath, outputFileName)
  33 + if (desFile.exists()) {
  34 + boolean delete = desFile.delete()
  35 + println("archive apk: the same name File: ${desFile.name} has been deleted(${delete}).")
  36 + }
  37 + int keepCount = 5
  38 + File[] files = desFilePath.listFiles()
  39 + if (files.length >= keepCount) {
  40 + // 按最后修改时间排序,升序(最旧的文件在前)
  41 + files = files.sort { it.lastModified() }
  42 + files.take(files.length - keepCount + 1).each {
  43 + boolean delete = it.delete()
  44 + println("archive apk: old File: ${it.name} has been deleted(${delete}).")
  45 + }
  46 + }
  47 + File destFile = new File(desFilePath, outputFileName)
  48 + boolean moved = outputFile.renameTo(destFile)
  49 + println("archive apk: current archive count=${desFilePath.listFiles().length}. moved=${moved}")
  50 + } catch (Exception e) {
  51 + e.printStackTrace()
  52 + }
  53 + }
  54 + }
  55 + }
  56 +}
... ...
lib/pages/login/loginpage/login_page.dart
... ... @@ -101,7 +101,7 @@ class _LoginPageView extends StatelessWidget {
101 101 color: const Color(0xFF333333),
102 102 )),
103 103 TextSpan(
104   - text: '《用户隐私协议》',
  104 + text: '《用户协议》',
105 105 style: TextStyle(
106 106 fontSize: 12.sp,
107 107 color: const Color(0xFF333333),
... ... @@ -110,7 +110,7 @@ class _LoginPageView extends StatelessWidget {
110 110 ..onTap = () {
111 111 Navigator.of(context).pushNamed(AppRouteName.webView, arguments: {
112 112 'urlStr': AppConsts.userPrivacyPolicyUrl,
113   - 'webViewTitle': '用户隐私协议'
  113 + 'webViewTitle': '用户协议'
114 114 });
115 115 }),
116 116 TextSpan(
... ... @@ -122,7 +122,7 @@ class _LoginPageView extends StatelessWidget {
122 122 ..onTap = () {
123 123 Navigator.of(context).pushNamed(AppRouteName.webView, arguments: {
124 124 'urlStr': AppConsts.childrenPrivacyPolicyUrl,
125   - 'webViewTitle': '儿童隐私协议'
  125 + 'webViewTitle': '儿童隐私政策'
126 126 });
127 127 })
128 128 ]),
... ...
lib/pages/user/user_page.dart
... ... @@ -207,12 +207,25 @@ class _UserView extends StatelessWidget {
207 207 onPressed: () {
208 208 pushNamed(AppRouteName.webView, arguments: {
209 209 'urlStr': AppConsts.userPrivacyPolicyUrl,
210   - 'webViewTitle': '隐私协议'
  210 + 'webViewTitle': '用户协议'
211 211 });
212 212 },
213 213 style: normalButtonStyle,
214 214 child: Text(
215   - "隐私协议",
  215 + "用户协议",
  216 + style: textStyle21sp,
  217 + )),
  218 + 12.verticalSpace,
  219 + OutlinedButton(
  220 + onPressed: () {
  221 + pushNamed(AppRouteName.webView, arguments: {
  222 + 'urlStr': AppConsts.childrenPrivacyPolicyUrl,
  223 + 'webViewTitle': '儿童隐私政策'
  224 + });
  225 + },
  226 + style: normalButtonStyle,
  227 + child: Text(
  228 + "儿童隐私政策",
216 229 style: textStyle21sp,
217 230 )),
218 231 12.verticalSpace,
... ...