Giter Club home page Giter Club logo

manualdependencyexample's Introduction

This is an example project built to model complicated iOS app project structure. It consists of the main project and 3 sub-projects.

  • MainProject - builds a simple Tab-based app. It contains and imports 3 other projects. The project also imports AFNetworking framework and Reachability static library
  • ProjectA - static library and resource bundle providing a view controller in Objective-C.
  • ProjectB - dynamic framework providing a view controller. This project imports ProjectC.
  • ProjectC - dynamic framework providing a view controller and ModelMapper, that imports ObjectMapper framework.

All source code for third-party dependencies live inside ThirdParty folder. That directory also has some convenience scripts:

  • Download.sh - downloads third-party source code from git repositories which specified in Repositories.csv (format: RepositoryName,GitCloneURL,TagOrBranchOrRevision )
  • ConvertToLib.sh - takes path to a ".framework" bundle containing fake (static) framework, and splits it into libraries for Simulator and device. It places libraries and header files inside iphoneos and iphonesimulator directories.
  • CopyLibraries.sh - takes path to a build products directory (Build/Products) of a library project and copies library and headers into project's Libraries folder. Requires library project to have built library for Release configuration, for both Simulator and device (select any simulator, then Cmd + Shift + I; select "Generic iOS Device", then Cmd + Shift + I).
  • CopyFrameworks.sh - same as CopyLibraries.sh but for frameworks. Takes path to build products directory and copies all contents of Release configurations to Frameworks folder in project.

Third-party libraries are placed into Libraries/${PLATFORM_NAME}/ directory, with include files placed inside Libraries/${PLATFORM_NAME}/include/LibraryName.

Third-party frameworks and dSYMs are put inside Frameworks/${PLATFORM_NAME} directory.

MainProject uses ThirdPartyConfig.xcconfig file to set proper Xcode build settings for importing frameworks and libraries. The project also uses EmbedFrameworksScript.sh to copy frameworks into app bundle. The same approach for configuration files is used inside ProjectC which uses ObjectMapper framework.

manualdependencyexample's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.