diff --git a/README.md b/README.md index 49c4c71..e0f8ce7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 91Dj +# huangguomanju A new Flutter project. 3.16.8 diff --git a/android/app/build.gradle b/android/app/build.gradle index b506e39..b492047 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -7,9 +7,12 @@ plugins { apply plugin: 'top.niunaijun.blackobfuscator' apply plugin: 'walle' -def bundledReleaseKeystore = file('../keystore/nut.jks') -def legacyBundledReleaseKeystore = file('../keystore/nut.jks.old') -def resolvedReleaseKeystore = bundledReleaseKeystore.exists() ? bundledReleaseKeystore : legacyBundledReleaseKeystore +// 本产品独立签名:jks 与密码放在 android/key.properties(已 gitignore,勿提交),与其他产品不共用 +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystorePropertiesFile.withInputStream { keystoreProperties.load(it) } +} android { namespace "com.xvproject" @@ -31,7 +34,7 @@ android { } defaultConfig { - applicationId "com.jydj.tzzoer" + applicationId "com.hgmj.manju" minSdk = 24 targetSdk = 36 versionCode = 1 @@ -40,11 +43,11 @@ android { signingConfigs { release { - storeFile resolvedReleaseKeystore - storePassword 'jiahua123456' + storeFile keystoreProperties['storeFile'] ? rootProject.file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] storeType 'jks' - keyAlias 'nut' - keyPassword 'jiahua123456' + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] v1SigningEnabled false v2SigningEnabled true } @@ -81,7 +84,7 @@ android { println "outputFileDir= ${outputFileDir}" def abi = filters.find { it.filterType.toString() == "ABI" }?.identifier def abiSuffix = (variant.outputs.size() > 1 && abi) ? "_${abi}" : "" - def path = "91dj" + '_release' + "_" + variant.versionName + abiSuffix + "_" + createTime + ".apk" + def path = "hgmj" + '_release' + "_" + variant.versionName + abiSuffix + "_" + createTime + ".apk" println("path= " + path) outputFileName = path } diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_splash_bg.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_splash_bg.webp index 3152507..46dbd3d 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_splash_bg.webp and b/android/app/src/main/res/mipmap-xxhdpi/ic_splash_bg.webp differ diff --git a/assets/images/launch/ic_splash_bg.webp b/assets/images/launch/ic_splash_bg.webp index 3152507..46dbd3d 100644 Binary files a/assets/images/launch/ic_splash_bg.webp and b/assets/images/launch/ic_splash_bg.webp differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 1.png index d159a82..43dae44 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 1.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 2.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 2.png index 5e25244..e19fec3 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 2.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg 2.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg.png index 28acc42..c4892c7 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/ic_splash_bg.png differ diff --git a/lib/alert/splash/line_error_dialog.dart b/lib/alert/splash/line_error_dialog.dart index f176b46..df6fcaa 100644 --- a/lib/alert/splash/line_error_dialog.dart +++ b/lib/alert/splash/line_error_dialog.dart @@ -20,7 +20,7 @@ class LineErrorDialog extends StatelessWidget { const LineErrorDialog({super.key, this.callback}); - String get officialUrl => '91dj1.net'; + String get officialUrl => 'huangguomj.net'; @override Widget build(BuildContext context) { diff --git a/lib/config/address.dart b/lib/config/address.dart index 64a61fa..f31aaeb 100755 --- a/lib/config/address.dart +++ b/lib/config/address.dart @@ -31,8 +31,8 @@ class Address { /// 图片加载地址 static String? baseImagePath; - /// 落地页地址 默认地址 - static String groundUrl = ''; + /// 落地页地址(永久域名),后台下发 GUIDE 时覆盖 + static String groundUrl = 'https://huangguomj.net'; /// 备用落地页地址 默认地址 static String backUpURl = ''; /// tg群里地址 默认地址 diff --git a/lib/hj_page/find/acg_game_recommend_page.dart b/lib/hj_page/find/acg_game_recommend_page.dart index 82b770d..c194c90 100644 --- a/lib/hj_page/find/acg_game_recommend_page.dart +++ b/lib/hj_page/find/acg_game_recommend_page.dart @@ -17,7 +17,8 @@ class AcgGameRecommendPage extends StatefulWidget { State createState() => _AcgGameRecommendPageState(); } -class _AcgGameRecommendPageState extends State with UniqueTagMixin { +class _AcgGameRecommendPageState extends State + with UniqueTagMixin { @override Widget build(BuildContext context) { return GetBuilder( diff --git a/lib/hj_page/mine/home_mine_logic.dart b/lib/hj_page/mine/home_mine_logic.dart index 8a35489..b855ec9 100644 --- a/lib/hj_page/mine/home_mine_logic.dart +++ b/lib/hj_page/mine/home_mine_logic.dart @@ -21,10 +21,8 @@ import '../web_page/h5_page.dart'; import 'collec_history_buy/col_his_buy_page.dart'; import 'identity/mine_identity_page.dart'; import 'message/message_center_page.dart'; -import 'mine_drive/mine_drive_page.dart'; import 'mine_following/mine_following_view.dart'; import 'mine_post/mine_publish_main_page.dart'; -import 'mine_setting/mine_code_page.dart'; import 'mine_setting/mine_password_logic.dart'; import 'mine_setting/mine_password_page.dart'; import 'mine_setting/mine_setting_page.dart'; @@ -48,13 +46,10 @@ class MineMainLogic extends GetxController with GetTickerProviderStateMixin { /// 常用功能: (标题, 图标, 点击事件) List<(String, String, void Function())> get commonlyUsedFunction => [ - ("创作中心", 'mine_menu_1.png'.mineImgPath, () => Get.to(MinePublishPostPage(), preventDuplicates: false)), ("意见反馈", 'mine_menu_2.png'.mineImgPath, () => Get.to(() => const MineFeedbackPage())), ("我的下载", 'mine_follow.png'.mineImgPath, () => Get.to(() => VideoCachePage())), ("我的关注", 'mine_offical.png'.mineImgPath, () => Get.to(() => MineFollowingPage())), ("分享邀请", 'mine_menu_5.png'.mineImgPath, () => Get.to(() => MineSharePage())), - ("领取兑换", 'mine_menu_6.png'.mineImgPath, () => Get.to(() => MineExchangeCodePage(type: 1))), - ("官方社群", 'mine_menu_7.png'.mineImgPath, () => Get.to(() => MineDrivePage())), ("应用推荐", 'mine_menu_8.png'.mineImgPath, () => Get.to(() => const WelfareHomePage(index: 1), preventDuplicates: false)), ("账号凭证", 'mine_menu_9.png'.mineImgPath, () => Get.dialog(MineAccountIdentityPage())), ("锁屏密码", 'mine_menu_10.png'.mineImgPath, _toggleLockPassword), diff --git a/lib/track_event_manager/device_service.dart b/lib/track_event_manager/device_service.dart index 7d7d73b..e6f9f78 100644 --- a/lib/track_event_manager/device_service.dart +++ b/lib/track_event_manager/device_service.dart @@ -82,7 +82,8 @@ class DeviceInfoService { /// note_this:不要修改这个值 static const iosBundleId = "yinse_opera"; static const naticeChannel = 'com.yinse/device'; //原生通道(设备/视频/编解码信息) - static const requestChannel = 'com.yinse/request'; //原生系统桥(现只剩换启动图标 changeIcon) + static const requestChannel = + 'com.yinse/request'; //原生系统桥(现只剩换启动图标 changeIcon) /// 外部调用入口 static Future init() async { @@ -122,7 +123,9 @@ class DeviceInfoService { /// 拼装 UA。[deviceId] 可覆盖默认 deviceId static String genUserAgent({String? deviceId}) { final Map params = { - "DevID": (deviceId == null || deviceId.isEmpty) ? DeviceInfoService.deviceId : deviceId, + "DevID": (deviceId == null || deviceId.isEmpty) + ? DeviceInfoService.deviceId + : deviceId, "DevType": DeviceInfoService.devType, "SysType": Platform.operatingSystem, "Ver": Config.innerVersion, @@ -133,7 +136,8 @@ class DeviceInfoService { 'device_model': DeviceInfoService.model, }; params.removeWhere((key, value) => value == null || value.isEmpty); - final ua = Uri.encodeComponent(params.entries.map((e) => "${e.key}=${e.value}").join(";")); + final ua = Uri.encodeComponent( + params.entries.map((e) => "${e.key}=${e.value}").join(";")); return ua; } @@ -147,12 +151,14 @@ class DeviceInfoService { return oldUa; } final newUa = genUserAgent(deviceId: deviceId); - if (TextUtil.isNotEmpty(newUa)) lightKV.setString(StoreKeys.UA_CACHE, newUa); + if (TextUtil.isNotEmpty(newUa)) + lightKV.setString(StoreKeys.UA_CACHE, newUa); return newUa; } /// 清除 UA 缓存 - static Future clearCachedUserAgent() => lightKV.setString(StoreKeys.UA_CACHE, null); + static Future clearCachedUserAgent() => + lightKV.setString(StoreKeys.UA_CACHE, null); /// 从剪切板 json 里取推广 tid,取不到返回空串 static Future fetchTraceId() async { @@ -223,7 +229,8 @@ class DeviceInfoService { } /// Android 回写 SP + 文件 - static Future _persistAndroid(SharedPreferences prefs, String id) async { + static Future _persistAndroid( + SharedPreferences prefs, String id) async { await prefs.setString(StoreKeys.DEVICE_ID, id); await _writeIdFile(id); return id; @@ -257,7 +264,7 @@ class DeviceInfoService { } if (_isInvalidId(raw)) raw = const Uuid().v4(); // 业务规则:91jd_ 前缀,去空格,限制 50 字符(日志系统约束) - return '91dj_${raw.replaceAll(' ', '')}'.limit(50); + return 'hgmj_${raw.replaceAll(' ', '')}'.limit(50); } /// 脏值检测:空 / 太短 / 全 0 / 已知脏值 @@ -306,7 +313,9 @@ class DeviceInfoService { static Future getChannel() async { if (!Platform.isAndroid) return ""; try { - return await const MethodChannel(naticeChannel).invokeMethod("getChannel") ?? ""; + return await const MethodChannel(naticeChannel) + .invokeMethod("getChannel") ?? + ""; } on PlatformException { return ""; }