Skip to content

Latest commit

 

History

History
127 lines (86 loc) · 5.83 KB

README.md

File metadata and controls

127 lines (86 loc) · 5.83 KB

SDK

This project allow to download and build all dependencies needed by the iOS SDK. It use mainly Carthage package manager for that.

Prerequisites

First be on macOS, iOS native development is only possible on this operating system.

To build iOS SDK some tools need to be installed:

  • Xcode : version defined by xcode.json
  • Carthage
    • could be installed with brew brew install carthage
  • xprojup to upgrade third party projects
    • sudo curl -sL https://phimage.github.io/xprojup/install.sh | bash

Not mandatory but helpful

  • xcpretty to have better log
  • rome to speed up some recurrent build by managing the cache

Build

with Carthage

To build with carthage simply use the provided script. (more detail bellow)

./build.sh

with Swift Package Manager

Package.swift exists but not tested often, and not integrated with "4D Mobile App" component. (but could be implemented)

Deploy

The SDK used by "4D Mobile App" will be copied by project from cache folder.

By default the iOS SDK must be installed into: /Library/Caches/com.4D.mobile/sdk/<version>/iOS/sdk

  • with <version>: the 4d version represented as 4 digits (for instance v20=2000 , v20R2=2020)

If no SDK found it will be downloaded from latest release of this project

You could also put an archive "ios.zip" inside

  • mobile component "4D Mobile App/Resources/sdk/"
  • or inside "YourBase/Resources/mobile/sdk/"

Info about files in this project

  • build.sh: build using carthage

    • carthage.sh: allow to deactivate some architecture when building due to issue if we do framework, and not xcframework
    • sdkstriparch.sh: remove useless architectures
    • sdkclean.sh: remove some files from sources
    • sdksign.sh: with a certificate installed you could sign it (useful if embeded in a mac os app before mobile one)
    • sdklicenses.sh: update Licenses files
  • sdkarchive.sh: if we want to archive to zip with mandatory files

configuration files

  • Cartfile & Cartfile.resolved: for carthage to define list of projects.
  • Romefile for rome to define cache path
  • Package.swift for swift package manager to define list of swift projects.

SDK frameworks

SDK ones (ie. QMobile)

Name License Usefulness
QMobileAPI 4D Network api
QMobileDataStore 4D Store data
QMobileDataSync 4D Synchronize data
QMobileUI 4D Graphic, Application, Features
flowchart TD
QMobileUI --> QMobuleDataSync
QMobuleDataSync --> QMobuleDataStore
QMobuleDataSync --> QMobileAPI
Loading

3rd parties

Name License Usefulness
Prephirences MIT Application settings
XCGLogger MIT Log
FileKit MIT Files

Network/API

Name License Usefulness
Alamofire MIT Network layer
Moya MIT API abstraction layer
Kingfisher MIT Download remote image and cache
SwiftyJSON MIT Decode/Encode JSON

UI

Name License Usefulness
SwiftMessages MIT Message/Notification UI
IBAnimatable MIT Design in interface builder
ValueTransformerKit MIT Binding: transform data
Eureka MIT Show form for action

Others

Testing
Name License Usefulness
CallbackURLKit MIT x-callback-url protocol
MomXML MIT Play with core data model
Templates 3rd parties
Name License Usefulness
AnimatedCollectionViewLayout MIT template (not in SDK)
mosaic-layout MIT template (not in SDK)