From 03a533008c806c26658ef4a89009fb899702ec9d Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Fri, 8 Mar 2024 10:55:13 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9A1.0.12+20240308?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/README.md | 5 ++++- star_lock/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/star_lock/README.md b/star_lock/README.md index 0595b9e1..0e53a6c1 100644 --- a/star_lock/README.md +++ b/star_lock/README.md @@ -101,7 +101,10 @@ flutter build appbundle --release --flavor sky -t lib/main_sky.dart - 注意,这里的sky.jks和google_pek.zip和encryption_public_key.pem都是sky渠道的,和谷歌账号对应。如果需要使用其他谷歌账号,需要更换这两个文件。 ## 用于华为商店 - +1. 复制谷歌的 (PEPK) 工具 +2. 生成密钥 ```bash java -jar android/huawei/pepk.jar --keystore=android/app/sky.jks --alias=upload --output=android/huawei/huawei_pek.zip --encryptionkey=034200041E224EE22B45D19B23DB91BA9F52DE0A06513E03A5821409B34976FDEED6E0A47DBA48CC249DD93734A6C5D9A0F43461F9E140F278A5D2860846C2CF5D2C3C02 --include-cert ``` +3. 上传密钥 +4. 编译和上传 app bundle,和谷歌的一样编译出aab文件即可 diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index fe4dc2b9..571efac8 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.11+20240306 +version: 1.0.12+20240308 environment: sdk: '>=2.12.0 <3.0.0' From 7984f084dd4cdb654cb6b34538dc03d1766bce5e Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Mon, 11 Mar 2024 14:33:40 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8DAndroid=20Debug=20Running?= =?UTF-8?q?=20=E7=AD=BE=E5=90=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/android/app/build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/star_lock/android/app/build.gradle b/star_lock/android/app/build.gradle index b880ece9..91a32b6c 100644 --- a/star_lock/android/app/build.gradle +++ b/star_lock/android/app/build.gradle @@ -144,7 +144,10 @@ android { productFlavors.xhj.signingConfig signingConfigs.xhj } debug { - signingConfig signingConfigs.pre + productFlavors.dev.signingConfig signingConfigs.pre + productFlavors.pre.signingConfig signingConfigs.pre + productFlavors.sky.signingConfig signingConfigs.sky + productFlavors.xhj.signingConfig signingConfigs.xhj } } } From e78c5a22d3b72d1043e2cb67b56bb11241335a72 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Mon, 11 Mar 2024 15:18:31 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=89=93=E5=BC=80App?= =?UTF-8?q?=E7=9A=84=E9=9A=90=E7=A7=81=E5=BC=B9=E7=AA=97=E4=B8=8A=E7=9A=84?= =?UTF-8?q?URL=E6=94=B9=E4=B8=BAwebView=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/mine/about/webviewShow_logic.dart | 25 +++++++++++++++++ .../lib/mine/about/webviewShow_page.dart | 27 ++++++------------- .../lib/mine/about/webviewShow_state.dart | 15 +++++++++++ .../lib/mine/mine/starLockMine_logic.dart | 9 ++++--- star_lock/lib/tools/appFirstEnterHandle.dart | 27 ++++++++++++------- 5 files changed, 71 insertions(+), 32 deletions(-) create mode 100644 star_lock/lib/mine/about/webviewShow_logic.dart create mode 100644 star_lock/lib/mine/about/webviewShow_state.dart diff --git a/star_lock/lib/mine/about/webviewShow_logic.dart b/star_lock/lib/mine/about/webviewShow_logic.dart new file mode 100644 index 00000000..9ee40aa5 --- /dev/null +++ b/star_lock/lib/mine/about/webviewShow_logic.dart @@ -0,0 +1,25 @@ +import 'package:star_lock/mine/about/webviewShow_state.dart'; + +import '../../tools/baseGetXController.dart'; + +class WebviewShowLogic extends BaseGetXController { + final WebviewShowState state = WebviewShowState(); + + @override + Future onReady() async { + print("ready home"); + super.onReady(); + } + + @override + void onInit() { + print("init home"); + super.onInit(); + } + + @override + void onClose() { + print("close home"); + super.onClose(); + } +} diff --git a/star_lock/lib/mine/about/webviewShow_page.dart b/star_lock/lib/mine/about/webviewShow_page.dart index 5e32cf5a..811c316b 100644 --- a/star_lock/lib/mine/about/webviewShow_page.dart +++ b/star_lock/lib/mine/about/webviewShow_page.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/mine/about/webviewShow_logic.dart'; import 'package:star_lock/tools/titleAppBar.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -11,30 +13,17 @@ class WebviewShowPage extends StatefulWidget { } class _WebviewShowPageState extends State { - late WebViewController _webViewController; - String _webURL = ''; - String _webTitle = ''; + final logic = Get.put(WebviewShowLogic()); + final state = Get.find().state; @override void initState() { super.initState(); - - _webViewController = WebViewController() - ..setJavaScriptMode(JavaScriptMode.unrestricted); } @override Widget build(BuildContext context) { - dynamic obj = ModalRoute.of(context)?.settings.arguments; - if (obj != null && (obj["url"] != null)) { - _webURL = obj["url"]; - } - - if (obj != null && (obj["title"] != null)) { - _webTitle = obj["title"]; - } - - _webViewController.loadRequest(Uri.parse(_webURL)); + state.webViewController.loadRequest(Uri.parse(state.webURL)); return Scaffold( resizeToAvoidBottomInset: false, backgroundColor: const Color(0xFFFFFFFF), @@ -43,12 +32,12 @@ class _WebviewShowPageState extends State { haveBack: true, backgroundColor: AppColors.mainColor, ), - body: WebViewWidget(controller: _webViewController)); + body: WebViewWidget(controller: state.webViewController)); } String getWebTitle() { - String webTitleStr = _webTitle; - _webViewController.getTitle().then((result) { + String webTitleStr = state.webTitle; + state.webViewController.getTitle().then((result) { webTitleStr = result!; }); return webTitleStr; diff --git a/star_lock/lib/mine/about/webviewShow_state.dart b/star_lock/lib/mine/about/webviewShow_state.dart new file mode 100644 index 00000000..40d37a4d --- /dev/null +++ b/star_lock/lib/mine/about/webviewShow_state.dart @@ -0,0 +1,15 @@ +import 'package:get/get.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +class WebviewShowState { + late WebViewController webViewController = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted); + var webURL = ''; + var webTitle = ''; + + WebviewShowState() { + Map map = Get.arguments; + webURL = map["url"]; + webTitle = map['title']; + } +} diff --git a/star_lock/lib/mine/mine/starLockMine_logic.dart b/star_lock/lib/mine/mine/starLockMine_logic.dart index a201fa44..2c4a5fa2 100644 --- a/star_lock/lib/mine/mine/starLockMine_logic.dart +++ b/star_lock/lib/mine/mine/starLockMine_logic.dart @@ -19,9 +19,12 @@ class StarLockMineLogic extends BaseGetXController { print("ready home"); super.onReady(); - state.userNickName.value = (await Storage.getNickname())!; - state.userMobile.value = (await Storage.getMobile())!; - state.userEmail.value = (await Storage.getEmail())!; + final data = await Storage.getString(saveUserLoginData); + if (data != null && data.isNotEmpty) { + state.userNickName.value = (await Storage.getNickname())!; + state.userMobile.value = (await Storage.getMobile())!; + state.userEmail.value = (await Storage.getEmail())!; + } } @override diff --git a/star_lock/lib/tools/appFirstEnterHandle.dart b/star_lock/lib/tools/appFirstEnterHandle.dart index 65f6fc91..067a2b7c 100644 --- a/star_lock/lib/tools/appFirstEnterHandle.dart +++ b/star_lock/lib/tools/appFirstEnterHandle.dart @@ -3,9 +3,10 @@ import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/tools/storage.dart'; -import 'package:url_launcher/url_launcher.dart'; class AppFirstEnterHandle { Future getAppFirstEnter(BuildContext widgetContext) async { @@ -34,7 +35,10 @@ class AppFirstEnterHandle { recognizer: TapGestureRecognizer() ..onTap = () { // 处理用户协议点击事件 - _launchURL(XSConstantMacro.userAgreementURL); + Get.toNamed(Routers.webviewShowPage, arguments: { + "url": XSConstantMacro.userAgreementURL, + "title": '用户协议' + }); }, ), const TextSpan(text: '和'), @@ -45,7 +49,10 @@ class AppFirstEnterHandle { recognizer: TapGestureRecognizer() ..onTap = () { // 处理隐私政策点击事件 - _launchURL(XSConstantMacro.privacyPolicyURL); + Get.toNamed(Routers.webviewShowPage, arguments: { + "url": XSConstantMacro.privacyPolicyURL, + "title": '隐私政策' + }); }, ), const TextSpan( @@ -80,13 +87,13 @@ class AppFirstEnterHandle { ); } - _launchURL(String url) async { - if (await canLaunchUrl(Uri.parse(url))) { - await launchUrl(Uri.parse(url)); - } else { - throw '无法打开链接 $url'; - } - } + // _launchURL(String url) async { + // if (await canLaunchUrl(Uri.parse(url))) { + // await launchUrl(Uri.parse(url)); + // } else { + // throw '无法打开链接 $url'; + // } + // } void _exitApp() { exit(0); // 退出应用程序 From e299e38a17b524f9ef370a612740fd2580b09695 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Mon, 11 Mar 2024 15:47:27 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ios=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/README.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/star_lock/README.md b/star_lock/README.md index 0e53a6c1..f3c578d1 100644 --- a/star_lock/README.md +++ b/star_lock/README.md @@ -68,7 +68,13 @@ keytool -list -v -keystore android/app/sky.jks ```bash flutter build apk --split-per-abi --release --flavor sky -t lib/main_sky.dart ``` - +编译后的包: +通用:build/app/outputs/apk/sky/release/app-sky-universal-release.apk +32位:build/app/outputs/apk/sky/release/app-sky-armeabi-v7a-release.apk +64位:build/app/outputs/apk/sky/release/app-sky-arm64-v8a-release.apk +```bash +cp build/app/outputs/apk/sky/release/app-sky-universal-release.apk /d/Downloads/ +``` ## 获取编译包的签名 用于APP备案,国内商店上架等 @@ -108,3 +114,28 @@ java -jar android/huawei/pepk.jar --keystore=android/app/sky.jks --alias=upload ``` 3. 上传密钥 4. 编译和上传 app bundle,和谷歌的一样编译出aab文件即可 + +## 用于app store + +下载flavor模板文件,这会创建.tmp文件夹,只需要执行一次,如果有.tmp文件夹,就不用执行这一步了 +```bash +dart run flutter_flavorizr -p assets:download +dart run flutter_flavorizr -p assets:extract +``` +重新生成Generated.xcconfig以更新购建物版本号等信息 +```bash +flutter build ios --config-only +``` +构建/编译 +```bash +在Xcode中选择菜单 Product->archive +``` +准备截图 +因为模拟器只能运行debug,而不能运行release和profile,所以要修改以下运行配置: +Xcode顶部中间设备选择器左边,Runner选择下拉,选择Edit Scheme,左侧选择Run,右侧的Build Configuration选择Debug-sky +选择Runner:sky-debug 运行于模拟器 + +6.5寸截图选择机型:iphone 11 Pro Max(ios17) +5.5寸截图选择机型:iphone 8 Plus(ios15) + +截图完成记得将Runner改回去,不然编译出来的sky是debug版的。 From 14c5cfbf73369c6aac6e23e97b5ef24c815d0b54 Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Mon, 11 Mar 2024 15:49:28 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index e6f254ac..29095336 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.13+20240309 +version: 1.0.14+20240311 environment: sdk: '>=2.12.0 <3.0.0' From 269a6c6f0c92827bec731fd1de2b5ee2cf605d3a Mon Sep 17 00:00:00 2001 From: GeJiaXiang <353358601@qq.com> Date: Tue, 12 Mar 2024 11:19:06 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/star_lock/README.md b/star_lock/README.md index f3c578d1..c9b3d388 100644 --- a/star_lock/README.md +++ b/star_lock/README.md @@ -135,7 +135,9 @@ flutter build ios --config-only Xcode顶部中间设备选择器左边,Runner选择下拉,选择Edit Scheme,左侧选择Run,右侧的Build Configuration选择Debug-sky 选择Runner:sky-debug 运行于模拟器 -6.5寸截图选择机型:iphone 11 Pro Max(ios17) -5.5寸截图选择机型:iphone 8 Plus(ios15) +6.5寸(1242 x 2688px)截图选择机型:iphone 11 Pro Max(ios17) +5.5寸(1242 x 2208px)截图选择机型:iphone 8 Plus(ios15) (此项目在这个机型会崩溃,无法运行) 截图完成记得将Runner改回去,不然编译出来的sky是debug版的。 + +最后还是随便截图的,然后用PS裁剪成要求的分辨率上传了