Build
Cocoapods
Podfile example
install! 'cocoapods', :deterministic_uuids => false
minimum_deployment_target = '11.0'
platform :ios, minimum_deployment_target
source <YOUR_PRIVATE_REPOSITORY>
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/brion/OGVKit-Specs.git'
use_frameworks!
inhibit_all_warnings!
project IMClient,
def import_common_pods
pod 'Firebase', :subspecs => ['Core', 'RemoteConfig']
end
def messaging_kit_pod (name, subspecs)
pod name, '~> 8400.1.1', :subspecs => subspecs
end
def import_app_pods
pod 'StaticDataTableViewController', '~> 2.0'
end
app_target_name = 'IMClient'
target app_target_name do
messaging_kit_pod('TPDMessagingKit', ['Core', 'Conversation', 'Calls', 'Passcode'])
end
# Uncomment if you need Share Extension
#
# share_ext_target_name = 'ShareExt'
#
# target share_ext_target_name do
# messaging_kit_pod('TPDMessagingKit_AppExtension', ['Core', 'Conversation', 'Passcode'])
# end
pods_for_patching_in_share_ext = ['TPDMessagingKit_AppExtension', 'TPDUIKit_AppExtension']
pods_for_patching_in_app = ["Pods-#{app_target_name}}"]
def patch_xconfig (config_path, excess_pods, excess_definitions = [])
excess_pods.each do |pod|
%x[sed -i '' -E 's/(-isystem[[:space:]]+)?"\\$\\{PODS_ROOT\\}\\/Headers\\/Public\\/'"#{pod}"'"//g' "#{config_path}"]
%x[sed -i '' -E 's/"\\$\\{PODS_CONFIGURATION_BUILD_DIR\\}\\/'"#{pod}"'"//g' "#{config_path}"]
%x[sed -i '' -E 's/-iquote[[:space:]]"\\$\\{PODS_CONFIGURATION_BUILD_DIR\\}\\/'"#{pod}"'\\/'"#{pod}"'\\.framework\\/Headers"//g' "#{config_path}"]
%x[sed -i '' -E 's/-framework[[:space:]]"'"#{pod}"'"//g' "#{config_path}"]
end
excess_definitions.each do |d|
%x[sed -i '' -E 's/'"#{d}"'/ /g' "#{config_path}"]
end
end
def patch_target (target, excess_pods, excess_definitions = [])
target.xcconfigs.each do |name,_|
patch_xconfig("#{target.client_root}/#{target.xcconfig_relative_path(name)}", excess_pods, excess_definitions)
end
end
def patch_colors_path (uikit_root_path)
uikit_root_path.gsub!("/", "\\/")
%x[sed -i '' -E 's/TPD_UIKIT_ROOT_PATH[[:blank:]]*=[[:blank:]]*.*/TPD_UIKIT_ROOT_PATH = #{uikit_root_path}/' CommonBuildConfig.xcconfig]
end
post_install do |installer|
excess_pods_for_share_ext = ['TPDMessagingKit', 'TPDUIKit']
excess_pods_for_app = ['TPDMessagingKit_AppExtension', 'TPDUIKit_AppExtension']
installer.aggregate_targets.each do |target|
target.pod_targets.each do |pt|
if pt.name == 'TPDUIKit'
patch_colors_path("#{pt.pod_target_srcroot}")
end
end
end
installer.aggregate_targets.each do |target|
if target.target_definition.name == share_ext_target_name
patch_target(target, excess_pods_for_share_ext)
end
if target.target_definition.name == app_target_name
patch_target(target, excess_pods_for_app, ['TPDMESSAGINGKIT_TARGET_IS_EXTENSION', 'TPDUIKIT_TARGET_IS_EXTENSION'])
end
target.pod_targets.each do |pt|
if pods_for_patching_in_share_ext.include? pt.name
debugName = "#{pt.xcconfig_path}".sub(".xcconfig", ".debug.xcconfig")
releaseName = "#{pt.xcconfig_path}".sub(".xcconfig", ".release.xcconfig")
patch_xconfig(debugName, excess_pods_for_share_ext)
patch_xconfig(releaseName, excess_pods_for_share_ext)
end
if pods_for_patching_in_app.include? pt.name
patch_xconfig("#{pt.xcconfig_path}", excess_pods_for_app)
end
if 'FMDB' == pt.name
debugName = "#{pt.xcconfig_path}".sub(".xcconfig", ".debug.xcconfig")
releaseName = "#{pt.xcconfig_path}".sub(".xcconfig", ".release.xcconfig")
%x[sed -i '' -E 's/-l"sqlite3"//g' "#{debugName}"]
%x[sed -i '' -E 's/-l"sqlite3"//g' "#{releaseName}"]
end
end
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if !config.name.end_with?('-AppStore') && config.name != 'Release' && config.name != 'Debug'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'TPL_LOGS_ENABLED=1', 'MT_LOGS_ENABLED=1', 'TL_LOGS_ENABLED=1',
'TPDMESSAGINGKIT_LOGS_ENABLED=1']
end
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = ['$(inherited)', '$(FRAMEWORK_SEARCH_PATHS)', '$(CONFIGURATION_BUILD_DIR)']
if 'FMDB' == target.name
config.build_settings['HEADER_SEARCH_PATHS'] = ['$(inherited)', '${PODS_ROOT}/SQLCipher']
end
# workaround for xCode 12 (target iOS = 8 is not supported anymore)
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = minimum_deployment_target
end
end
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete('CODE_SIGNING_ALLOWED')
config.build_settings.delete('CODE_SIGNING_REQUIRED')
end
end
plugin 'cocoapods-acknowledgements',
:settings_bundle => true,
:exclude => ['DynamicWebRTC', 'TPLKit', 'MTProtoKit', 'TLAPIKit', 'TPDMessagingKit', 'TPDMessagingKit_AppExtension',
'TPDFoundation', 'TPDUIKit', 'TPDUIKit_AppExtension', 'TelepadoPhotoLibrary', 'RSFoundationUtils', 'RSTimeAgo',
'RSPagedItemsController'],
:settings_post_process => Proc.new { |settings_plist_path, umbrella_target|
require 'colored2'
has_unaccepted_lines = false
file_path = "Pods/#{umbrella_target.cocoapods_target_label}-metadata.plist"
File.open(file_path) do |f|
f.each_line do |line|
if line =~ /(tpado|Telepado|RishatShamsutdinov)/
puts "Unaccepted line: #{line.strip}".red
has_unaccepted_lines = true
end
end
end
if has_unaccepted_lines
puts "Seems like you didn't exclude private Telepado pods from acknowledgements.".red
raise "#{file_path} contains unaccepted lines."
end
}Last updated
