如何排除SKAdvisorResources.bundle在应用程序中的复制?

时间:2016-01-23 13:25:36

标签: ios cocoapods skmaps

鉴于我不需要捆绑SKAdvisorResources,因为我不使用任何语音建议或导航,我怎样才能避免它最终出现在我的ipa中?

我已将SKMaps作为pod依赖添加到我的项目中,只需将pod“ScoutMaps-iOS-SDK”添加到我的Podfile中。

我提出的解决方案是在我的项目中添加一个自定义脚本阶段,在导出之前删除它;这是安全的,如果你想更新您的pod但我不喜欢,我更喜欢在我的Podfile中指定一些排除规则,但我不知道这是否可能......

rm -rf "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SKAdvisorResources.bundle"
rm -rf "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SKAdvisorResources.bundle"

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,可能你有一个解决方案(或决定使用另一个库)

但仅限于以后的参考

  

这适用于MacOS ,您需要检查可用工具的其他系统findsed

您可以在Podfile

上对此行进行评论
post_install do |installer|    
    app_target = "your_target_goes_here"
    puts("* Commenting file `Pods-#{app_target}-resources.sh` line having `SKAdvisorResources.bundle`")
    system("find . -name \"Pods-#{app_target}-resources.sh\" -exec sed -i '' -e \"/SKAdvisorResources.bundle/s/^/#/\" {} +")
end

让我们在这里添加一些解释,并且需要更新xD

说明:

  • /SKAdvisorResources.bundle/匹配一行 SKAdvisorResources.bundle 在其中
  • s在上面匹配的行上执行替换
  • 如果匹配,则会插入哈希字符# 在行^
  • 的开头

答案 1 :(得分:0)

根据@yeradis建议,我的最终解决方案会循环播放podfile中定义的聚合目标列表,并将替换应用于所有文件。

post_install do |installer|
    installer.aggregate_targets.each do |target|
        puts("* Commenting file `#{target.label}-resources.sh` lines having `SKAdvisorResources.bundle`")

        system("find . -name \"#{target.label}-resources.sh\" -exec sed -i '' -e \"/SKAdvisorResources.bundle/s/^/#/\" {} +")
    end
end

请注意,target.label会返回包含Pods-前缀

的字符串