feat:补充注释和上传安卓签名文件
This commit is contained in:
parent
73b47f1780
commit
9a095ad96f
14
README.md
14
README.md
@ -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
6
android/.gitignore
vendored
@ -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
4
android/key.properties
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
storePassword=123456
|
||||||
|
keyPassword=123456
|
||||||
|
keyAlias=com.kinetra.adehok.app
|
||||||
|
storeFile=../kinetra_adehok_app.jks
|
||||||
BIN
android/kinetra_adehok_app.jks
Normal file
BIN
android/kinetra_adehok_app.jks
Normal file
Binary file not shown.
@ -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";
|
||||||
|
|
||||||
// 用户
|
// 用户
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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';
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
|
|||||||
@ -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._();
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user