上一章讲了xcode 生成产品的进程及途径配备,还有 xcodeproj文件作用。今日来了解Xcode内置东西及pods调试。
一、Xcode内置东西
先来看看Xcode内置PlugIns有哪些: xcode是经过xcode3core这个距离来配备原文件相关xcodeproj工程文件的。 我们发现上一章呈现的了解参数。
核心问题来了
(ps:让我想到<一休哥>多动脑思考一下):
1.假设我们能调用这个系统动态库dyld(DevToolsCore)
2.经过系统动态库来调用内置东西
3.比方修正xcodeproj文件比较,举一反三。
1.将系统动态库导入Xcode
- 将系统动态库拖入Xcode中时可能会运转报错:
dyld[20219]: Library not loaded:
@rpath/DVTPortal.framework/Versions/A/DVTPortal
-
@
rpath
:framework在真机中的途径(真机中选用@rpath + framework中要调用的类的途径) -
解决方法:找到链接不到的framework地点途径,配备给
Runpath Search Paths
(多个framework找不到可能要添加多个途径) 配备Config.xcconfig文件环境变量
LD_RUNPATH_SEARCH_PATHS = "/Applications/Xcode.app/Contents/SharedFrameworks" "/Applications/Xcode.app/Contents/Frameworks" "/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/Frameworks"
-
framework search path
:去哪个途径去搜索framework 在Config.xcconfig文件环境变量对应环境变量
FRAMEWORK_SEARCH_PATHS = "/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/Frameworks"
-
ld -framework
:运用Other Linker Flags
告知链接器要链接的framework称谓
OTHER_LDFLAGS = -framework DevToolsCore -Xlinker -U -Xlinker _IDEInitialize
-
Xlinker
:后面接的参数是直接传给链接器的,而非Clang了 -
-U
:要求链接器不要查看后边的符号(例中为_IDEInitialize符号) - 告知连接器忽略_IDEInitialize这个符号过错。
- 配备
Header Search Paths
,让工程能按途径找到这些头文件(留心假设在Build Settings中手动改了会影响Config文件收效)
HEADER_SEARCH_PATHS = "${SRCROOT}"
2.在编写功用代码(模拟将文件拖入工程)
int main(int argc, const char * argv[]) {
NSError *error;
BOOL initialized = IDEInitialize(1, &error);
PBXProject *project = [PBXProject projectWithFile:@"xxxxxx"];
[[project rootGroup] addFiles:@[@"xxxxx.h"] copy:NO createGroupsRecursively:NO];
[project writeToFileSystemProjectFile:YES userFile:NO checkNeedsRevert:NO];
NSLog(@"%@", project);
return 0;
}
编译成功:
二、pods调试
第二条是ruby调用三方库的流程。
1.ruby环境配备
也可参看ruby设备,现已设备或许会的同学就越过。
1.gem info ruby-macho
2.ruby -v //查看版别
3.rvm list
4.bat ~/.zshrc //查看环境变量
5.vim ~/.bashrc //创立一个配备环境变量文件
6.source ~/.zshrc
7.echo $PATH
8.gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems
进程中遇到的问题调集: 1.发现rvm list 并没有指定到具体版别:
rvm list known //具体可以支撑版别
rvm install 2.7.3
//假设rvm 版别过旧更新
\curl -sSL https://get.rvm.io | bash -s stable
rvm -v
2.国内宽厚的改镜像地址 3.配备IDE-VSCode 4.设备VSCode插件
Ruby
Ruby Solargraph
Error Lens
//验证是否设备 插件
gem info bundler
gem info ruby-debug-ide
gem info debase
gem info rubocop
gem info solargraph
gem info rake
//没有设备就履行
gem install ruby-debug-ide
//确保这些插件设备成功
//假设solargraph 无效履行如下代码
brew install coreutils
//查看设备途径
which solargraph
参看学习了:RVM 的设备和运用
2.pods调试
接下来,我们在xcode里用ruby调试pods。 留心:xcode的Ruby插件作用就是会生成一个调试文件launch.json
1.配备VsCode-ruby
name就是调试项目的称谓,program 就是ruby代码文件。一般bin目录存放rb文件。
1.bundle:的指令,在VSCode中也需要用(Gemfile)配备文件编写 这些代码是不是很了解,就如我们podfile 文件代码差不多。
2.pods调试
运用VSCode翻开CocoaPods-master 创立调试文件launch.json修正”program”: “${workspaceRoot}/bin/pod” 然后在vscode终端履行:
bundle install
运转好久后: rake版别太旧也要更新。
Uncaught exception: You have already activated rake 13.0.3, but your Gemfile requires rake 12.3.3. Prepending `bundle exec` to your command may solve this.
[/Users/xx/.rvm/rubies/ruby-3.0.0/lib/ruby/site_ruby/3.0.0/bundler/runtime.rb:309](<> [/Users/xx/.rvm/rubies/ruby-3.0.0/lib/ruby/site_ruby/3.0.0/bundler/runtime.rb:25](<>
launch.json配备args 添加install
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug xcodeproj",
"type": "Ruby",
"request": "launch",
"program": "${workspaceRoot}/CocoaPods-master/bin/pod",
"args":[
"install",
"--project-directory=./LGApp"
]
}
]
}
运转调试成功! (因为自己对工程化理解有限,我就记录我所知的东西)