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:
Watson
2013-08-17 10:37:37 +09:00
parent 616eb90e1e
commit 8652acfd8b

View File

@@ -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