dynamic frameworks tips
TRANSCRIPT
![Page 1: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/1.jpg)
Dynamic(frameworks(0ps@ikesyo
関西モバイルアプリ研究会!#9,!2015)12)22!Tue
#関モバ
![Page 2: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/2.jpg)
@ikesyo
!ikesyo_nnid
いけしょー/池田翔京都でフリーランスのiOSエンジニア(時々Android)しています
フリュー㈱のモバイル開発のチームにジョイン中。
![Page 3: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/3.jpg)
✨!Contribu*ons!✨
• Himotoki
• Carthage
• Reac0veCocoa
• APIKit
• Result
• AMScrollingNavbar
![Page 4: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/4.jpg)
try!%Swi)2016.3.2~2016.3.4
東京・渋谷
![Page 5: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/5.jpg)
![Page 6: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/6.jpg)
Today's(Topics1. Nested(frameworks?
2. Dynamic(Frameworks(and(app(launch(<me
![Page 7: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/7.jpg)
Nested&frameworks?
![Page 8: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/8.jpg)
Nested&frameworks• Foo.framework/Frameworks/Bar.framework
• How0to0add0framework0with0inner0framework0in0an0app070Issue0#688070Carthage/Carthage
• Nested0Frameworks?070Issue0#844070Carthage/Carthage
![Page 9: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/9.jpg)
Nested&frameworks&can&be&used?
![Page 10: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/10.jpg)
Nested&frameworks&can&be&used?• OS$Xでは使えるが、iOSでは実質的に使えない。
• iTCのバリデーションで蹴られる。!
• Framework$inside$embedded$framework$6$Issue$#3440$6$CocoaPods/CocoaPods
• [TargetIntegrator]$Only$embed$applicaGon$and$unit$test$bundle$targets$by$mrackwitz$6$Pull$Request$#3489$6$CocoaPods/CocoaPods
![Page 11: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/11.jpg)
フレームワークをフレームワークに埋め込まず、アプリレベルでリンク、埋め込みをしましょう。
![Page 12: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/12.jpg)
Dynamic(frameworks(andapp#launch#)me
![Page 13: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/13.jpg)
• Dynamic)frameworks(=Dynamic)libraries)のロードでアプリの起動に時間が掛かる。⌚
• App)launch)9me)increased);)Issue)#586);)artsy/eigen
• stepanhruda/dyldDimageDloadingDperformance
• johnno1962/Accelerator
![Page 14: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/14.jpg)
![Page 15: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/15.jpg)
Dynamic(frameworksのロード時間• アプリ起動時の環境変数に2つの値をセットする。
• DYLD_PRINT_APIS
• DYLD_PRINT_STATISTICS
![Page 16: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/16.jpg)
![Page 17: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/17.jpg)
Sta$cally(linked(Swi/(object(files!❗
![Page 18: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/18.jpg)
Sta$cally(linked(Swi/(object(files!❗• stepanhruda/dyld/image/loading/performance
• johnno1962/Accelerator
• App<launch<=me<increased<><Issue<#586<><artsy/eigen
• SwiEのオブジェクト(.oファイル)は静的リンクできる<❗
• OTHER_LDFLAGSに-filelistでオブジェクトファイルのリストを指定する。
• .frameworkをリンクしなくなるので、バンドルのリソースは使えない(NSBundle.bundleForClassは使えない)
• 静的ライブラリー(.aファイル)が作れるわけではなさそう。
![Page 19: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/19.jpg)
Sta$cally(linked(Swi/(object(files!❗The$workaround$I$talked$about$above$has$now$officially$passed$App$Store$review!
—"@stepanhruda
![Page 20: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/20.jpg)
![Page 21: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/21.jpg)
❗!To!be!careful!for!❗❗!micro!frameworks!❗
![Page 22: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/22.jpg)
!!Happy%frameworking!!!!
![Page 23: Dynamic frameworks tips](https://reader030.vdocuments.mx/reader030/viewer/2022020301/587efc031a28ab35528b62bf/html5/thumbnails/23.jpg)
Thank&you❗"