mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
rm: field password of PrivateKeyInfo
This commit is contained in:
@@ -470,7 +470,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -478,7 +478,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -602,7 +602,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -610,7 +610,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -628,7 +628,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||||
@@ -636,7 +636,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
@@ -657,7 +657,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -670,7 +670,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
@@ -696,7 +696,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -709,7 +709,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -732,7 +732,7 @@
|
|||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
DEVELOPMENT_TEAM = BA88US33G6;
|
DEVELOPMENT_TEAM = BA88US33G6;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -745,7 +745,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
|||||||
@@ -5,25 +5,21 @@ part 'private_key_info.g.dart';
|
|||||||
@HiveType(typeId: 1)
|
@HiveType(typeId: 1)
|
||||||
class PrivateKeyInfo {
|
class PrivateKeyInfo {
|
||||||
@HiveField(0)
|
@HiveField(0)
|
||||||
late String id;
|
final String id;
|
||||||
@HiveField(1)
|
@HiveField(1)
|
||||||
late String key;
|
final String key;
|
||||||
@Deprecated('Never use this field')
|
|
||||||
@HiveField(2)
|
|
||||||
late String password;
|
|
||||||
|
|
||||||
PrivateKeyInfo({
|
PrivateKeyInfo({
|
||||||
required this.id,
|
required this.id,
|
||||||
required this.key,
|
required this.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
PrivateKeyInfo.fromJson(Map<String, dynamic> json) {
|
PrivateKeyInfo.fromJson(Map<String, dynamic> json)
|
||||||
id = json["id"].toString();
|
: id = json["id"].toString(),
|
||||||
key = json["private_key"].toString();
|
key = json["private_key"].toString();
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final Map<String, dynamic> data = <String, dynamic>{};
|
final data = <String, String>{};
|
||||||
data["id"] = id;
|
data["id"] = id;
|
||||||
data["private_key"] = key;
|
data["private_key"] = key;
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -25,14 +25,11 @@ class PrivateKeyInfoAdapter extends TypeAdapter<PrivateKeyInfo> {
|
|||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, PrivateKeyInfo obj) {
|
void write(BinaryWriter writer, PrivateKeyInfo obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(3)
|
..writeByte(2)
|
||||||
..writeByte(0)
|
..writeByte(0)
|
||||||
..write(obj.id)
|
..write(obj.id)
|
||||||
..writeByte(1)
|
..writeByte(1)
|
||||||
..write(obj.key)
|
..write(obj.key);
|
||||||
..writeByte(2)
|
|
||||||
// ignore: deprecated_member_use_from_same_package
|
|
||||||
..write(obj.password);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
class BuildData {
|
class BuildData {
|
||||||
static const String name = "ServerBox";
|
static const String name = "ServerBox";
|
||||||
static const int build = 412;
|
static const int build = 413;
|
||||||
static const String engine = "3.10.6";
|
static const String engine = "3.10.6";
|
||||||
static const String buildAt = "2023-08-04 22:48:00.585855";
|
static const String buildAt = "2023-08-04 23:23:25.517350";
|
||||||
static const int modifications = 4;
|
static const int modifications = 5;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ import '../../../locator.dart';
|
|||||||
const _format = 'text/plain';
|
const _format = 'text/plain';
|
||||||
|
|
||||||
class PrivateKeyEditPage extends StatefulWidget {
|
class PrivateKeyEditPage extends StatefulWidget {
|
||||||
const PrivateKeyEditPage({Key? key, this.info}) : super(key: key);
|
const PrivateKeyEditPage({Key? key, this.pki}) : super(key: key);
|
||||||
|
|
||||||
final PrivateKeyInfo? info;
|
final PrivateKeyInfo? pki;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_PrivateKeyEditPageState createState() => _PrivateKeyEditPageState();
|
_PrivateKeyEditPageState createState() => _PrivateKeyEditPageState();
|
||||||
@@ -68,13 +68,13 @@ class _PrivateKeyEditPageState extends State<PrivateKeyEditPage>
|
|||||||
}
|
}
|
||||||
|
|
||||||
PreferredSizeWidget _buildAppBar() {
|
PreferredSizeWidget _buildAppBar() {
|
||||||
final actions = widget.info == null
|
final actions = widget.pki == null
|
||||||
? null
|
? null
|
||||||
: [
|
: [
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: _s.delete,
|
tooltip: _s.delete,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_provider.delete(widget.info!);
|
_provider.delete(widget.pki!);
|
||||||
context.pop();
|
context.pop();
|
||||||
},
|
},
|
||||||
icon: const Icon(Icons.delete))
|
icon: const Icon(Icons.delete))
|
||||||
@@ -100,9 +100,14 @@ class _PrivateKeyEditPageState extends State<PrivateKeyEditPage>
|
|||||||
setState(() {
|
setState(() {
|
||||||
_loading = centerSizedLoading;
|
_loading = centerSizedLoading;
|
||||||
});
|
});
|
||||||
final info = PrivateKeyInfo(id: name, key: key);
|
|
||||||
try {
|
try {
|
||||||
info.key = await compute(decyptPem, [key, pwd]);
|
final decrypted = await compute(decyptPem, [key, pwd]);
|
||||||
|
final pki = PrivateKeyInfo(id: name, key: decrypted);
|
||||||
|
if (widget.pki != null) {
|
||||||
|
_provider.update(widget.pki!, pki);
|
||||||
|
} else {
|
||||||
|
_provider.add(pki);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showSnackBar(context, Text(e.toString()));
|
showSnackBar(context, Text(e.toString()));
|
||||||
rethrow;
|
rethrow;
|
||||||
@@ -111,11 +116,6 @@ class _PrivateKeyEditPageState extends State<PrivateKeyEditPage>
|
|||||||
_loading = nil;
|
_loading = nil;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (widget.info != null) {
|
|
||||||
_provider.update(widget.info!, info);
|
|
||||||
} else {
|
|
||||||
_provider.add(info);
|
|
||||||
}
|
|
||||||
context.pop();
|
context.pop();
|
||||||
},
|
},
|
||||||
child: const Icon(Icons.save),
|
child: const Icon(Icons.save),
|
||||||
@@ -192,9 +192,9 @@ class _PrivateKeyEditPageState extends State<PrivateKeyEditPage>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> afterFirstLayout(BuildContext context) async {
|
Future<void> afterFirstLayout(BuildContext context) async {
|
||||||
if (widget.info != null) {
|
if (widget.pki != null) {
|
||||||
_nameController.text = widget.info!.id;
|
_nameController.text = widget.pki!.id;
|
||||||
_keyController.text = widget.info!.key;
|
_keyController.text = widget.pki!.key;
|
||||||
} else {
|
} else {
|
||||||
final clipdata = ((await Clipboard.getData(_format))?.text ?? '').trim();
|
final clipdata = ((await Clipboard.getData(_format))?.text ?? '').trim();
|
||||||
if (clipdata.startsWith('-----BEGIN') && clipdata.endsWith('-----')) {
|
if (clipdata.startsWith('-----BEGIN') && clipdata.endsWith('-----')) {
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class _PrivateKeyListState extends State<PrivateKeysListPage> {
|
|||||||
title: Text(key.pkis[idx].id),
|
title: Text(key.pkis[idx].id),
|
||||||
trailing: TextButton(
|
trailing: TextButton(
|
||||||
onPressed: () => AppRoute(
|
onPressed: () => AppRoute(
|
||||||
PrivateKeyEditPage(info: key.pkis[idx]),
|
PrivateKeyEditPage(pki: key.pkis[idx]),
|
||||||
'private key edit page',
|
'private key edit page',
|
||||||
).go(context),
|
).go(context),
|
||||||
child: Text(_s.edit),
|
child: Text(_s.edit),
|
||||||
@@ -108,7 +108,7 @@ class _PrivateKeyListState extends State<PrivateKeysListPage> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
context.pop();
|
context.pop();
|
||||||
AppRoute(
|
AppRoute(
|
||||||
PrivateKeyEditPage(info: sysPk),
|
PrivateKeyEditPage(pki: sysPk),
|
||||||
'private key edit page',
|
'private key edit page',
|
||||||
).go(context);
|
).go(context);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -475,9 +475,9 @@
|
|||||||
baseConfigurationReference = C1C758C41C4E208965A68933 /* Pods-RunnerTests.debug.xcconfig */;
|
baseConfigurationReference = C1C758C41C4E208965A68933 /* Pods-RunnerTests.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@@ -490,9 +490,9 @@
|
|||||||
baseConfigurationReference = 15AF97DF993E8968098D6EBE /* Pods-RunnerTests.release.xcconfig */;
|
baseConfigurationReference = 15AF97DF993E8968098D6EBE /* Pods-RunnerTests.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@@ -505,9 +505,9 @@
|
|||||||
baseConfigurationReference = 7CFA7DE7FABA75685DFB6948 /* Pods-RunnerTests.profile.xcconfig */;
|
baseConfigurationReference = 7CFA7DE7FABA75685DFB6948 /* Pods-RunnerTests.profile.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CURRENT_PROJECT_VERSION = 412;
|
CURRENT_PROJECT_VERSION = 413;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0.412;
|
MARKETING_VERSION = 1.0.413;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
|||||||
Reference in New Issue
Block a user