cocoa-chen / AppOrderFiles

The easiest way to generate order files for Mach-O using Clang. Improving App Performance.

Home Page:http://yulingtianxia.com/blog/2019/09/01/App-Order-Files/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Platform CI Status Version GitHub release Twitter Follow

AppOrderFiles

The easiest way to generate order files for Mach-O using Clang SanitizerCoverage. Improving your App Performance.

Enjoy it!!!

Feature

  • Swift/Objective-C/C/C++
  • All Methods and Functions
  • All Blocks
  • iOS/macOS/tvOS/watchOS

Usage

Just call AppOrderFiles().

AppOrderFiles(^(NSString *orderFilePath) {
    NSLog(@"OrderFilePath:%@", orderFilePath);
});

After generating "app.order" file, just move it to your project workspace, and fill in "Order File" in build settings.

AppOrderFiles also print results in debug console.

Installation

NOTE: In build settings of your Xcode project/target, add -fsanitize-coverage=func,trace-pc-guard under "Other C Flags". If you are using Swift, also add -sanitize-coverage=func and -sanitize=undefined under "Other Swift Flags".

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate AppOrderFiles into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
	pod 'AppOrderFiles'
end

You need replace "MyApp" with your project's name.

Then, run the following command:

$ pod install

AppOrderFiles works under Clang SanitizerCoverage, you can modify Xcode build settings manually, or using Podfile.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['OTHER_CFLAGS'] = '-fsanitize-coverage=func,trace-pc-guard'
      config.build_settings['OTHER_SWIFT_FLAGS'] = '-sanitize-coverage=func -sanitize=undefined'
    end
  end
end

Reference

About

The easiest way to generate order files for Mach-O using Clang. Improving App Performance.

http://yulingtianxia.com/blog/2019/09/01/App-Order-Files/

License:MIT License


Languages

Language:Objective-C 86.0%Language:Ruby 10.0%Language:Swift 2.8%Language:C 1.1%