diff --git a/Licenses/generate_license_assets.py b/Licenses/generate_license_assets.py
new file mode 100755
index 0000000..9d3f239
--- /dev/null
+++ b/Licenses/generate_license_assets.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python3
+
+"""Generates a set of files for Settings.bundle in order to display a list of dependency licenses used in the application.
+Liceses will be listed in Settings > Your Application > Third-Party Notices and/or Licenses.
+1) Move Licenses.plist and Licenses directory into Settings.bundle.
+2) Add entry referencing Licenses in Root.plist.
+
+PreferenceSpecifiers
+
+
+ File
+ Licenses
+ Title
+ Third-Party Notices and/or Licenses
+ Type
+ PSChildPaneSpecifier
+
+
+"""
+
+import os
+import pathlib
+
+license_list_template = """
+
+
+
+ PreferenceSpecifiers
+
+ ITEMS_PLACEHOLDER
+
+
+
+"""
+
+license_list_item_template = """
+
+ File
+ license_text_file_path_PLACEHOLDER
+ Title
+ ITEM_TITLE_PLACEHOLDER
+ Type
+ PSChildPaneSpecifier
+
+"""
+
+license_template = """
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ LICENSE_TEXT_PLACEHOLDER
+ Type
+ PSGroupSpecifier
+
+
+
+
+"""
+
+licenses_directory_name = "Licenses"
+if not os.path.exists(licenses_directory_name):
+ os.mkdir(licenses_directory_name)
+
+license_list_items = []
+
+for name in os.listdir(path='.'):
+
+ directory = name
+ if not os.path.isdir(directory):
+ continue
+
+ license_text_file_path = os.path.join(directory, "LICENSE")
+ if not os.path.isfile(license_text_file_path):
+ continue
+
+ license_path_no_extension = licenses_directory_name + "/" + directory
+
+ license_list_item = license_list_item_template
+ license_list_item = license_list_item.replace("license_text_file_path_PLACEHOLDER", license_path_no_extension)
+ license_list_item = license_list_item.replace("ITEM_TITLE_PLACEHOLDER", directory)
+ license_list_items.append(license_list_item)
+
+ with open(license_text_file_path, 'r') as license_text_file:
+ license_text = license_text_file.read()
+ license = license_template.replace("LICENSE_TEXT_PLACEHOLDER", license_text)
+ license_path = license_path_no_extension + ".plist"
+
+ license_file = open(license_path, "w")
+ license_file.write(license)
+ license_file.close()
+
+
+license_list_items_string = "".join(license_list_items)
+license_list = license_list_template.replace("ITEMS_PLACEHOLDER", license_list_items_string)
+
+license_list_path = "Licenses.plist"
+license_list_file = open(license_list_path, "w")
+license_list_file.write(license_list)
+license_list_file.close()