Skip to content

Instantly share code, notes, and snippets.

@DrMoriarty
Created August 5, 2020 13:22
Show Gist options
  • Save DrMoriarty/08bf11c6d5928463dd686e7788541e88 to your computer and use it in GitHub Desktop.
Save DrMoriarty/08bf11c6d5928463dd686e7788541e88 to your computer and use it in GitHub Desktop.
tool
extends EditorPlugin
class MyExportPlugin:
extends EditorExportPlugin
func _add_bundles():
var dir = Directory.new()
if dir.open('res://addons/iOS') == OK:
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != '':
if dir.current_is_dir() and file_name.ends_with('.bundle'):
var bundle = dir.get_current_dir() + "/" + file_name
print('Add iOS bundle: %s'%bundle)
add_ios_bundle_file(bundle)
file_name = dir.get_next()
else:
print('Can not open iOS addon directory!')
func _add_installed_frameworks():
var dir = Directory.new()
if dir.open('res://addons/iOS') == OK:
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != '':
if dir.current_is_dir() and (file_name.ends_with('.framework') or file_name.ends_with('.xcframework')):
var framework = dir.get_current_dir() + "/" + file_name
print('Add iOS framework: %s'%framework)
add_ios_framework(framework)
file_name = dir.get_next()
else:
print('Can not open iOS addon directory!')
func _add_standard_frameworks():
var f = File.new()
f.open('res://addons/iOS/std_frameworks.txt', File.READ)
while not f.eof_reached():
var fr = f.get_line()
if fr.begins_with('#') or fr == '':
# skip comments
continue
add_ios_framework(fr)
print('Add standard framework: %s'%fr)
func _add_plist_content():
var dir = Directory.new()
if dir.open('res://addons/iOS') == OK:
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != '':
if not dir.current_is_dir() and file_name.ends_with('.plist'):
if file_name == 'GoogleService-Info.plist':
var bundle = dir.get_current_dir() + "/" + file_name
add_ios_bundle_file(bundle)
print('Add plist bundle: %s'%bundle)
else:
var plist = dir.get_current_dir() + "/" + file_name
print('Add plist content: %s'%plist)
var f = File.new()
f.open(plist, File.READ)
var content = f.get_as_text()
f.close()
add_ios_plist_content(content)
file_name = dir.get_next()
else:
print('Can not open iOS addon directory!')
func _export_begin(features, debug, path, flags):
if 'iOS' in features:
add_ios_linker_flags("-ObjC")
_add_installed_frameworks()
_add_bundles()
_add_standard_frameworks()
_add_plist_content()
else:
print('Skip: platform not iOS')
func _init():
add_export_plugin(MyExportPlugin.new())
func _enter_tree():
pass
func _exit_tree():
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment