mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-03-29 22:43:28 +08:00
fix a bug when generated bridgesupport in iOS where it is not handled subframework
http://hipbyte.myjetbrains.com/youtrack/issue/RM-173
This commit is contained in:
@@ -126,20 +126,22 @@ task :bridgesupport_files do
|
||||
sdk_path = "#{platform_dev_path}/SDKs/iPhoneSimulator#{sdk_version}.sdk"
|
||||
sdk_frameworks = "#{sdk_path}/System/Library/Frameworks"
|
||||
mkdir_p "ios/#{sdk_version}/BridgeSupport"
|
||||
mkdir_p "ios/#{sdk_version}/BridgeSupport/child"
|
||||
|
||||
Dir.glob('*.bridgesupport').each { |bs| cp bs, "ios/#{sdk_version}/BridgeSupport" }
|
||||
Dir.glob('ios/*.bridgesupport').each { |bs| cp bs, "ios/#{sdk_version}/BridgeSupport" }
|
||||
|
||||
Dir.glob(File.join(sdk_frameworks, '*.framework')).each do |framework_path|
|
||||
generate_bridgesupport_file = lambda do |sdk_path, sdk_version, framework_path, is_handle_nested|
|
||||
framework = File.basename(framework_path, '.framework')
|
||||
next if EXCLUDED_FRAMEWORKS.include?(framework)
|
||||
next unless File.exist?(File.join(framework_path, framework))
|
||||
next unless File.exist?(File.join(framework_path, 'Headers'))
|
||||
break if EXCLUDED_FRAMEWORKS.include?(framework)
|
||||
break unless File.exist?(File.join(framework_path, framework))
|
||||
break unless File.exist?(File.join(framework_path, 'Headers'))
|
||||
dest = "ios/#{sdk_version}/BridgeSupport/#{framework}.bridgesupport"
|
||||
dest = "ios/#{sdk_version}/BridgeSupport/child/#{framework}.bridgesupport" if is_handle_nested
|
||||
unless File.exist?(dest)
|
||||
a = sdk_version.scan(/(\d+)\.(\d+)/)[0]
|
||||
sdk_version_headers = ((a[0].to_i * 10000) + (a[1].to_i * 100)).to_s
|
||||
sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework}\" --framework #{sdk_frameworks}/#{framework}.framework > #{dest}"
|
||||
sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework}\" --framework #{framework_path} > #{dest}"
|
||||
apply_bridgesupport_fixes(dest)
|
||||
|
||||
if framework == 'Foundation' and sdk_version >= '7.0'
|
||||
@@ -147,6 +149,20 @@ task :bridgesupport_files do
|
||||
sh "/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags \"-isysroot #{sdk_path} -miphoneos-version-min=#{sdk_version} -DTARGET_OS_IPHONE -D__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__=#{sdk_version_headers} -framework #{framework} -I#{sdk_path}/usr/include \" objc/NSObject.h objc/NSObjCRuntime.h > /tmp/NSObject.bridgesupport"
|
||||
merge_bridgesupport dest, '/tmp/NSObject.bridgesupport'
|
||||
end
|
||||
|
||||
return dest
|
||||
end
|
||||
return dest if is_handle_nested
|
||||
end
|
||||
|
||||
Dir.glob(File.join(sdk_frameworks, '*.framework')).each do |framework_path|
|
||||
base_bridgesupport_path = generate_bridgesupport_file.call(sdk_path, sdk_version, framework_path, false)
|
||||
if base_bridgesupport_path
|
||||
child_framework_paths = Dir.glob(File.join(framework_path, '/Frameworks/*.framework'))
|
||||
child_framework_paths.each do |child_framework_path|
|
||||
merge_path = generate_bridgesupport_file.call(sdk_path, sdk_version, child_framework_path, true)
|
||||
merge_bridgesupport(base_bridgesupport_path, merge_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user