Podfile采用的是Ruby语法编写
在使用 use_frameworks! 的时候,采用动态库编译会碰到
error: Cycle in dependencies between targets ‘FBReactNativeSpec’,可以采用下面的写法代替下面的代码,这里是移动了CP-User的位置
post_install do |installer|
installer.pods_project.targets.each do |target|
if (target.name&.eql?('FBReactNativeSpec'))
target.build_phases.each do |build_phase|
if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
target.build_phases.move(build_phase, 0)
end
end
end
end
end
# post_install do |installer|
# react_native_post_install(installer)
# end
有时候会碰到第三方库未更新适配问题,比如在react-native 0.63之后,use_frameworks! 的时候,第三方库 s.dependency='React' 需要更改为 s.dependency='React-Core'. 这时候如果库没更新,要么手动更改,还可以在Podfile里面动态更改,无需手动操作,如:
在Podfile target外面添加方法:
# fixes for last Mac updates
def find_and_replace(dir, findstr, replacestr)
Dir[dir].each do |name|
text = File.read(name)
replace = text.gsub(findstr,replacestr)
if text != replace
puts "Fix: " + name
File.open(name, "w") { |file| file.puts replace }
STDOUT.flush
end
end
Dir[dir + '*/'].each(&method(:find_and_replace))
end
修改 art库
find_and_replace("../node_modules/@react-native-community/art/ReactNativeART.podspec",'s.dependency "React"', 's.dependency "React-Core"')
如果还需要其他修改,一样可以这样操作,还可以根据需要自己采用Ruby编写逻辑