diff --git a/Example/GMAI.xcodeproj/project.pbxproj b/Example/GMAI.xcodeproj/project.pbxproj
index 8fb0ee2a74620d5aa5250bd9eb784426998c22d4..bb52cb9b12c36157aa0f4ac501cebd9c9843d9ed 100644
--- a/Example/GMAI.xcodeproj/project.pbxproj
+++ b/Example/GMAI.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		04C38D0623D185C000967633 /* GMTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04C38D0523D185C000967633 /* GMTest.swift */; };
 		6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
 		6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
 		6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
@@ -37,7 +38,9 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		0A5DBE809902833BDBB858D1 /* GMAI.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = GMAI.podspec; path = ../GMAI.podspec; sourceTree = "<group>"; };
+		04C38D0423D185C000967633 /* GMAI_Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GMAI_Example-Bridging-Header.h"; sourceTree = "<group>"; };
+		04C38D0523D185C000967633 /* GMTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GMTest.swift; sourceTree = "<group>"; };
+		0A5DBE809902833BDBB858D1 /* GMAI.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GMAI.podspec; path = ../GMAI.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		334CF5A62F394FC8486DDCBC /* Pods-GMAI_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMAI_Tests.debug.xcconfig"; path = "Target Support Files/Pods-GMAI_Tests/Pods-GMAI_Tests.debug.xcconfig"; sourceTree = "<group>"; };
 		5200AC6F4479E99BEF6550D5 /* Pods-GMAI_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMAI_Example.debug.xcconfig"; path = "Target Support Files/Pods-GMAI_Example/Pods-GMAI_Example.debug.xcconfig"; sourceTree = "<group>"; };
 		6003F58A195388D20070C39A /* GMAI_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GMAI_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -61,9 +64,9 @@
 		606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
 		70031B9567D2418743D3DA73 /* Pods_GMAI_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMAI_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		76BB2ADE11C709E2894A552E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
+		76BB2ADE11C709E2894A552E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
 		873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
-		9C4B6AE54E205E7D164F97C4 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = "<group>"; };
+		9C4B6AE54E205E7D164F97C4 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
 		A1E7D89F0F02B4806E6DC6F7 /* Pods_GMAI_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMAI_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		D56A37560FC48A5D72E548FC /* Pods-GMAI_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMAI_Tests.release.xcconfig"; path = "Target Support Files/Pods-GMAI_Tests/Pods-GMAI_Tests.release.xcconfig"; sourceTree = "<group>"; };
 		ED2121FEFA5536E7DA5AFCFE /* Pods-GMAI_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMAI_Example.release.xcconfig"; path = "Target Support Files/Pods-GMAI_Example/Pods-GMAI_Example.release.xcconfig"; sourceTree = "<group>"; };
@@ -140,6 +143,8 @@
 				71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */,
 				6003F5A8195388D20070C39A /* Images.xcassets */,
 				6003F594195388D20070C39A /* Supporting Files */,
+				04C38D0523D185C000967633 /* GMTest.swift */,
+				04C38D0423D185C000967633 /* GMAI_Example-Bridging-Header.h */,
 			);
 			name = "Example for GMAI";
 			path = GMAI;
@@ -193,7 +198,6 @@
 				334CF5A62F394FC8486DDCBC /* Pods-GMAI_Tests.debug.xcconfig */,
 				D56A37560FC48A5D72E548FC /* Pods-GMAI_Tests.release.xcconfig */,
 			);
-			name = Pods;
 			path = Pods;
 			sourceTree = "<group>";
 		};
@@ -248,6 +252,9 @@
 				LastUpgradeCheck = 0720;
 				ORGANIZATIONNAME = Q14;
 				TargetAttributes = {
+					6003F589195388D20070C39A = {
+						LastSwiftMigration = 1130;
+					};
 					6003F5AD195388D20070C39A = {
 						TestTargetID = 6003F589195388D20070C39A;
 					};
@@ -258,6 +265,7 @@
 			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			knownRegions = (
+				English,
 				en,
 				Base,
 			);
@@ -417,6 +425,7 @@
 				6003F59E195388D20070C39A /* GMAppDelegate.m in Sources */,
 				6003F5A7195388D20070C39A /* GMViewController.m in Sources */,
 				6003F59A195388D20070C39A /* main.m in Sources */,
+				04C38D0623D185C000967633 /* GMTest.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -544,12 +553,16 @@
 			baseConfigurationReference = 5200AC6F4479E99BEF6550D5 /* Pods-GMAI_Example.debug.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "GMAI/GMAI-Prefix.pch";
 				INFOPLIST_FILE = "GMAI/GMAI-Info.plist";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				MODULE_NAME = ExampleApp;
 				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "GMAI/GMAI_Example-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 4.0;
 				WRAPPER_EXTENSION = app;
 			};
@@ -560,12 +573,15 @@
 			baseConfigurationReference = ED2121FEFA5536E7DA5AFCFE /* Pods-GMAI_Example.release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "GMAI/GMAI-Prefix.pch";
 				INFOPLIST_FILE = "GMAI/GMAI-Info.plist";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				MODULE_NAME = ExampleApp;
 				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "GMAI/GMAI_Example-Bridging-Header.h";
 				SWIFT_VERSION = 4.0;
 				WRAPPER_EXTENSION = app;
 			};
@@ -575,6 +591,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 334CF5A62F394FC8486DDCBC /* Pods-GMAI_Tests.debug.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
@@ -600,6 +617,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = D56A37560FC48A5D72E548FC /* Pods-GMAI_Tests.release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
diff --git a/Example/GMAI/GMAI_Example-Bridging-Header.h b/Example/GMAI/GMAI_Example-Bridging-Header.h
new file mode 100644
index 0000000000000000000000000000000000000000..1b2cb5d6d09fe5019d2f930632eaa15b4e51aedc
--- /dev/null
+++ b/Example/GMAI/GMAI_Example-Bridging-Header.h
@@ -0,0 +1,4 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
diff --git a/Example/GMAI/GMTest.swift b/Example/GMAI/GMTest.swift
new file mode 100644
index 0000000000000000000000000000000000000000..928f412c54f93e59ea68b5df727b97d3bd645fd5
--- /dev/null
+++ b/Example/GMAI/GMTest.swift
@@ -0,0 +1,13 @@
+//
+//  GMTest.swift
+//  GMAI_Example
+//
+//  Created by Q14 on 2020/1/17.
+//  Copyright © 2020 Q14. All rights reserved.
+//
+
+import UIKit
+
+class GMTest: NSObject {
+
+}
diff --git a/GMAI.podspec b/GMAI.podspec
index d6ff2412949d33411322188380df88aaafcfe24c..085a158428f0d91e1e0cc17a733ce201315b32dd 100644
--- a/GMAI.podspec
+++ b/GMAI.podspec
@@ -29,6 +29,7 @@ TODO: Add long description of the pod here.
   # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
 
   s.ios.deployment_target = '8.0'
+  s.static_fr
 
   s.source_files = 'GMAI/Classes/**/*'