yulingtianxia / AppOrderFiles

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/
MIT License
658 stars 128 forks source link

输出的order file文件只有_main #12

Open kevinLiang19920403 opened 4 years ago

kevinLiang19920403 commented 4 years ago

我们项目的工程是cocoapod管理, 除了main文件在主工程, 其他文件都分部在pods里, 我把工程配置好后运行, 发现输出的order file文件里只有_main, 这个的原因是什么, 怎么解决呢 是否只有在 Build phase->Compile Sources里的文件才能检测到

yulingtianxia commented 4 years ago

Pods 里只有二进制么?

kevinLiang19920403 commented 4 years ago

Pods 里只有二进制么?

我们不是二进制的pod, 还是源码 举个例子, 假如我在工程里引入三方AFNetworking, 然后 pod install, Build phase->Compile Sources里是没有AFN相关文件的, 在AppDelegate里引用[AFNetworkReachabilityManager sharedManager]; 按照我之前的理解, AFN是源码, 输出的order file里也应该有AFN相关的方法, 但实际上没有. 我们的项目, 除了main函数在主工程, 其他代码都以pod的形式集成, Build phase->Compile Sources里只有main文件, 这种情况应该怎么处理

yulingtianxia commented 4 years ago

你是在 AppOrderFiles 函数调用之前使用的 AFN 么

kevinLiang19920403 commented 4 years ago

你是在 AppOrderFiles 函数调用之前使用的 AFN 么

AppOrderFiles是在VC里调用的, AFN是在AppDelegate里使用过, 我看了一下主工程的build setting里设置了-fsanitize-coverage=func,trace-pc-guard, pod的工程目录下是没有的, 在podfile里加上下面的代码就可以了 post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| macho_type = config.build_settings['MACH_O_TYPE']

if macho_type == 'staticlib'

    # 将依赖的pod项目的Other C Flags加上’-fsanitize-coverage=func,trace-pc-guard‘选项
    config.build_settings['OTHER_CFLAGS'] ||= ['$(inherited)', '-fsanitize-coverage=func,trace-pc-guard']
    config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['$(inherited)', '-fsanitize-coverage=func,trace-pc-guard']
  #end
end

end end

yulingtianxia commented 4 years ago

嗯,文档里有写