File> New> Project ... iOS> Framework & Library> Cocoa Touch Static Library We set a name (for example - MySecretLibrary)
Step 1. File> New> Project ...
Step 2. Choosing Cocoa Touch Static Library
Step-3. Assign a library name (Product Name) ...
File> New> Targect ... iOS> Framework & Library> Cocoa Touch Static Library We set a name (for example - MySecretLibrary)
Step 1. File> New> Target ...
Step 2. Choosing Cocoa Touch Static Library
Step-3. Assign a library name (Product Name) ...
Build Phases> Complite Sources
Build Phases> Copy Files
Important! If you have several header files with the declaration of various classes and functions, then it is undesirable to connect them all separately to the new project. It is convenient to make ONE HEADLINE FILE of your library and connect all other files to it. An example would be standard frameworks, such as Foundation, whose header file looks like this:
/* Foundation.h Copyright (c) 1994-2015, Apple Inc. All rights reserved. */ #include <CoreFoundation/CoreFoundation.h> #import <Foundation/NSObjCRuntime.h> #import <Foundation/NSArray.h> #import <Foundation/NSAutoreleasePool.h> #import <Foundation/NSBundle.h> #import <Foundation/NSByteOrder.h> #import <Foundation/NSCalendar.h> #import <Foundation/NSCharacterSet.h> #import <Foundation/NSCoder.h> #import <Foundation/NSData.h> #import <Foundation/NSDate.h> #import <Foundation/NSDateFormatter.h> #import <Foundation/NSDateIntervalFormatter.h> #import <Foundation/NSMassFormatter.h> #import <Foundation/NSLengthFormatter.h> #import <Foundation/NSEnergyFormatter.h> #import <Foundation/NSPersonNameComponents.h> #import <Foundation/NSPersonNameComponentsFormatter.h> #import <Foundation/NSDecimal.h> #import <Foundation/NSDecimalNumber.h> #import <Foundation/NSDictionary.h> #import <Foundation/NSEnumerator.h> #import <Foundation/NSError.h> #import <Foundation/NSException.h> #import <Foundation/NSFileHandle.h> #import <Foundation/NSFileManager.h> #import <Foundation/NSFormatter.h> #import <Foundation/NSHashTable.h> #import <Foundation/NSHTTPCookie.h> #import <Foundation/NSHTTPCookieStorage.h> #import <Foundation/NSIndexPath.h> #import <Foundation/NSIndexSet.h> #import <Foundation/NSInvocation.h> #import <Foundation/NSJSONSerialization.h> #import <Foundation/NSKeyValueCoding.h> #import <Foundation/NSKeyValueObserving.h> #import <Foundation/NSKeyedArchiver.h> #import <Foundation/NSLocale.h> #import <Foundation/NSLock.h> #import <Foundation/NSMapTable.h> #import <Foundation/NSMethodSignature.h> #import <Foundation/NSNotification.h> #import <Foundation/NSNotificationQueue.h> #import <Foundation/NSNull.h> #import <Foundation/NSNumberFormatter.h> #import <Foundation/NSObject.h> #import <Foundation/NSOperation.h> #import <Foundation/NSOrderedSet.h> #import <Foundation/NSOrthography.h> #import <Foundation/NSPathUtilities.h> #import <Foundation/NSPointerArray.h> #import <Foundation/NSPointerFunctions.h> #import <Foundation/NSPort.h> #import <Foundation/NSProcessInfo.h> #import <Foundation/NSPropertyList.h> #import <Foundation/NSProxy.h> #import <Foundation/NSRange.h> #import <Foundation/NSRegularExpression.h> #import <Foundation/NSRunLoop.h> #import <Foundation/NSScanner.h> #import <Foundation/NSSet.h> #import <Foundation/NSSortDescriptor.h> #import <Foundation/NSStream.h> #import <Foundation/NSString.h> #import <Foundation/NSTextCheckingResult.h> #import <Foundation/NSThread.h> #import <Foundation/NSTimeZone.h> #import <Foundation/NSTimer.h> #import <Foundation/NSURL.h> #import <Foundation/NSURLAuthenticationChallenge.h> #import <Foundation/NSURLCache.h> #import <Foundation/NSURLConnection.h> #import <Foundation/NSURLCredential.h> #import <Foundation/NSURLCredentialStorage.h> #import <Foundation/NSURLError.h> #import <Foundation/NSURLProtectionSpace.h> #import <Foundation/NSURLProtocol.h> #import <Foundation/NSURLRequest.h> #import <Foundation/NSURLResponse.h> #import <Foundation/NSUserDefaults.h> #import <Foundation/NSValue.h> #import <Foundation/NSValueTransformer.h> #import <Foundation/NSXMLParser.h> #import <Foundation/NSZone.h> #import <Foundation/FoundationErrors.h> #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) #import <Foundation/NSAttributedString.h> #import <Foundation/NSByteCountFormatter.h> #import <Foundation/NSCache.h> #import <Foundation/NSComparisonPredicate.h> #import <Foundation/NSCompoundPredicate.h> #import <Foundation/NSDateComponentsFormatter.h> #import <Foundation/NSExpression.h> #import <Foundation/NSExtensionContext.h> #import <Foundation/NSExtensionItem.h> #import <Foundation/NSExtensionRequestHandling.h> #import <Foundation/NSFileCoordinator.h> #import <Foundation/NSFilePresenter.h> #import <Foundation/NSFileVersion.h> #import <Foundation/NSFileWrapper.h> #import <Foundation/NSItemProvider.h> #import <Foundation/NSLinguisticTagger.h> #import <Foundation/NSMetadata.h> #import <Foundation/NSMetadataAttributes.h> #import <Foundation/NSNetServices.h> #import <Foundation/NSPredicate.h> #import <Foundation/NSProgress.h> #import <Foundation/NSUbiquitousKeyValueStore.h> #import <Foundation/NSUndoManager.h> #import <Foundation/NSURLSession.h> #import <Foundation/NSUserActivity.h> #import <Foundation/NSUUID.h> #endif #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || TARGET_OS_WIN32 #import <Foundation/NSArchiver.h> #import <Foundation/NSBackgroundActivityScheduler.h> #import <Foundation/NSCalendarDate.h> #import <Foundation/NSConnection.h> #import <Foundation/NSDistantObject.h> #import <Foundation/NSDistributedNotificationCenter.h> #import <Foundation/NSGeometry.h> #import <Foundation/NSPortCoder.h> #import <Foundation/NSPortMessage.h> #import <Foundation/NSPortNameServer.h> #import <Foundation/NSProtocolChecker.h> #import <Foundation/NSTask.h> #import <Foundation/NSXMLDTD.h> #import <Foundation/NSXMLDTDNode.h> #import <Foundation/NSXMLDocument.h> #import <Foundation/NSXMLElement.h> #import <Foundation/NSXMLNode.h> #import <Foundation/NSXMLNodeOptions.h> #import <Foundation/NSURLDownload.h> #import <Foundation/NSURLHandle.h> #endif #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) #import <Foundation/NSAffineTransform.h> #import <Foundation/NSAppleEventDescriptor.h> #import <Foundation/NSAppleEventManager.h> #import <Foundation/NSAppleScript.h> #import <Foundation/NSClassDescription.h> #import <Foundation/NSDistributedLock.h> #import <Foundation/NSGarbageCollector.h> #import <Foundation/NSHFSFileTypes.h> #import <Foundation/NSHost.h> #import <Foundation/NSObjectScripting.h> #import <Foundation/NSScriptClassDescription.h> #import <Foundation/NSScriptCoercionHandler.h> #import <Foundation/NSScriptCommand.h> #import <Foundation/NSScriptCommandDescription.h> #import <Foundation/NSScriptExecutionContext.h> #import <Foundation/NSScriptKeyValueCoding.h> #import <Foundation/NSScriptObjectSpecifiers.h> #import <Foundation/NSScriptStandardSuiteCommands.h> #import <Foundation/NSScriptSuiteRegistry.h> #import <Foundation/NSScriptWhoseTests.h> #import <Foundation/NSSpellServer.h> #import <Foundation/NSUserNotification.h> #import <Foundation/NSUserScriptTask.h> #import <Foundation/NSXPCConnection.h> #endif
/ Users / [userName] / Library / Developer / Xcode / DerivedData / MySecretLibrary-esufqblgaisjjeecltzoxyiyogogj / Build / Products / Debug-iphonesimulator
/ Users / [userName] / Library / Developer / Xcode / DerivedData / MySecretLibrary-esufqblgaisjjeecltzoxyiyogogj / Build / Products / Debug-iphoneos
lipo A binary file to convert it to a single architecture file, or vice versa. Syntax lipo [input_file] ... [-arch arch_type input_file] ... [-arch_blank arch_type] ... {-info | -detailed_info} [-output output_file] Operation [-segalign arch_type value] where Operation is one of: [-create] [-arch_blank arch_type] [-thin arch_type] [-extract arch_type] ... [-extract_family arch_type] ... [-remove arch_type] ... [-replace arch_type file_name] ... [-verify_arch arch_type ...] Options -info Briefly list the input universal file. Lists the names of each archive. -detailed_info Display a detailed list of the universal file. Lists universal header info. for each architecture in the file. -arch arch_type input_file Tell lipo that input_file contains the specified architecture type. This is a universal file, architecture (s) lipo can figure out. -arch_blank arch_type The output for the specified arch_type will be an MH_DYLIB_STUB file. This flag can not be used with any operation other than -create. -output output_file The output file. -create Create one universal output file from the input file (s). -thin arch_type Take one input file with the arch_type. -replace arch_type file_name Take one universal input file; in the output file, replace the arch_type contents of the input file_name. -remove arch_type Take one universal input file from that universal file, placing the result in the output file. -extract arch_type Take one universal input file from a universal output file containing only that architecture. -extract_family arch_type For each family that archive file containing only those architectures. If only one architecture is found. -verify_arch arch_type ... The arch_types are present in the file. If so then exit with a status of 0, then exit with a status of 1. -segalign arch_type value Create a universal file containing that architecture. value is a hexadecimal number that must be an integral power of 2. It can't figure out the alignment of an input file (not currently an object file), or when it guesses at the alignment too conservatively. For lipo is 0 (2 ^ 0, or an alignment of one byte), and the default alignment for archives is 4 (2 ^ 2, or 4-byte alignment). arch_type A supported architecture name: i386 (32-bit intel) ppc (32-bit powerpc) ppc64 (64-bit powerpc) or x86_64 (64-bit intel) lipo produces the output file. lipo cans list; create a single universal file from one or more input files; thinnest design type; extract,,,, and. Example $ cd / Applications $ lipo Stickies.app/Contents/MacOS/Stickies -info $ lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386 $ cd Stickies.app/Contents/MacOS/ $ rm stickies $ mv Stickies.i386 Stickies
lipo -create Debug-iphoneos/libMySecretLibrary.a Debug-iphonesimulator/libMySecretLibrary.a -output libMySecretLibrary_combined.a
File> New> Targect ... Other (at the very bottom after OS X)> Aggregate We set a name (for example - MySecretLibrary_combined)
Step 1. File> New> Target ...
Step 2. Choose Other> Aggregate
Step-3. Assign a library name (Product Name) ...
BUILD_TARGET_DIR=$PROJECT_DIR/build xcodebuild -target $PROJECT_NAME -sdk "iphonesimulator" -configuration "Release" clean build xcodebuild -target $PROJECT_NAME -sdk "iphoneos" -configuration "Release" clean build lipo -create -output "$BUILD_TARGET_DIR/$PROJECT_NAME-Combined.a" "$BUILD_TARGET_DIR/Release-iphoneos/lib$PROJECT_NAME.a" "$BUILD_TARGET_DIR/Release-iphonesimulator/lib$PROJECT_NAME.a"
Source: https://habr.com/ru/post/280286/
All Articles