新秋三 【静态库传递/BaiduMapSDK/Podfile特殊命令/指令集】

1、最近解决集成的问题。Pod方面的,主要问题是静态库传递。后来也自己建了一个库,来进行测试,命令是可用并且能解决该冲突的。
可参考:
✨Prevent Transitive Dependency Errors in Swift Project with Vendored Frameworks
✨CocoaPods use_framework! 导入成功
pod install和pod update背后那点事
CocoaPods 集成私有库
Podfile中的 use_frameworks!
The 'Pods-project name' target has transitive dependencies that include static binaries 的解决方案
✨Cocoapods制作pod时,依赖百度地图SDK的一些问题

2、使用百度地图旧版进行排查问题时,会需要libstdc++.6.0.9.tbd这个库
按此文章进行解决:
Xcode10更新报错:library not found for -lstdc++.6.0.9
Xcode10: -lstdc++.6.0.9 not found

3、使用百度地图SDK来排查问题时,也了解了百度SDKPodSpec文件的内容。
4.4.0

{
  "name": "BaiduMapKit",
  "version": "4.4.0",
  "summary": "百度地图iOS SDK(CocoaPods百度地图官方库)",
  "description": "百度地图iOS SDK:百度地图官方CocoaPods.\n百度地图iOS SDK是一套基于iOS 7.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、步骑行导航等丰富的LBS能力。",
  "homepage": "http://developer.baidu.com/map/index.php?title=iossdk",
  "license": {
    "type": "MIT",
    "file": "LICENSE"
  },
  "authors": {
    "baidu map sdk": "[email protected]"
  },
  "platforms": {
    "ios": "7.0"
  },
  "source": {
    "git": "https://github.com/BaiduLBS/BaiduMapKit.git",
    "tag": "4.4.0"
  },
  "resources": "BaiduMapKit/*.framework/*.bundle",
  "vendored_frameworks": "BaiduMapKit/*.framework",
  "vendored_libraries": "BaiduMapKit/thirdlibs/*.a",
  "frameworks": [
    "CoreLocation",
    "QuartzCore",
    "OpenGLES",
    "SystemConfiguration",
    "CoreGraphics",
    "Security",
    "CoreTelephony",
    "MobileCoreServices"
  ],
  "libraries": [
    "sqlite3.0",
    "c++"
  ],
  "requires_arc": true
}

3.2.0

{
  "name": "BaiduMapKit",
  "version": "3.2",
  "summary": "百度地图iOS SDK(CocoaPods百度地图官方库)",
  "description": "百度地图iOS SDK:百度地图官方CocoaPods.\n百度地图iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位、周边雷达等丰富的LBS能力",
  "homepage": "http://developer.baidu.com/map/index.php?title=iossdk",
  "license": {
    "type": "MIT",
    "file": "LICENSE"
  },
  "authors": {
    "baidu map sdk": "[email protected]"
  },
  "platforms": {
    "ios": "5.0"
  },
  "source": {
    "git": "https://github.com/BaiduLBS/BaiduMapKit.git",
    "tag": "3.2"
  },
  "source_files": "BaiduMapKit/*.framework/Headers/*.h",
  "public_header_files": "BaiduMapKit/*.framework/Headers/*.h",
  "resources": "BaiduMapKit/BaiduMapAPI_Map.framework/Resources/mapapi.bundle",
  "vendored_frameworks": "BaiduMapKit/*.framework",
  "vendored_libraries": "BaiduMapKit/thirdlibs/*.a",
  "frameworks": [
    "CoreLocation",
    "QuartzCore",
    "OpenGLES",
    "SystemConfiguration",
    "CoreGraphics",
    "Security",
    "CoreTelephony"
  ],
  "libraries": [
    "sqlite3.0",
    "stdc++.6.0.9"
  ],
  "requires_arc": true
}

4、需要学习下Podfile的一些特殊命令

abstract_target 'XXX' do

    githubSource = ''

    source githubS

    pod ' ', ' ', :source => githubS

以及source指定

5、
(1)Architectures
我的Xcode版本是9 这个默认设置的意思是标准的架构应该是最少包含x86_64和arm64

(2)Build Active Architecture Only
设置为Yes的时候,只编译当前的架构版本
设置为NO的时候,会编译支持的所以版本
Xcode的默认设置是Debug为YES是为了在Debug调试的时候编译更快,Release为NO

(3)Valid Architectures
有效的架构,默认设置是armv7 armv7s arm64,实际编译出来的架构是取Architectures和Valid Architectures的交集。
具体的framework制作上面有贴的动态图就不讲了,下面说一下怎么合并模拟器版本和真机版本

• armv7|armv7s|arm64都是ARM处理器的指令集

• i386|x86_64 是Mac处理器的指令集
它们分别用在这些设备上
arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
模拟器32位处理器测试需要i386架构,
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构,
真机64位处理器需要arm64架构。

你可能感兴趣的:(新秋三 【静态库传递/BaiduMapSDK/Podfile特殊命令/指令集】)