feat:补充注释和上传安卓签名文件

This commit is contained in:
zengyi 2025-10-10 13:45:06 +08:00
parent 73b47f1780
commit 9a095ad96f
15 changed files with 34 additions and 11 deletions

View File

@ -41,7 +41,7 @@ https://pub.dev/packages/flutter_native_splash
# 生成安卓打包证书 # 生成安卓打包证书
keytool -genkeypair -v -keystore kinetra_adehok_app.jks -keyalg RSA -keysize 2048 -validity 10000 -alias com.kinetra.adehok.app keytool -genkeypair -v -keystore kinetra_adehok_app.jks -keyalg RSA -keysize 2048 -validity 10000 -alias com.kinetra.adehok.app
口令:123456@nyxora 口令:123456
# 查看安卓证书指纹 # 查看安卓证书指纹
keytool -list -v -keystore kinetra_adehok_app.jks keytool -list -v -keystore kinetra_adehok_app.jks
@ -66,5 +66,13 @@ dart run build_runner watch --delete-conflicting-outputs
# 打包 # 打包
正式包: flutter build apk --release 正式包: flutter build apk --release
aab的包: flutter build appbundle aab的包: flutter build aab --release
iOS: flutter build ipa iOS: flutter build ipa或者flutter build iOS 完成后在xcode点击工具栏Product选择archive
# 文件结构
flutter_kinetra
-android:安卓侧相关配置文件
-assets:图片、字体静态资源
-ios:ios侧相关配置文件
-lib主要代码文件
main.dart:项目启动入口函数

6
android/.gitignore vendored
View File

@ -9,6 +9,6 @@ GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore. # Remember to never publicly share your keystore.
# See https://flutter.dev/to/reference-keystore # See https://flutter.dev/to/reference-keystore
key.properties #key.properties
**/*.keystore #**/*.keystore
**/*.jks #**/*.jks

4
android/key.properties Normal file
View File

@ -0,0 +1,4 @@
storePassword=123456
keyPassword=123456
keyAlias=com.kinetra.adehok.app
storeFile=../kinetra_adehok_app.jks

Binary file not shown.

View File

@ -1,7 +1,7 @@
//
class KtApis { class KtApis {
static const String baseUrl = "https://api-csjiuxi.csjiuxi.com/kinet"; static const String baseUrl = "https://api-csjiuxi.csjiuxi.com/kinet";
// static const String baseUrl = "https://test1-api.guyantv.com"; // static const String baseUrl = "https://test1-api.guyantv.com";
// static const String baseUrl = "https://api-pdaroll.pdaroll.com/panda";
static const String homeAllModules = "/home/all-modules"; static const String homeAllModules = "/home/all-modules";
static const String newShortPlay = "/newShortPlay"; static const String newShortPlay = "/newShortPlay";
@ -24,7 +24,7 @@ class KtApis {
static const String uploadW2a = "/w2aSelfAttribution"; static const String uploadW2a = "/w2aSelfAttribution";
static const String activeAfterWatchingVideo = "/activeAfterWatchingVideo"; static const String activeAfterWatchingVideo = "/activeAfterWatchingVideo";
static String W2A_PREFIX = "[QJ]"; static String W2A_PREFIX = "[QJ]";
static String W2A_NAME = "pandaloom"; static String W2A_NAME = "kinetra";
static String adjustToken = "z44550428xz4"; static String adjustToken = "z44550428xz4";
// //

View File

@ -7,6 +7,7 @@ import 'package:flustars/flustars.dart';
import '../kt_utils/kt_device_info_utils.dart'; import '../kt_utils/kt_device_info_utils.dart';
import '../kt_utils/kt_keys.dart'; import '../kt_utils/kt_keys.dart';
///
class RequestInterceptor extends Interceptor { class RequestInterceptor extends Interceptor {
@override @override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) { void onRequest(RequestOptions options, RequestInterceptorHandler handler) {

View File

@ -12,6 +12,7 @@ import 'kt_short_video/view.dart';
import 'kt_splash_page.dart'; import 'kt_splash_page.dart';
import 'kt_webview_page.dart'; import 'kt_webview_page.dart';
///
class KtRoutes { class KtRoutes {
static const String splash = '/'; static const String splash = '/';
static const String home = '/main'; static const String home = '/main';

View File

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
//
class KtDeviceInfoUtil { class KtDeviceInfoUtil {
static final KtDeviceInfoUtil _instance = KtDeviceInfoUtil._internal(); static final KtDeviceInfoUtil _instance = KtDeviceInfoUtil._internal();

View File

@ -4,6 +4,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import '../kt_model/kt_goods_bean.dart'; import '../kt_model/kt_goods_bean.dart';
///restore工具类
class KtPurchaseRestoreUtil { class KtPurchaseRestoreUtil {
static final KtPurchaseRestoreUtil _instance = KtPurchaseRestoreUtil._internal(); static final KtPurchaseRestoreUtil _instance = KtPurchaseRestoreUtil._internal();

View File

@ -2,7 +2,7 @@ import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart';
//toast提示工具类
final class KtToastUtils { final class KtToastUtils {
KtToastUtils._(); KtToastUtils._();

View File

@ -5,8 +5,9 @@ import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:in_app_purchase_android/billing_client_wrappers.dart'; import 'package:in_app_purchase_android/billing_client_wrappers.dart';
import 'package:in_app_purchase_android/in_app_purchase_android.dart'; import 'package:in_app_purchase_android/in_app_purchase_android.dart';
import 'package:in_app_purchase_storekit/in_app_purchase_storekit.dart'; import 'package:in_app_purchase_storekit/in_app_purchase_storekit.dart';
//
class KtUtils { class KtUtils {
///
static String getTimeZoneOffset(DateTime dateTime) { static String getTimeZoneOffset(DateTime dateTime) {
Duration offset = dateTime.timeZoneOffset; Duration offset = dateTime.timeZoneOffset;
String sign = offset.isNegative ? '-' : '+'; String sign = offset.isNegative ? '-' : '+';
@ -27,7 +28,7 @@ class KtUtils {
return !isEmpty(value); return !isEmpty(value);
} }
///iOS内购优惠价格
static String getDiscountPrice(ProductDetails? product, {bool showDiscount = false}) { static String getDiscountPrice(ProductDetails? product, {bool showDiscount = false}) {
String price = product?.price ?? ''; String price = product?.price ?? '';
if (product == null) return price; if (product == null) return price;

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart'; import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
//app弹窗封装
class KtDialog extends StatelessWidget { class KtDialog extends StatelessWidget {
final String title; final String title;
final String subTitle; final String subTitle;

View File

@ -2,10 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart'; import 'package:flutter_kinetra/kt_utils/kt_string_extend.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
///
enum KtErrorStatusType { noNetwork, loadFailed, nothingYet, notFound } enum KtErrorStatusType { noNetwork, loadFailed, nothingYet, notFound }
///loading状态枚举
enum KtLoadStatusType { loading, loadSuccess, loadFailed, loadNoData } enum KtLoadStatusType { loading, loadSuccess, loadFailed, loadNoData }
///
class KtStatusWidget extends StatelessWidget { class KtStatusWidget extends StatelessWidget {
final KtErrorStatusType type; final KtErrorStatusType type;
final String? message; final String? message;

View File

@ -8,6 +8,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../kt_model/kt_store_bean.dart'; import '../kt_model/kt_store_bean.dart';
///
class KtStoreWidget extends StatefulWidget { class KtStoreWidget extends StatefulWidget {
final KtStoreBean store; final KtStoreBean store;
final bool onlyCoins; final bool onlyCoins;

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
///
class CustomVideoProgressBar extends StatefulWidget { class CustomVideoProgressBar extends StatefulWidget {
final VideoPlayerController controller; final VideoPlayerController controller;