Commit bdd7ee995a495823e23ffb22a10bf2928bbdf19a
1 parent
ba96a4bc
隐私协议文案及新入口
Showing
4 changed files
with
86 additions
and
5 deletions
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, | ... | ... |