1、制作SDK
創(chuàng)建工程選Framework
2拇派、設(shè)置工程的Build Settings的Build Active Architecture Only為NO
3荷辕、設(shè)置run為release
4、設(shè)置最低版本號(hào)與機(jī)型
5件豌、設(shè)置Mach-O Type為Static Library(靜態(tài)庫(kù))
6疮方、模擬器真機(jī)合并是會(huì)報(bào)錯(cuò),模擬器里也包含arm64茧彤,需要排除一下骡显,Build Settings ->Architectures ->Excluded Architectures -> Release -> Any iOS Simulator SDK -> arm64
7、模擬器真機(jī)各運(yùn)行一遍曾掂,Products會(huì)生成對(duì)應(yīng)的庫(kù)惫谤,右擊 -> Show in Finder 可以看到生成的對(duì)應(yīng)庫(kù),查看庫(kù)支持的機(jī)型可用命令:lipo -info framework路徑
8珠洗、合并真機(jī)模擬器:lipo -create 真機(jī)路徑 模擬器路徑 -output 真機(jī)路徑
9溜歪、本地集成的時(shí)候如果是M1芯片模擬器運(yùn)行會(huì)報(bào)錯(cuò):building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
解決方案:源工程和pod工程去掉arm64
10、bundle的生成:桌面上新建文件夾修改后綴為.bundle然后把圖片放進(jìn)去
11许蓖、上傳到git上
創(chuàng)建一個(gè)SDK文件夾蝴猪,把剛剛生成的framwork和bundle放入文件夾中,再上傳到git
12膊爪、上傳到cocopods上
先給剛剛上傳git的SDK打個(gè)tag值自阱,cd到SDK目錄下:
git tag 1.0.0
git push --tags
這個(gè)tag要和之后創(chuàng)建的podspec版本要一直,以后升級(jí)SDK后都要修改
13米酬、創(chuàng)建podspec
cd到SDK目錄下:pod spec create FrameworkTest
spec示例:
#
#? Be sure to run `pod spec lint GameFrameworkTool.podspec' to ensure this is a
#? valid spec and to remove all comments including this before submitting the spec.
#
#? To learn more about Podspec attributes see https://guides.cocoapods.org/syntax/podspec.html
#? To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
#
Pod::Spec.new do |spec|
? # ―――? Spec Metadata? ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? These will help people to find your library, and whilst it
? #? can feel like a chore to fill in it's definitely to your advantage. The
? #? summary should be tweet-length, and the description more in depth.
? #
? spec.name? ? ? ? = "GameFrameworkTool"
? spec.version? ? ? = "1.1.7"
? spec.summary? ? ? = "GameSDK Tool"
? # This description is used to generate tags and improve search results.
? #? * Think: What does it do? Why did you write it? What is the focus?
? #? * Try to keep it short, snappy and to the point.
? #? * Write the description between the DESC delimiters below.
? #? * Finally, don't worry about the indent, CocoaPods strips it!
? spec.description? = <<-DESC
? 工具類
? ? ? ? ? ? ? ? ? DESC
? spec.homepage? ? = "https://github.com/shuaiChenging/Game-SDK.git"
? # spec.screenshots? = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
? # ―――? Spec License? ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? Licensing your code is important. See https://choosealicense.com for more info.
? #? CocoaPods will detect a license file if there is a named LICENSE*
? #? Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
? #
? # spec.license? ? ? = "MIT (example)"
? spec.license? ? ? = { :type => "MIT", :file => "LICENSE" }
? # ――― Author Metadata? ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? Specify the authors of the library, with email addresses. Email addresses
? #? of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
? #? accepts just a name if you'd rather not provide an email address.
? #
? #? Specify a social_media_url where others can refer to, for example a twitter
? #? profile URL.
? #
? spec.author? ? ? ? ? ? = { "111" => "1111" }
? # Or just: spec.author? ? = "111"
? # spec.authors? ? ? ? ? ? = { "111" => "1111" }
? # spec.social_media_url? = "https://twitter.com/1111"
? # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? If this Pod runs only on iOS or OS X, then specify the platform and
? #? the deployment target. You can optionally include the target after the platform.
? #
? spec.platform? ? = :ios
? spec.ios.deployment_target = "12.0"
? # spec.platform? ? = :ios, "12.0"
? #? When using multiple platforms
? # spec.ios.deployment_target = "5.0"
? # spec.osx.deployment_target = "10.7"
? # spec.watchos.deployment_target = "2.0"
? # spec.tvos.deployment_target = "9.0"
? # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? Specify the location from where the source should be retrieved.
? #? Supports git, hg, bzr, svn and HTTP.
? #
? spec.source? ? ? = { :git => "https://github.com/shuaiChenging/Game-SDK.git", :tag => "#{spec.version}" }
? # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? CocoaPods is smart about how it includes source code. For source files
? #? giving a folder will include any swift, h, m, mm, c & cpp files.
? #? For header files it will include any header in the folder.
? #? Not including the public_header_files will make all headers public.
? #
? #spec.source_files? = "Classes", "Classes/**/*.{h,m}"
? #spec.exclude_files = "Classes/Exclude"
? # spec.public_header_files = "Classes/**/*.h"
? # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? A list of resources included with the Pod. These are copied into the
? #? target bundle with a build phase script. Anything else will be cleaned.
? #? You can preserve files from being cleaned, please don't preserve
? #? non-essential files like tests, examples and documentation.
? #
? spec.resource? = "Framework/Bundle.bundle"
? spec.ios.vendored_frameworks = "Framework/GameSDK.framework"
? # spec.resources = "Resources/*.png"
? # spec.preserve_paths = "FilesToSave", "MoreFilesToSave"
? # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? Link your library with frameworks, or libraries. Libraries do not include
? #? the lib prefix of their name.
? #
? spec.framework? = "UIKit","Foundation"
? # spec.frameworks = "SomeFramework", "AnotherFramework"
? # spec.library? = "iconv"
? # spec.libraries = "iconv", "xml2"
? # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
? #
? #? If your library depends on compiler flags you can set them in the xcconfig hash
? #? where they will only apply to your library. If you depend on other Podspecs
? #? you can include multiple dependencies to ensure it works.
? # spec.requires_arc = true
? # spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
? spec.dependency 'Masonry','1.1.0'
? spec.dependency 'JKCategories', '1.9.3'
? spec.dependency 'IQKeyboardManager', '6.5.8'
? spec.dependency 'AFNetworking', '4.0.1'
? spec.dependency 'MJExtension', '3.3.0'
? spec.dependency 'MBProgressHUD', '1.2.0'
end
14沛豌、發(fā)布到cocopods
pod trunk push ./FrameworkTest.podspec?--skip-import-validation --allow-warnings
發(fā)布成功之后大概過(guò)個(gè)十分鐘就可以安裝了:pod ‘FrameworkTest’