ãã®ãããªã¿ã¹ã¯ã®äŸãšããŠã¯ããµãŒãã¹ïŒåºåãåæã倩æ°ïŒã®REST APIã䜿çšããSDKã®äœæãã¢ã«ãŽãªãºã ã®å®è£ ã©ã€ãã©ãªãç»ååŠçãªã©ããããŸãããªã¹ãã¯ã»ãŒç¡å¶éã§ãã
ãã®ãããªè£œåã®ééãã¯ãã¢ããªã±ãŒã·ã§ã³ãéçºãããšããããä¿®æ£ãã¯ããã«å°é£ã§ãã ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãAppStoreã§æŽæ°ããã¢ãã¬ãŒã·ã§ã³ãšãŠãŒã¶ãŒæŽæ°ããã¹ããã®ãåŸ ã¡ãŸãã SDKã®å Žåããã§ãŒã³ã¯è¿œå ã®ã¹ããããšããŠæé·ããŸã-éçºè ãæŽæ°ããã®ãåŸ ã¡ãŸãã
äžéšã®çš®é¡ã®ã¿ã¹ã¯ã§ã¯ãSDKã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³éçºè ãååã«è³æ ŒãååŸã§ããããã§ã¯ãªããããç¶æ³ãæªåããå¯èœæ§ããããŸãã ãã®ç¹ã§ãçµ±åã«ããæå°éã®è€éããçããã¯ãã§ãã ããã¯ãåºåSDKãšåæã«ç¹ã«åœãŠã¯ãŸããŸãããããã¯ãå€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®äœæã®ã¡ã€ã³ã¹ããŒãžãããã¯ããã«é ãçµã¿èŸŒãŸããåžžã«å ã®éçºè ã«ãã£ãŠåã蟌ãŸããããã§ã¯ãããŸããã
åæ§ã®SDKã¯éåžžãã©ã€ãã©ãªããã¹ãã¢ããªã±ãŒã·ã§ã³ãããã¥ã¡ã³ããä»ã®ããŒã«ã®ãã©ã°ã€ã³ãªã©ãå€ãã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã ãã®èšäºã§ã¯ããã¬ãŒã ã¯ãŒã¯ãããã€ãã®ææ³ãéçºæ©èœã®åœ¢ã§ã©ã€ãã©ãªãæ§ç¯ããããšã«ã€ããŠèª¬æããŸãã
ããããã解決ãã¹ãåé¡ã«ã€ããŠã®å°ããªã³ã¡ã³ãã ç§ãã¡ã®ç®æšã¯ãçµ±åäžã«æå°éã®åŽåãšç¥èãå¿ èŠãšãããã®åŸãå¯äœçšã®ãªã圢åŒã§ã©ã€ãã©ãªãååŸããããšã§ãã
ãã®ãããªãœãªã¥ãŒã·ã§ã³ã«ã¯ãããšãã°CocoaPodsããããŸããããã«ãããç¹ã«ãã¯ããŒãºããœãŒã¹ã³ãŒãã§ããã±ãŒãžãé åžã§ããŸãã ã©ã€ãã©ãªãCocoaPodsã§å ¬éããæ¹æ³ã説æããèšäºïŒããšãã°ã hereãŸãã¯here ïŒãå€æ°ãããŸãããããããããã§ã¯ç¹°ãè¿ããŸããã
å¹ åºãéçºè åãã«èšèšãããSDKã§ã¯ããã®é åžæ¹æ³ã¯æããã«ååã§ã¯ãããŸãããäžéšã®éçºè ã¯åºæ¬çã«äœ¿çšããŸããïŒãgithubãåã³ãããã¯ãããã©ãããïŒãïŒã
ãã¬ãŒã ã¯ãŒã¯åœ¢åŒã®SDKã¢ã»ã³ããªã«çŠç¹ãåœãŠãŸãã ãŠãŒã¶ãŒãçµ±åã«å¿ èŠãªã®ã¯ããŠãŒã¶ãŒããããžã§ã¯ãã«ãã©ãã°ããããšã ãã§ãã
iOS8åçãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠ
iOS 8ããã³å¯Ÿå¿ããããŒãžã§ã³ã®iOS SDKã®ãªãªãŒã¹ã«ããããããžã§ã¯ãã®äœææã«æ°ããã¿ã€ãã®ã¿ãŒã²ããïŒåçãã¬ãŒã ã¯ãŒã¯ïŒãç»å ŽããŸããã ãããç§ãã¡ã«åã£ãŠãããã©ããã調ã¹ãŠã¿ãŸãããã
ãã®ã¿ã€ãã®ã¿ãŒã²ããã®å€èŠ³ã¯ããŸã第äžã«ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãå ±éã®ã³ãŒããšãªãœãŒã¹ãå ±æããå¿ èŠãããæ¡åŒµæ©èœã®å°å ¥ã«ãããã®ã§ããã çµæãšããŠåŸãããåçã©ã€ãã©ãªã¯ãå®éã®ã©ã€ãã©ãªãšé¡äŒŒããŠãããããšãã°OS Xã«éšåçã«ããååšããŸããã å®éã®ãšãããã©ã€ãã©ãªã¯ãŸã ã¢ããªã±ãŒã·ã§ã³ãµã³ãããã¯ã¹ã«æ®ã£ãŠãããæ¡åŒµæ©èœãšã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã«ã®ã¿äœ¿çšã§ããŸãã
ãã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠSDKãé åžããããšã¯å¯èœã§ããïŒ çŸæç¹ã§ã¯ãç¶æ³ã¯ãããŸãã§ãã Appleã®ããã¥ã¡ã³ãã«ãããšãåã蟌ã¿ãã¬ãŒã ã¯ãŒã¯ã¯iOS8ã§ã®ã¿äœ¿çšã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ã¯ä»¥äžã®é 眮ã¿ãŒã²ããããŸã ããå ŽåããããŸããããã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã¯ã§ããŸããã ç·Žç¿ã¯å°ãç°ãªãç¶æ³ã瀺ããŠããŸãã ããã§ããEmbeddedãã¬ãŒã ã¯ãŒã¯ã¯iOSããŒãžã§ã³8ããåã®ããã€ã¹ã§èµ·åã§ããŸããããã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšããã¢ããªã±ãŒã·ã§ã³ãAppStoreã§å ¬éããããšãããšããã®åã³ã¯ããã«æ¶ããŠããŸããŸãã èªåæ€èšŒã®æ®µéã§ããšã©ãŒãçºè¡ãããŸãã
ãã¬ãŒã ã¯ãŒã¯ã...ãã®MinimumOSVersionãç¡å¹ã§ãã æå°å€ã¯iOS 8.0ã§ãã
ãã¬ãŒã ã¯ãŒã¯ã¿ãŒã²ããã®æå°ããŒãžã§ã³ã8.0ã«èšå®ãããšããããžã§ã¯ãã®ãªã³ã¯æ®µéã§ãšã©ãŒãçºçããŸãã
ldïŒçµã¿èŸŒã¿dylib /ãã¬ãŒã ã¯ãŒã¯ã¯iOS 8.0以éã§ã®ã¿ãµããŒããããŸã
çŸæç¹ã§ã®åçãã¬ãŒã ã¯ãŒã¯ã®æŠèŠã¯æ¬¡ã®ãšããã§ããiOSSDKã®æå°ããŒãžã§ã³ã8ããå§ãŸãå Žåã«ã®ã¿ããããã䜿çšããã³é åžã§ããŸãã
SDKã¢ã»ã³ããªã«ã€ããŠ
Xcode 6ãæäŸãããã®ãšåãåçãã¬ãŒã ã¯ãŒã¯ãã³ãã¬ãŒãã䜿çšããŠã¿ãŸãããããã§ã¯éçããŒãžã§ã³ããã«ãããŸãã ããã€ãã®å€æŽã®åŸãããã¯éåžžã«å¯èœã§ãã å§ããŸãããã
ã¿ãŒã²ããã®ã¿ã€ããšããŠCocoa Touch Frameworkãéžæããæ°ãããããžã§ã¯ããäœæããŸãã ä»»æã®ååãéžæããŠãã ããã æ確ã«ããããã«ãç§ãã¡ã®ãã®ã¯MySDKãšåŒã°ããŸãã
SDKã®ã¯ã©ã¹ããããžã§ã¯ãã«è¿œå ããŸãã ãããªãã¯ã«å©çšã§ããã¯ãã®ããããŒãã¡ã€ã«ã¯ããããªãã¯ãšããŠããŒã¯ãããããã©ã«ãã§ãããžã§ã¯ãã§äœæãããã¢ã³ãã¬ã©ããããŒã«ã€ã³ããŒããããŸãã ãã®äŸã§ã¯ãMySDK.hãšåŒã°ããŸã
次ã«ãã¿ãŒã²ããã®BuildSettingsã«ç§»åããLinkingã»ã¯ã·ã§ã³ã§Mach-O TypeãStatic Libraryã«å€æŽããŸãã
ã¿ãŒã²ããã®ã¹ããŒã ã®èšå®ã§ãèµ·åæ§æããªãªãŒã¹ã«å€æŽããŸãã ãã®ã¢ã¯ã·ã§ã³ã¯ãã¢ã¯ãã£ããªã¢ãŒããã¯ãã£ã ãã§ãªãã䜿çšå¯èœãªãã¹ãŠã®ã¢ãŒããã¯ãã£ã§ã¢ã»ã³ããªãå®è¡ããããã«å¿ èŠã§ãã
ã©ã€ãã©ãªã䜿çšããéçºè ã¯ãããããiOSã®ãã¹ãŠã®å¯èœãªããã»ããµã¢ãŒããã¯ãã£ã§ã³ãŒããå®è¡ããããšæãã§ãããã ãããŠãç§ãã¡ã¯ããã«æ³šæããªããã°ãªããŸããã çŸåšãã¢ãŒããã¯ãã£ã®çŸåšã®ãªã¹ãã«ã¯ãããã€ã¹çšã®3ïŒarmv7ãarmv7sãarm64ïŒãšã·ãã¥ã¬ãŒã¿çšã®2ïŒi386ãx86_64ïŒãå«ãŸããŠããŸãã ãããè¡ãã«ã¯ããµããŒããããŠããåã¢ãŒããã¯ãã£ã®ã¬ã€ã€ãŒãå«ãããããããã¡ãããã€ããªã©ã€ãã©ãªãåéããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãAggregateã¿ã€ãã®ãããžã§ã¯ãã«ã¿ãŒã²ãããäœæããŸãã MySDKUniversalãšåŒã³ãŸãããã
BuildPhasesã¿ãŒã²ããã§ã次ã®ã¹ã¯ãªããã䜿çšããŠã¹ã¯ãªããã®å®è¡ãã§ãŒãºãè¿œå ããŸãã
FRAMEWORK_NAME="${PROJECT_NAME}" SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework" DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework" UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" FRAMEWORK_PATH="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework" xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -target ${FRAMEWORK_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator ARCHS='i386 x86_64' xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -target ${FRAMEWORK_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos ARCHS='arm64 armv7 armv7s' rm -rf "${UNIVERSAL_LIBRARY_DIR}" mkdir "${UNIVERSAL_LIBRARY_DIR}" mkdir "${FRAMEWORK_PATH}" cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK_PATH}" lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK_PATH}/${FRAMEWORK_NAME}"
ããã§ã¯ããã¬ãŒã ã¯ãŒã¯ã®ã¢ã»ã³ããªã2ååŒã³åºãããªããŠãŒãã£ãªãã£ã䜿çšããŠãçµæã®ã©ã€ãã©ãªã1ã€ã®ãã¡ãããã€ããªã«åéããŸãã xcodebuildãåŒã³åºããšãã¯ãæåŸã®ARCHSãã©ã¡ãŒã¿ãŒã«æ³šæããŠãã ããã æå®ããªãå Žåãããã€ã¹ã®ã¢ã»ã³ããªã¯ãããã©ã«ãã§å€æ°ARCHS_STANDARDã«èšè¿°ãããŠããã¢ãŒããã¯ãã£ã®ãªã¹ãã䜿çšããŸãã äºå®ãAppleã¯ARCHS_STANDARDå€æ°ããXcode6ã®armv7ãæå³çã«é€å€ããarmv7ãarm64ã®ã¿ãæ®ããŠããããã§ãã äžè¬ã«ãããã¯éçºè ã«ãšã£ãŠå€§ããªåé¡ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã»ãšãã©åžžã«armv7sãé€å€ã§ããŸãã åé¡ã®ãªãã¢ããªã±ãŒã·ã§ã³ã¯ãããããæé©åã¯ããŸãè¡ãããŸããããA6ãA6Xããã»ããµã§åäœããŸãã ãã ããSDKãéçºãããšãã¯ãéçºè ãšããŠãã®ãããªæ±ºå®ãè¡ãã¹ãã§ã¯ãããŸããã ã¢ãŒããã¯ãã£ãæ瀺çã«ãªã¹ãããæ¹ãã¯ããã«ç°¡åã§ãã
äžæ¯ã«ã€ããŠ
ãŸãã«ããµãŒãããŒãã£ã®äŸåé¢ä¿ãªãã§ã³ãŒããã§ããããšã ããšãã°ããããã¯ãŒã¯ã©ã€ãã©ãªãããŸããŸãªããŒãµãŒãã·ã¹ãã ãã¬ãŒã ã¯ãŒã¯ã®ã¯ã©ã¹ã®ã«ããŽãªãªã©ã ãã®çµæããããã®ã¯ã©ã¹ã¯ãã¹ãŠSDKã«åé¡ãããããã䜿çšããéçºè ã¯ãããžã§ã¯ãããã«ããããšãã«åé¡ã«ééããå¯èœæ§ããããŸãã ãããã®åé¡ã¯ã圌ãSDKã©ã€ãã©ãªã§ãé ç·ããããŠãããã®ã®1ã€ã䜿çšããããšããã«å§ãŸããŸãã ã³ã³ãã€ã©ã¯ãã¢ããªã±ãŒã·ã§ã³ããã«ããããšãã«ãéè€ããã·ã³ãã«ãã®æãçæããŸãã ããã¯æªãããã«æãããŸããéçºè ã¯ãäŸåé¢ä¿ãããã®ã©ã€ãã©ãªãåé€ããã ãã§æžã¿ãŸããã¯ã©ã¹ã¯ãã§ã«SDKã«å«ãŸããŠããããã§ãã åé¡ã¯ããã®ã©ã€ãã©ãªãæŽæ°ããæ©èœã倱ããSDKã®å¯çšæ§ã«äŸåããããã«ãªãããšã§ãã
解決çã¯ãããã€ãã®äºçŽã¯ãããã®ã®ãå©çšå¯èœãªæè¯ã®ãã®ãšåŒã¶ããšãã§ããŸããã䜿çšãããã©ã€ãã©ãªã®ã€ã³ããŒãããããã¹ãŠã®ã·ã³ãã«ã«ãã¬ãã£ãã¯ã¹ãè¿œå ããããšã§ãã ãã¬ãŒã ã¯ãŒã¯ã®ãã«ãããã»ã¹ã«å¥ã®ã¹ããããè¿œå ãããŸãã ãããè¡ãã«ã¯ãåå¥ã®ãããžã§ã¯ãã¿ãŒã²ãããäœæããŸããããã§ããã¹ãŠã®äŸåé¢ä¿ãå«ãéçã©ã€ãã©ãªãæ§ç¯ããŸãã extãšåŒã³ãŸãããã
ãã¹ãŠã®äŸåé¢ä¿ããã«ããã§ãŒãºãªã¹ãã®CompileSourcesã»ã¯ã·ã§ã³ã«è¿œå ããŸãã æåŸã®ãã§ãŒãºã§ã¯ãã«ã¹ã¿ã ã¹ã¯ãªãããè¿œå ããŸãã ã¹ã¯ãªããèªäœã¯ããã§ååŸãããŸã ã ã©ã€ãã©ãªããæåã«è¿œå ãããã¬ãã£ãã¯ã¹ãšãçæããããããŒãã¡ã€ã«ãžã®ãã¹ãä¿®æ£ããããšãå¿ããªãã§ãã ããã ç§ãã¡ã®å Žåãããã¯æ¬¡ã®ãšããã§ãã
header="${SRCROOT}/${PROJECT_NAME}/ext/NamespacedDependencies.h" prefix="MYSDK"
ãextãã¿ãŒã²ããã®ã¢ã»ã³ããªãéå§ããŸãã çµæã®ã©ã€ãã©ãªã¯å¿ èŠãããŸããã èå³æ·±ãã®ã¯ãçµæã®ããããŒãã¡ã€ã«NamespacedDependencies.hã§ãã 空ã§ã¯ãªããäŸåã©ã€ãã©ãªã®ã·ã³ãã«åã眮ãæãããã¯ããå«ãŸããŠããããšã確èªããŠãã ããã ãã®åŸãçµæã®ããããŒãã¡ã€ã«ãã¡ã€ã³ã¿ãŒã²ããMySDKã«è¿œå ããŸãã
NamespacedDependencies.hã¯ãäŸåé¢ä¿ããããŒãã€ã³ããŒãããåã«ã€ã³ããŒãããå¿ èŠããããŸãã ãããžã§ã¯ãã§ããã«æãé©ããå Žæã¯ãPCHãã¡ã€ã«ã§ãã ãããžã§ã¯ãã«ãŸã ååšããªãå Žåã¯ãäœæããå¿ èŠããããŸãã ã¿ãŒã²ããèšå®ã§ãã¹ãæå®ããããšãå¿ããªãã§ãã ããã
ããã§ããã¬ãŒã ã¯ãŒã¯ãæ§ç¯ãããšãã«ãäŸåã©ã€ãã©ãªã®ãã¹ãŠã®ã·ã³ãã«ã«æå®ããããã¬ãã£ãã¯ã¹ãæäŸãããŸãã ãã®äºå®ã¯ãnmãŠãŒãã£ãªãã£ãå®è¡ããããšã§ç¢ºèªã§ããŸãã
nm -a /Users/mik/Library/Developer/Xcode/DerivedData/Build/Products/Release-iphoneuniversal/MySDK.framework/MySDK | grep MYSDK 00000000000022be t +[MYSDK_AFURLConnectionOperation batchOfRequestOperations:progressBlock:completionBlock:] 0000000000000000 t +[MYSDK_AFURLConnectionOperation networkRequestThreadEntryPoint:] ...
ãã®ããªãã¯ã®çµæãæçµãããžã§ã¯ãã§åãäŸåé¢ä¿ã䜿çšããå ŽåãSDKã¯ç«¶åãåŒãèµ·ãããŸãããããã¡ãããã¢ã»ã³ãã«ãããã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºã倧ãããªããŸãã
ãªãœãŒã¹ã«ã€ããŠ
ã³ã³ãã€ã«ãããã©ã€ãã©ãªèªäœã«å ããŠãç»åãé³å£°ãxibãã¡ã€ã«ãªã©ã®ãªãœãŒã¹ãšãšãã«é åžããå¿ èŠãããå ŽåããããããŸãã ãŸãããã¬ãŒã ã¯ãŒã¯æ§é ã«ã¯ããªãœãŒã¹ãå«ããã©ã«ããŒãå«ããããšãã§ããŸãã ãã ããXcodeã¯åã«ç¡èŠããŸãã
ãããžã§ã¯ãã«ãªãœãŒã¹ãè¿œå ã§ããããã«ããã«ã¯ããã¬ãŒã ã¯ãŒã¯ãšäžç·ã«ããªãœãŒã¹ãå«ãå¥åã®ãã³ãã«ãŸãã¯ãã¬ãŒã ã¯ãŒã¯èªäœã®å éšã«ãããªãœãŒã¹ãžã®ã·ã³ããªãã¯ãªã³ã¯ã®ãããããé åžããå¿ èŠããããŸãã
æ¹æ³1
ãªãœãŒã¹ã«ã€ããŠã¯ããã¬ãŒã ã¯ãŒã¯å ã«é 眮ããå¥åã®ãã³ãã«ãäœæããŸãã
ãã¹ãŠã®ãªãœãŒã¹ããã®äžã«é 眮ããŸãããããŠãããã¯ãã§ã«ãã¬ãŒã ã¯ãŒã¯å ã«ãããŸãã
OS Xã®ãã³ãã«ãã³ãã¬ãŒãã䜿çšãããšããäºå®ã«ããããã³ãã«ã¿ãŒã²ããã§ããã«ããã€ãã®èšå®ãè¡ãããšãå¿ããªãããšãéèŠã§ãã
- ææ°ã®iOSïŒããã©ã«ãã®ææ°OS XïŒã«Base SDKãã€ã³ã¹ããŒã«ããŸã
- ãã«ããã§ãŒãºãã[ãœãŒã¹ã®ã³ã³ãã€ã«]ã»ã¯ã·ã§ã³ãåé€ãã
- [é«è§£å床ã¢ãŒãã¯ãŒã¯ã®çµå]èšå®ã[ããã]ã«èšå®ããŸãã ããããªããšãç°ãªãç»é¢å¯åºŠã®ãªãœãŒã¹ã1ã€ã®TIFFãã¡ã€ã«ã«åéãããŸã
ãã®ã»ããã¢ããåŸãMySDKResources.bundleãã¡ã€ã³ã®MySDKã¿ãŒã²ããã®ã³ããŒãã³ãã«ãªãœãŒã¹ã»ã¯ã·ã§ã³ãšãTarget Dependenciesã®MySDKResourcesã¿ãŒã²ããã«è¿œå ã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯å ã«ãããã³ãã«ã«ã·ã³ããªãã¯ãªã³ã¯ãè¿œå ããããšã¯æ®ããŸãã ãããè¡ãã«ã¯ããŠãããŒãµã«ã©ã€ã³ãã¬ãŒã ã¯ãŒã¯ãåéããã¹ã¯ãªããã«è¿œå ããŸãã
pushd ${UNIVERSAL_LIBRARY_DIR} ln -sfh "${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}Resources.bundle" "${FRAMEWORK_NAME}Resources.bundle" popd
ãã¬ãŒã ã¯ãŒã¯ã«å ããŠSDKã䜿çšããã«ã¯ããã®ã·ã³ããªãã¯ãªã³ã¯ããããžã§ã¯ãã«è¿œå ããå¿ èŠããããŸãã
æ¹æ³2
æåã®æ¹æ³ã®é倧ãªæ¬ ç¹ã¯ããã¬ãŒã ã¯ãŒã¯ãäžå¯æ¬ ã§ãªããªãããšã§ãã ãããŠãããã¯SDKã®é åžã«ãããŠéåžžã«éèŠã§ãã ãããé©çšãããå Žåãsdkã³ãŒãã«ãªãœãŒã¹ãåã蟌ããªã©ã®ææ³ã䜿çšã§ããŸãã ãã®æ¹æ³ã¯ãå°ããªãªãœãŒã¹ãä¿åããã®ã«äŸ¿å©ã§ãã ããšãã°ãé³ããã¿ã³ã®ç»åãããŽãããã¹ããªãœãŒã¹ãªã©ã§ãã åœç¶ããªã¹ãã¯ãã®ã»ããã«éå®ãããããªãœãŒã¹ã¯çµ¶å¯Ÿã«ä»»æã§ãã
ããã§ã¯ãxxdãŠãŒãã£ãªãã£ã圹ç«ã¡ãŸãããã®ãŠãŒãã£ãªãã£ã«ã¯ãéçCé åã®åœ¢åŒã§çŽ æŽãããåºåãªãã·ã§ã³ããããŸãã ãã«ããã§ãŒãºãããžã§ã¯ãã§ãã®ãããªè¿œå ã®ãªãœãŒã¹çæã¹ã¯ãªããã䜿çšããŸããããã¯ããœãŒã¹ã®ã³ã³ãã€ã«åã«ã¹ã¯ãªããã®å®è¡ãšããŠè¿œå ããå¿ èŠããããŸãã
RESOURCES_FILE="${SRCROOT}/${PROJECT_NAME}/MySDKResources.h" rm -f ${RESOURCES_FILE} pushd "${SRCROOT}/${PROJECT_NAME}Resources/images" for filename in *.png; do xxd -i $filename >> "${RESOURCES_FILE}" done popd
çµæã®MySDKResources.hããããžã§ã¯ãã«è¿œå ãããŸãã 次ã«ãNSDataãªããžã§ã¯ããäœæããŠãªãœãŒã¹ã䜿çšãããã®ãªããžã§ã¯ããããç»åçšã®UIImageãªã©ã®ä»ã®ãªããžã§ã¯ããäœæããŸãã
NSData *pngData = [NSData dataWithBytesNoCopy:close_png length:close_png_len freeWhenDone:NO];
ããããŒãžã§ã³ç®¡ç
SDKãé åžããå Žåãåãã«ããäžæã®ããŒãžã§ã³çªå·ãæã£ãŠãããšéåžžã«äŸ¿å©ã§ãã ãµããŒãã«é£çµ¡ãããšãããŸãã¯ãã°ãã©ãã«ãŒã®ãšã©ãŒã説æãããšããäž»ã«äŸ¿å©ã§ãã ããŒãžã§ã³çªå·ãçæããã«ã¯å€ãã®æ¹æ³ããããŸãã ããã§è§£æ±ºããŸããã MAJOR.MINOR.BUILDã®åœ¢åŒã䜿çšããŸããMAJOR.MINORã¯ããªãªãŒã¹ããªã·ãŒãäžäœããŒãžã§ã³ã®äºææ§ãªã©ã«å¿ããŠæåã§èšå®ãããŸãã ãªããžããªã®çŸåšã®ãã©ã³ãã®ã³ãããæ°ã¯ãã«ããšããŠååŸãããŸãïŒãªãªãŒã¹ãã«ãã¯åžžã«åããã©ã³ãããçºçããŸãïŒã ãã®ããã»ã¹ãèªååããã«ã¯ããã¬ãŒã ã¯ãŒã¯ã®ãã«ããã§ãŒãºã®åã«BuildPhasesã¿ãŒã²ããã«è¿œå ãããå°ããªã¹ã¯ãªããã䜿çšãããŸãã ãã®ãã¡ã€ã«ã®ç¬¬1äžä»£åŸãpublicãšããŒã¯ããããããžã§ã¯ãã«ã¢ã³ãã¬ã©ããããŒã§è¿œå ããããšãå¿ããªãã§ãã ããã
VERSION=`git rev-list HEAD --count` echo "#define MYSDK_VERSION @\"1.0.${VERSION}\"" > ${SRCROOT}/MYSDKVersion.h
ãã®åŸãããŒãžã§ã³çªå·ã¯SDKèªäœã§äœ¿çšã§ããŸãã ããšãã°ãAPIãžã®ãªã¯ãšã¹ãã®ãã©ã¡ãŒã¿ãŒãšããŠããŸãã¯ãã°ãžã®åºåçšã
çµè«ã®ä»£ããã«
ãã®ããããã®èšäºã§ã¯ãäž»ã«ã¢ã»ã³ããªã«é¢é£ããSDKéçºã®ããã€ãã®éèŠãªåŽé¢ãåãäžããŸããã ãããããã®ç¹ã«é¢ããŠã¯ãsdkã«é¢é£ããåé¡ã®ç¯å²ã¯å°œããããšã¯ãããŸããã SDKã¢ã»ã³ããªã®èªååãããã¥ã¡ã³ãããã¹ãSDKã®èªååãå€ãããŒãžã§ã³ã®iOSã®ãµããŒããUnityãAdobe Airãªã©ã®ããŒã«ã®ãã©ã°ã€ã³ã®éçºãªã©ãèå³æ·±ãããšã¯åœ±é¿ãåããŸããã§ããã ããããããã¯ãã§ã«å¥ã®èšäºã§ããããããã1ã€ã®èšäºã§ã¯ãããŸããã
åç
§è³æ
- Xcode 6ããã³Embedded Frameworkã¯iOS8ã§ã®ã¿ãµããŒããããŠããŸã
stackoverflow.com/questions/25909870/xcode-6-and-embedded-frameworks-only-supported-in-ios8/25910262#25910262 - CocoaPodsã«ãã£ãŠç®¡çãããiOSéçã©ã€ãã©ãªã§ã®äŸåé¢ä¿ã®è¡çªã®åé¿
blog.sigmapoint.pl/avoiding-dependency-collisions-in-ios-static-library-managed-by-cocoapods - iOSã©ã€ãã©ãªã§ã®äŸåé¢ä¿ã®è¡çªã®åé¿
pdx.esri.com/blog/2013/12/13/namespacing-dependencies - Xcode 6ã§éçãã¬ãŒã ã¯ãŒã¯ãããžã§ã¯ããäœæãã
iosxamarintutorials.blogspot.in/2014/12/creating-static-framework-project-in.html - ãã€ããªãªãœãŒã¹ã®åã蟌ã¿
www.cocoanetics.com/2010/10/embedding-binary-resources