• This repository has been archived on 10/Apr/2020
  • Stars
    star
    442
  • Rank 95,511 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Move all dynamic frameworks symbols into the main executable.

cocoapods-amimono

amimono

Move all dynamic frameworks symbols into the main executable.

Why would you want this plugin in your Podfile?

Apple introduced dynamic linking on iOS 8 alongside with Swift. Shortly after, this was adopted by CocoaPods as a requirement to use Pods that contain Swift, because Xcode can't use static libraries with Swift.

On iOS 9.1, a dyld crash affected the vast majority of apps that used a high number of dynamic frameworks. You can learn more about the issue on artsy/eigen#1246. Although the issue was fixed on iOS 9.3.2, it was clear that having a high number of dynamic frameworks was not a good idea. During WWDC 2016, someone asked what would be the optimal number of dynamic frameworks on an iOS application and we got the following response:

Apple advises to use about half a dozen dynamic frameworks in an app. Hard to achieve with external & internal deps. -- from Twitter

This is hardly an option for some. If you think you might be in that group, then continue reading.

What is this plugin doing?

This plugin is based on dyld-image-loading-performance. In a nutshell, it copies all symbols of your CocoaPods dependencies into your main app executable, so the dynamic linker doesn't have to load the frameworks. You can verify this yourself by enabling

log_setting_xcode.png

and looking at the log output you shouldn't find any dlopen call of your CocoaPods frameworks.

Limitations

Currently this plugin has the following limitations:

  • You will have modify your post_install hook. This is necessary because the CocoaPods plugin API currently doesn't offer everything that the gem needs.

Installation

gem install cocoapods-amimono

Usage

Add the following to your Podfile:

plugin 'cocoapods-amimono'

Add the following to your post_install hook:

post_install do |installer|
  require 'cocoapods-amimono/patcher'
  Amimono::Patcher.patch!(installer)
  ...

Example project

Here.

More Repositories

1

ios-ci-jenkins-example

This is a CI example with an iOS application using xctool, CocoaPods, AFNetworking, OCMockito, OCHamcrest, gcovr, oclint, cloc, PMD and Jenkins.
Objective-C
75
star
2

ios-facade-example

This is a facade example with an iOS application using AFNetworking, TMCache, MagicalRecord and Mantle.
Objective-C
70
star
3

ios-swift-example

This is an iOS application example written in Swift using Alamofire networking library, Realm mobile database library and SwiftyJSON JSON parsing library.
Swift
58
star
4

ruby

A PlayStation emulator written in C++
C++
21
star
5

android-cd-travis-example

This is a CD example with an Android application using gradle, Robospice, Instrumentation, Support Library v4 and v7, Travis and TestFlight.
Java
18
star
6

Android-MessagesListView

An Android library to easily display a list of messages.
Java
11
star
7

nana

A Game Boy emulator written in Go
Go
11
star
8

gameshell-cross-compile

Cross compiling instructions for C(++) targeting GameShell
Makefile
9
star
9

fbsnapfail

Jenkins plugin for displaying FBSnapshotTestCase failed tests.
Java
9
star
10

Traveler

Traveler is an API client for Bungie's Destiny API written in Swift.
Swift
8
star
11

cocoapods-amimono-example

Example usage for cocoapods-amimono
Objective-C
5
star
12

sakura

An instruction accurate PC Engine/TurboGrafx-16 emulator written in modern C++
C++
5
star
13

reactivecocoa-example

This is an iOS 7 application example using ReactiveCocoa.
Objective-C
5
star
14

caster

Ray casting based renderer implementation using Euclidean geometry in Go
Go
5
star
15

nano

MOS Technology 6502 processor emulator
Python
5
star
16

android-facade-example

This is a facade example with an iOS application using Bolts, OkHttp, Guava, ActiveAndroid and Gson.
Java
5
star
17

tiny-renderer

A (tiny) LCD "framebuffer" OpenGL renderer
C
3
star
18

nisekoi

Calculate average landing PR times
Go
3
star
19

nana.cpp

A Game Boy emulator for the Nintendo Switch system
C++
3
star
20

shinobu

A cycle accurate Game Boy and Game Boy Color debugger, disassembler and emulator written in modern C++
C++
3
star
21

rxjava-example

This is an Android application example using RxJava.
Java
3
star
22

advent-of-code-2022

Advent of Code 2022
Python
3
star
23

libHana

A GDB stub for MIPS architecture
Go
2
star
24

cyclic-redundancy-check-algorithms

CRC8, CRC16 and CRC32 implementations in Go
Go
2
star
25

Pokeffective-iOS

Pokeffective is an iPhone application that evaluates the effectiveness of your pokemon party.
Objective-C
2
star
26

fansabisu

The missing AniTwitter feature for the iOS Twitter clients.
Swift
2
star
27

android-development-tools

This will be a repository where I'll be storing all the tools I use on Android development.
2
star
28

helios-server-example

This is an Helios server application example.
Ruby
2
star
29

Parallax-ListView-Android

This is a parallax ListView implementation in Android, work in progress.
Java
2
star
30

newgame

Small iOS app that helps you to populate your Simulator or Device with images from Google Custom Search
Swift
2
star
31

hachiko

A **very limited** Nana memory debugger
Ruby
1
star
32

learn-opengl-playground

Playground for Learn OpenGL tutorials code
C
1
star
33

UnsafePointer

1
star
34

chihaya

A CHIP-8 emulator written in Clojure
Clojure
1
star
35

helios-client-example

This is an Helios client app example.
Objective-C
1
star
36

wc-dash-double-u-spark

A `wc -w` Apache Spark application
Kotlin
1
star
37

ruby.builders

Continuous integration for the ruby PlayStation emulation project
HCL
1
star
38

elk-jenkins-docker-compose

ELK setup + Jenkins in Docker compose
1
star
39

sdl2-opengl-cpp-template

Template repository for creating a C++ Visual Studio Code project with SDL2 and OpenGL
C
1
star
40

memory-management

Playground to familiarize myself with all the memory management types in C++
C++
1
star
41

cocoapods-rome-xcode-10-toolchain-problem-demo

Project showcasing a problem with Xcode 10 toolchain and CocoaPods
Swift
1
star
42

instrumentality

Command line interface to profiling tools for iOS development
Ruby
1
star
43

terraform-aws-s3-static-website-cloudfront-distribution

Terraform module to create an AWS CloudFront distribution serving an static website hosted on AWS S3 with SSL managed by AWS ACM
HCL
1
star
44

ios-development-tools

This will be a repository where I'll be storing all the tools I use on iOS development.
1
star
45

opengl-renderer-tests-archived

Collection of different techniques to put pixels on the screen with specialized hardware.
C++
1
star
46

advent-of-code-2021

Advent of Code 2021
Python
1
star
47

advent-of-code-2020

Advent of Code 2020
Python
1
star
48

lltv

Love Live! Twitter bot inspired in @keion_tv
Ruby
1
star
49

fastlane_xcconfig_xcode_9

Project that showcases a fastlane issue with Xcode 9 projects using xcconfig files
Ruby
1
star