In Badoo iOS development, we've been building modules for several years now, and most of the new code is developed outside of the app codebase. We now have over 100 modules for Badoo and Bumble. In this article, I will share our experience and answer the most popular questions about modularization:
by what principle to allocate modules;
how to organize connections between them;
;
;
;
;
.
— , , . , . :
. , — , . .
. , , - . — , , .
, . ?
. : .
. , , .
. , .
. , , , , . .
, , , - .
? , , , : , , . . : ? :
— : «», «», «». .
() , - (, ) .
, . ( ). , - “” -.
— - iOS, Apple ID. , iOS, Apple Apple ID. . ?
.
.
Apple ID .
…
!
, . .
, ?
, :
. - , (, , . .), -.
. view- . UIKit -.
, UI. . .
, ( ). :
(, ), — . , , , UI .
, UI- . : ?
UIGallery, UI-. - — :
, Badoo Bumble:
110 ;
- , ;
;
;
: .
, , . , , . .
, . Badoo, .
, , , , . .
— : . ( 100), , , . , . . , .
, , 1, , . , , , , . . , , . , . «» , , .
, , — . , , .
, . , . - , , , , , — , . . , - , , .
?
Badoo ( Chat, ChatUI ChatService).
Bumble. , , Badoo, Bumble. , Bumble, Badoo. , .
, . — . , , .
, .
. , .
. , , .
, . : , , , - , , . . , .
, . , QA, — , . .
iOS-, .
, , — . , , 50 - Swift , . Build Settings . , , , .
, : ? Swift? / Bitcode? . . , . .
, : , debug-, Bitcode debug- . . ?
. ( ) CocoaPods. Development-, , post_install- . , , CocoaPods, , . , , , - . , CocoaPods — Enterprise- , . .
. — xcconfig’. . xcconfig:
, Xcode (xcodeproj/project.pbxproj).
. #include.
, .
, , , build- (Debug, Release, Production ). .
: Bundle ID, Info.plist, modulemap:
xcconfig , , :
.
.
.
.
, Git pre-commit hooks Build Settings .
, , — . , , , . Xcode .
, , , build- . — , CocoaPods, , Xcodeproj « , , xcworkspace».
, , . . .
- « », : ? .
-, , . , , .
-, . , Xcode : Framework Search Paths Derived Data.
(, ).
-, — . , , .
, , . , , . . .
— . , , . :
Xcode . .
— . , .
- , - . . .
. , — . , , , , , .
? — Swift-, , . Standalone- XcodeGen. Deps, . :
, , xcconfig. :
, .
.
xcconfig’.
.
.
, . xcconfig, . , Swift , .
, , …
. !