mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-18 11:13:28 +01:00
Merge branch 'jailbreak' into develop
This commit is contained in:
36
AltDaemon/AltDaemon-Bridging-Header.h
Normal file
36
AltDaemon/AltDaemon-Bridging-Header.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface AKDevice : NSObject
|
||||||
|
|
||||||
|
@property (class, readonly) AKDevice *currentDevice;
|
||||||
|
|
||||||
|
@property (strong, readonly) NSString *serialNumber;
|
||||||
|
@property (strong, readonly) NSString *uniqueDeviceIdentifier;
|
||||||
|
@property (strong, readonly) NSString *serverFriendlyDescription;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface AKAppleIDSession : NSObject
|
||||||
|
|
||||||
|
- (instancetype)initWithIdentifier:(NSString *)identifier;
|
||||||
|
|
||||||
|
- (NSDictionary<NSString *, NSString *> *)appleIDHeadersForRequest:(NSURLRequest *)request;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface LSApplicationWorkspace : NSObject
|
||||||
|
|
||||||
|
@property (class, readonly) LSApplicationWorkspace *defaultWorkspace;
|
||||||
|
|
||||||
|
- (BOOL)installApplication:(NSURL *)fileURL withOptions:(nullable NSDictionary<NSString *, id> *)options error:(NSError *_Nullable *)error;
|
||||||
|
- (BOOL)uninstallApplication:(NSString *)bundleIdentifier withOptions:(nullable NSDictionary *)options;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
22
AltDaemon/AltDaemon.entitlements
Normal file
22
AltDaemon/AltDaemon.entitlements
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>application-identifier</key>
|
||||||
|
<string>6XVY5G3U44.com.rileytestut.AltDaemon</string>
|
||||||
|
<key>get-task-allow</key>
|
||||||
|
<true/>
|
||||||
|
<key>platform-application</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.authkit.client.private</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.private.mobileinstall.allowedSPI</key>
|
||||||
|
<array>
|
||||||
|
<string>Install</string>
|
||||||
|
<string>Uninstall</string>
|
||||||
|
<string>InstallForLaunchServices</string>
|
||||||
|
<string>UninstallForLaunchServices</string>
|
||||||
|
<string>InstallLocalProvisioned</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
65
AltDaemon/AnisetteDataManager.swift
Normal file
65
AltDaemon/AnisetteDataManager.swift
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
//
|
||||||
|
// AnisetteDataManager.swift
|
||||||
|
// AltDaemon
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
import AltSign
|
||||||
|
|
||||||
|
private extension UserDefaults
|
||||||
|
{
|
||||||
|
@objc var localUserID: String? {
|
||||||
|
get { return self.string(forKey: #keyPath(UserDefaults.localUserID)) }
|
||||||
|
set { self.set(newValue, forKey: #keyPath(UserDefaults.localUserID)) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AnisetteDataManager
|
||||||
|
{
|
||||||
|
static let shared = AnisetteDataManager()
|
||||||
|
|
||||||
|
private let dateFormatter = ISO8601DateFormatter()
|
||||||
|
|
||||||
|
private init()
|
||||||
|
{
|
||||||
|
dlopen("/System/Library/PrivateFrameworks/AuthKit.framework/AuthKit", RTLD_NOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestAnisetteData() throws -> ALTAnisetteData
|
||||||
|
{
|
||||||
|
var request = URLRequest(url: URL(string: "https://developerservices2.apple.com/services/QH65B2/listTeams.action?clientId=XABBG36SBA")!)
|
||||||
|
request.httpMethod = "POST"
|
||||||
|
|
||||||
|
let akAppleIDSession = unsafeBitCast(NSClassFromString("AKAppleIDSession")!, to: AKAppleIDSession.Type.self)
|
||||||
|
let akDevice = unsafeBitCast(NSClassFromString("AKDevice")!, to: AKDevice.Type.self)
|
||||||
|
|
||||||
|
let session = akAppleIDSession.init(identifier: "com.apple.gs.xcode.auth")
|
||||||
|
let headers = session.appleIDHeaders(for: request)
|
||||||
|
|
||||||
|
let device = akDevice.current
|
||||||
|
let date = self.dateFormatter.date(from: headers["X-Apple-I-Client-Time"] ?? "") ?? Date()
|
||||||
|
|
||||||
|
var localUserID = UserDefaults.standard.localUserID
|
||||||
|
if localUserID == nil
|
||||||
|
{
|
||||||
|
localUserID = UUID().uuidString
|
||||||
|
UserDefaults.standard.localUserID = localUserID
|
||||||
|
}
|
||||||
|
|
||||||
|
let anisetteData = ALTAnisetteData(machineID: headers["X-Apple-I-MD-M"] ?? "",
|
||||||
|
oneTimePassword: headers["X-Apple-I-MD"] ?? "",
|
||||||
|
localUserID: headers["X-Apple-I-MD-LU"] ?? localUserID ?? "",
|
||||||
|
routingInfo: UInt64(headers["X-Apple-I-MD-RINFO"] ?? "") ?? 0,
|
||||||
|
deviceUniqueIdentifier: device.uniqueDeviceIdentifier,
|
||||||
|
deviceSerialNumber: device.serialNumber,
|
||||||
|
deviceDescription: "<MacBookPro15,1> <Mac OS X;10.15.2;19C57> <com.apple.AuthKit/1 (com.apple.dt.Xcode/3594.4.19)>",
|
||||||
|
date: date,
|
||||||
|
locale: .current,
|
||||||
|
timeZone: .current)
|
||||||
|
return anisetteData
|
||||||
|
}
|
||||||
|
}
|
||||||
126
AltDaemon/AppManager.swift
Normal file
126
AltDaemon/AppManager.swift
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
//
|
||||||
|
// AppManager.swift
|
||||||
|
// AltDaemon
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
import AltSign
|
||||||
|
|
||||||
|
private extension URL
|
||||||
|
{
|
||||||
|
static let profilesDirectoryURL = URL(fileURLWithPath: "/var/MobileDevice/ProvisioningProfiles", isDirectory: true)
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AppManager
|
||||||
|
{
|
||||||
|
static let shared = AppManager()
|
||||||
|
|
||||||
|
private let appQueue = DispatchQueue(label: "com.rileytestut.AltDaemon.appQueue", qos: .userInitiated)
|
||||||
|
private let profilesQueue = OperationQueue()
|
||||||
|
|
||||||
|
private let fileCoordinator = NSFileCoordinator()
|
||||||
|
|
||||||
|
private init()
|
||||||
|
{
|
||||||
|
self.profilesQueue.name = "com.rileytestut.AltDaemon.profilesQueue"
|
||||||
|
self.profilesQueue.qualityOfService = .userInitiated
|
||||||
|
}
|
||||||
|
|
||||||
|
func installApp(at fileURL: URL, bundleIdentifier: String, activeProfiles: Set<String>?, completionHandler: @escaping (Result<Void, Error>) -> Void)
|
||||||
|
{
|
||||||
|
self.appQueue.async {
|
||||||
|
let lsApplicationWorkspace = unsafeBitCast(NSClassFromString("LSApplicationWorkspace")!, to: LSApplicationWorkspace.Type.self)
|
||||||
|
|
||||||
|
let options = ["CFBundleIdentifier": bundleIdentifier, "AllowInstallLocalProvisioned": NSNumber(value: true)] as [String : Any]
|
||||||
|
let result = Result { try lsApplicationWorkspace.default.installApplication(fileURL, withOptions: options) }
|
||||||
|
|
||||||
|
completionHandler(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeApp(forBundleIdentifier bundleIdentifier: String, completionHandler: @escaping (Result<Void, Error>) -> Void)
|
||||||
|
{
|
||||||
|
self.appQueue.async {
|
||||||
|
let lsApplicationWorkspace = unsafeBitCast(NSClassFromString("LSApplicationWorkspace")!, to: LSApplicationWorkspace.Type.self)
|
||||||
|
lsApplicationWorkspace.default.uninstallApplication(bundleIdentifier, withOptions: nil)
|
||||||
|
|
||||||
|
completionHandler(.success(()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func install(_ profiles: Set<ALTProvisioningProfile>, activeProfiles: Set<String>?, completionHandler: @escaping (Result<Void, Error>) -> Void)
|
||||||
|
{
|
||||||
|
let intent = NSFileAccessIntent.writingIntent(with: .profilesDirectoryURL, options: [])
|
||||||
|
self.fileCoordinator.coordinate(with: [intent], queue: self.profilesQueue) { (error) in
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if let error = error
|
||||||
|
{
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
let installingBundleIDs = Set(profiles.map(\.bundleIdentifier))
|
||||||
|
|
||||||
|
let profileURLs = try FileManager.default.contentsOfDirectory(at: intent.url, includingPropertiesForKeys: nil, options: [])
|
||||||
|
|
||||||
|
// Remove all inactive profiles (if active profiles are provided), and the previous profiles.
|
||||||
|
for fileURL in profileURLs
|
||||||
|
{
|
||||||
|
guard let profile = ALTProvisioningProfile(url: fileURL) else { continue }
|
||||||
|
|
||||||
|
if installingBundleIDs.contains(profile.bundleIdentifier) || (activeProfiles?.contains(profile.bundleIdentifier) == false && profile.isFreeProvisioningProfile)
|
||||||
|
{
|
||||||
|
try FileManager.default.removeItem(at: fileURL)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print("Ignoring:", profile.bundleIdentifier, profile.uuid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for profile in profiles
|
||||||
|
{
|
||||||
|
let destinationURL = URL.profilesDirectoryURL.appendingPathComponent(profile.uuid.uuidString.lowercased())
|
||||||
|
try profile.data.write(to: destinationURL, options: .atomic)
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(.success(()))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeProvisioningProfiles(forBundleIdentifiers bundleIdentifiers: Set<String>, completionHandler: @escaping (Result<Void, Error>) -> Void)
|
||||||
|
{
|
||||||
|
let intent = NSFileAccessIntent.writingIntent(with: .profilesDirectoryURL, options: [])
|
||||||
|
self.fileCoordinator.coordinate(with: [intent], queue: self.profilesQueue) { (error) in
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let profileURLs = try FileManager.default.contentsOfDirectory(at: intent.url, includingPropertiesForKeys: nil, options: [])
|
||||||
|
|
||||||
|
for fileURL in profileURLs
|
||||||
|
{
|
||||||
|
guard let profile = ALTProvisioningProfile(url: fileURL) else { continue }
|
||||||
|
|
||||||
|
if bundleIdentifiers.contains(profile.bundleIdentifier)
|
||||||
|
{
|
||||||
|
try FileManager.default.removeItem(at: fileURL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(.success(()))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
110
AltDaemon/LocalConnectionHandler.swift
Normal file
110
AltDaemon/LocalConnectionHandler.swift
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
//
|
||||||
|
// LocalConnectionHandler.swift
|
||||||
|
// AltDaemon
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/2/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import Network
|
||||||
|
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
private let ReceivedLocalServerConnectionRequest: @convention(c) (CFNotificationCenter?, UnsafeMutableRawPointer?, CFNotificationName?, UnsafeRawPointer?, CFDictionary?) -> Void =
|
||||||
|
{ (center, observer, name, object, userInfo) in
|
||||||
|
guard let name = name, let observer = observer else { return }
|
||||||
|
|
||||||
|
let connection = unsafeBitCast(observer, to: LocalConnectionHandler.self)
|
||||||
|
connection.handle(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocalConnectionHandler: ConnectionHandler
|
||||||
|
{
|
||||||
|
var connectionHandler: ((Connection) -> Void)?
|
||||||
|
var disconnectionHandler: ((Connection) -> Void)?
|
||||||
|
|
||||||
|
private let dispatchQueue = DispatchQueue(label: "io.altstore.LocalConnectionListener", qos: .utility)
|
||||||
|
|
||||||
|
deinit
|
||||||
|
{
|
||||||
|
self.stopListening()
|
||||||
|
}
|
||||||
|
|
||||||
|
func startListening()
|
||||||
|
{
|
||||||
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
|
let observer = Unmanaged.passUnretained(self).toOpaque()
|
||||||
|
|
||||||
|
CFNotificationCenterAddObserver(notificationCenter, observer, ReceivedLocalServerConnectionRequest, CFNotificationName.localServerConnectionAvailableRequest.rawValue, nil, .deliverImmediately)
|
||||||
|
CFNotificationCenterAddObserver(notificationCenter, observer, ReceivedLocalServerConnectionRequest, CFNotificationName.localServerConnectionStartRequest.rawValue, nil, .deliverImmediately)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stopListening()
|
||||||
|
{
|
||||||
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
|
let observer = Unmanaged.passUnretained(self).toOpaque()
|
||||||
|
|
||||||
|
CFNotificationCenterRemoveObserver(notificationCenter, observer, .localServerConnectionAvailableRequest, nil)
|
||||||
|
CFNotificationCenterRemoveObserver(notificationCenter, observer, .localServerConnectionStartRequest, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
fileprivate func handle(_ notification: CFNotificationName)
|
||||||
|
{
|
||||||
|
switch notification
|
||||||
|
{
|
||||||
|
case .localServerConnectionAvailableRequest:
|
||||||
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
|
CFNotificationCenterPostNotification(notificationCenter, .localServerConnectionAvailableResponse, nil, nil, true)
|
||||||
|
|
||||||
|
case .localServerConnectionStartRequest:
|
||||||
|
let connection = NWConnection(host: "localhost", port: NWEndpoint.Port(rawValue: ALTDeviceListeningSocket)!, using: .tcp)
|
||||||
|
self.start(connection)
|
||||||
|
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension LocalConnectionHandler
|
||||||
|
{
|
||||||
|
func start(_ nwConnection: NWConnection)
|
||||||
|
{
|
||||||
|
print("Starting connection to:", nwConnection)
|
||||||
|
|
||||||
|
// Use same instance for all callbacks.
|
||||||
|
let connection = NetworkConnection(nwConnection)
|
||||||
|
|
||||||
|
nwConnection.stateUpdateHandler = { [weak self] (state) in
|
||||||
|
switch state
|
||||||
|
{
|
||||||
|
case .setup, .preparing: break
|
||||||
|
|
||||||
|
case .ready:
|
||||||
|
print("Connected to client:", nwConnection.endpoint)
|
||||||
|
self?.connectionHandler?(connection)
|
||||||
|
|
||||||
|
case .waiting:
|
||||||
|
print("Waiting for connection...")
|
||||||
|
|
||||||
|
case .failed(let error):
|
||||||
|
print("Failed to connect to service \(nwConnection.endpoint).", error)
|
||||||
|
self?.disconnect(connection)
|
||||||
|
|
||||||
|
case .cancelled:
|
||||||
|
self?.disconnect(connection)
|
||||||
|
|
||||||
|
@unknown default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nwConnection.start(queue: self.dispatchQueue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func disconnect(_ connection: Connection)
|
||||||
|
{
|
||||||
|
connection.disconnect()
|
||||||
|
|
||||||
|
self.disconnectionHandler?(connection)
|
||||||
|
}
|
||||||
|
}
|
||||||
124
AltDaemon/RequestHandler.swift
Normal file
124
AltDaemon/RequestHandler.swift
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
//
|
||||||
|
// ConnectionManager.swift
|
||||||
|
// AltServer
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
typealias ConnectionManager = AltKit.ConnectionManager<RequestHandler>
|
||||||
|
|
||||||
|
private let connectionManager = ConnectionManager(requestHandler: RequestHandler(),
|
||||||
|
connectionHandlers: [LocalConnectionHandler()])
|
||||||
|
|
||||||
|
extension ConnectionManager
|
||||||
|
{
|
||||||
|
static var shared: ConnectionManager {
|
||||||
|
return connectionManager
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct RequestHandler: AltKit.RequestHandler
|
||||||
|
{
|
||||||
|
func handleAnisetteDataRequest(_ request: AnisetteDataRequest, for connection: Connection, completionHandler: @escaping (Result<AnisetteDataResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let anisetteData = try AnisetteDataManager.shared.requestAnisetteData()
|
||||||
|
|
||||||
|
let response = AnisetteDataResponse(anisetteData: anisetteData)
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handlePrepareAppRequest(_ request: PrepareAppRequest, for connection: Connection, completionHandler: @escaping (Result<InstallationProgressResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
guard let fileURL = request.fileURL else { return completionHandler(.failure(ALTServerError(.invalidRequest))) }
|
||||||
|
|
||||||
|
print("Awaiting begin installation request...")
|
||||||
|
|
||||||
|
connection.receiveRequest() { (result) in
|
||||||
|
print("Received begin installation request with result:", result)
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
guard case .beginInstallation(let request) = try result.get() else { throw ALTServerError(.unknownRequest) }
|
||||||
|
guard let bundleIdentifier = request.bundleIdentifier else { throw ALTServerError(.invalidRequest) }
|
||||||
|
|
||||||
|
AppManager.shared.installApp(at: fileURL, bundleIdentifier: bundleIdentifier, activeProfiles: request.activeProfiles) { (result) in
|
||||||
|
let result = result.map { InstallationProgressResponse(progress: 1.0) }
|
||||||
|
print("Installed app with result:", result)
|
||||||
|
|
||||||
|
completionHandler(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleInstallProvisioningProfilesRequest(_ request: InstallProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<InstallProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
AppManager.shared.install(request.provisioningProfiles, activeProfiles: request.activeProfiles) { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error):
|
||||||
|
print("Failed to install profiles \(request.provisioningProfiles.map { $0.bundleIdentifier }):", error)
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
|
||||||
|
case .success:
|
||||||
|
print("Installed profiles:", request.provisioningProfiles.map { $0.bundleIdentifier })
|
||||||
|
|
||||||
|
let response = InstallProvisioningProfilesResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleRemoveProvisioningProfilesRequest(_ request: RemoveProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<RemoveProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
AppManager.shared.removeProvisioningProfiles(forBundleIdentifiers: request.bundleIdentifiers) { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error):
|
||||||
|
print("Failed to remove profiles \(request.bundleIdentifiers):", error)
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
|
||||||
|
case .success:
|
||||||
|
print("Removed profiles:", request.bundleIdentifiers)
|
||||||
|
|
||||||
|
let response = RemoveProvisioningProfilesResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleRemoveAppRequest(_ request: RemoveAppRequest, for connection: Connection, completionHandler: @escaping (Result<RemoveAppResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
AppManager.shared.removeApp(forBundleIdentifier: request.bundleIdentifier) { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error):
|
||||||
|
print("Failed to remove app \(request.bundleIdentifier):", error)
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
|
||||||
|
case .success:
|
||||||
|
print("Removed app:", request.bundleIdentifier)
|
||||||
|
|
||||||
|
let response = RemoveAppResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
14
AltDaemon/main.swift
Normal file
14
AltDaemon/main.swift
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
//
|
||||||
|
// main.swift
|
||||||
|
// AltDaemon
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/2/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
autoreleasepool {
|
||||||
|
ConnectionManager.shared.start()
|
||||||
|
RunLoop.current.run()
|
||||||
|
}
|
||||||
10
AltDaemon/package/DEBIAN/control
Normal file
10
AltDaemon/package/DEBIAN/control
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Package: com.rileytestut.altdaemon
|
||||||
|
Name: AltDaemon
|
||||||
|
Depends:
|
||||||
|
Version: 0.1
|
||||||
|
Architecture: iphoneos-arm
|
||||||
|
Description: AltDaemon allows AltStore to install and refresh apps without a computer.
|
||||||
|
Maintainer: Riley Testut
|
||||||
|
Author: Riley Testut
|
||||||
|
Homepage: https://altstore.io
|
||||||
|
Section: System
|
||||||
2
AltDaemon/package/DEBIAN/postinst
Executable file
2
AltDaemon/package/DEBIAN/postinst
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
launchctl load /Library/LaunchDaemons/com.rileytestut.altdaemon.plist
|
||||||
2
AltDaemon/package/DEBIAN/preinst
Executable file
2
AltDaemon/package/DEBIAN/preinst
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
launchctl unload /Library/LaunchDaemons/com.rileytestut.altdaemon.plist >> /dev/null 2>&1
|
||||||
2
AltDaemon/package/DEBIAN/prerm
Executable file
2
AltDaemon/package/DEBIAN/prerm
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
launchctl unload /Library/LaunchDaemons/com.rileytestut.altdaemon.plist
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>com.rileytestut.altdaemon</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/usr/bin/AltDaemon</string>
|
||||||
|
</array>
|
||||||
|
<key>UserName</key>
|
||||||
|
<string>mobile</string>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
AltDaemon/package/usr/bin/AltDaemon
Executable file
BIN
AltDaemon/package/usr/bin/AltDaemon
Executable file
Binary file not shown.
@@ -8,5 +8,6 @@
|
|||||||
|
|
||||||
#import "NSError+ALTServerError.h"
|
#import "NSError+ALTServerError.h"
|
||||||
#import "CFNotificationName+AltStore.h"
|
#import "CFNotificationName+AltStore.h"
|
||||||
|
#import "ALTConnection.h"
|
||||||
|
|
||||||
extern uint16_t ALTDeviceListeningSocket;
|
extern uint16_t ALTDeviceListeningSocket;
|
||||||
|
|||||||
@@ -14,4 +14,8 @@ extern CFNotificationName const ALTWiredServerConnectionAvailableRequest NS_SWIF
|
|||||||
extern CFNotificationName const ALTWiredServerConnectionAvailableResponse NS_SWIFT_NAME(wiredServerConnectionAvailableResponse);
|
extern CFNotificationName const ALTWiredServerConnectionAvailableResponse NS_SWIFT_NAME(wiredServerConnectionAvailableResponse);
|
||||||
extern CFNotificationName const ALTWiredServerConnectionStartRequest NS_SWIFT_NAME(wiredServerConnectionStartRequest);
|
extern CFNotificationName const ALTWiredServerConnectionStartRequest NS_SWIFT_NAME(wiredServerConnectionStartRequest);
|
||||||
|
|
||||||
|
extern CFNotificationName const ALTLocalServerConnectionAvailableRequest NS_SWIFT_NAME(localServerConnectionAvailableRequest);
|
||||||
|
extern CFNotificationName const ALTLocalServerConnectionAvailableResponse NS_SWIFT_NAME(localServerConnectionAvailableResponse);
|
||||||
|
extern CFNotificationName const ALTLocalServerConnectionStartRequest NS_SWIFT_NAME(localServerConnectionStartRequest);
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
@@ -11,3 +11,7 @@
|
|||||||
CFNotificationName const ALTWiredServerConnectionAvailableRequest = CFSTR("io.altstore.Request.WiredServerConnectionAvailable");
|
CFNotificationName const ALTWiredServerConnectionAvailableRequest = CFSTR("io.altstore.Request.WiredServerConnectionAvailable");
|
||||||
CFNotificationName const ALTWiredServerConnectionAvailableResponse = CFSTR("io.altstore.Response.WiredServerConnectionAvailable");
|
CFNotificationName const ALTWiredServerConnectionAvailableResponse = CFSTR("io.altstore.Response.WiredServerConnectionAvailable");
|
||||||
CFNotificationName const ALTWiredServerConnectionStartRequest = CFSTR("io.altstore.Request.WiredServerConnectionStart");
|
CFNotificationName const ALTWiredServerConnectionStartRequest = CFSTR("io.altstore.Request.WiredServerConnectionStart");
|
||||||
|
|
||||||
|
CFNotificationName const ALTLocalServerConnectionAvailableRequest = CFSTR("io.altstore.Request.LocalServerConnectionAvailable");
|
||||||
|
CFNotificationName const ALTLocalServerConnectionAvailableResponse = CFSTR("io.altstore.Response.LocalServerConnectionAvailable");
|
||||||
|
CFNotificationName const ALTLocalServerConnectionStartRequest = CFSTR("io.altstore.Request.LocalServerConnectionStart");
|
||||||
@@ -39,13 +39,19 @@ NSErrorUserInfoKey const ALTProvisioningProfileBundleIDErrorKey = @"bundleIdenti
|
|||||||
{
|
{
|
||||||
case ALTServerErrorUnderlyingError:
|
case ALTServerErrorUnderlyingError:
|
||||||
{
|
{
|
||||||
NSString *underlyingErrorCode = self.userInfo[ALTUnderlyingErrorCodeErrorKey];
|
NSError *underlyingError = self.userInfo[NSUnderlyingErrorKey];
|
||||||
if (underlyingErrorCode == nil)
|
if (underlyingError.localizedFailureReason != nil)
|
||||||
{
|
{
|
||||||
return NSLocalizedString(@"An unknown error occured.", @"");
|
return underlyingError.localizedFailureReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *underlyingErrorCode = self.userInfo[ALTUnderlyingErrorCodeErrorKey];
|
||||||
|
if (underlyingErrorCode != nil)
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:NSLocalizedString(@"Error code: %@", @""), underlyingErrorCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [NSString stringWithFormat:NSLocalizedString(@"Error code: %@", @""), underlyingErrorCode];
|
return NSLocalizedString(@"An internal error occured.", @"");
|
||||||
}
|
}
|
||||||
|
|
||||||
case ALTServerErrorUnknown:
|
case ALTServerErrorUnknown:
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
//
|
|
||||||
// CodableServerError.swift
|
|
||||||
// AltKit
|
|
||||||
//
|
|
||||||
// Created by Riley Testut on 3/5/20.
|
|
||||||
// Copyright © 2020 Riley Testut. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
// Can only automatically conform ALTServerError.Code to Codable, not ALTServerError itself
|
|
||||||
extension ALTServerError.Code: Codable {}
|
|
||||||
|
|
||||||
struct CodableServerError: Codable
|
|
||||||
{
|
|
||||||
var error: ALTServerError {
|
|
||||||
return ALTServerError(self.errorCode, userInfo: self.userInfo ?? [:])
|
|
||||||
}
|
|
||||||
|
|
||||||
private var errorCode: ALTServerError.Code
|
|
||||||
private var userInfo: [String: String]?
|
|
||||||
|
|
||||||
private enum CodingKeys: String, CodingKey
|
|
||||||
{
|
|
||||||
case errorCode
|
|
||||||
case userInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
init(error: ALTServerError)
|
|
||||||
{
|
|
||||||
self.errorCode = error.code
|
|
||||||
|
|
||||||
var userInfo = error.userInfo.compactMapValues { $0 as? String }
|
|
||||||
|
|
||||||
if let localizedRecoverySuggestion = (error as NSError).localizedRecoverySuggestion
|
|
||||||
{
|
|
||||||
userInfo[NSLocalizedRecoverySuggestionErrorKey] = localizedRecoverySuggestion
|
|
||||||
}
|
|
||||||
|
|
||||||
if !userInfo.isEmpty
|
|
||||||
{
|
|
||||||
self.userInfo = userInfo
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init(from decoder: Decoder) throws
|
|
||||||
{
|
|
||||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
||||||
|
|
||||||
let errorCode = try container.decode(Int.self, forKey: .errorCode)
|
|
||||||
self.errorCode = ALTServerError.Code(rawValue: errorCode) ?? .unknown
|
|
||||||
|
|
||||||
let userInfo = try container.decodeIfPresent([String: String].self, forKey: .userInfo)
|
|
||||||
self.userInfo = userInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
func encode(to encoder: Encoder) throws
|
|
||||||
{
|
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
||||||
try container.encode(self.error.code.rawValue, forKey: .errorCode)
|
|
||||||
try container.encodeIfPresent(self.userInfo, forKey: .userInfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
23
AltKit/Connections/ALTConnection.h
Normal file
23
AltKit/Connections/ALTConnection.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// ALTConnection.h
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
NS_SWIFT_NAME(Connection)
|
||||||
|
@protocol ALTConnection <NSObject>
|
||||||
|
|
||||||
|
- (void)sendData:(NSData *)data completionHandler:(void (^)(BOOL, NSError * _Nullable))completionHandler NS_REFINED_FOR_SWIFT;
|
||||||
|
- (void)receiveDataWithExpectedSize:(NSInteger)expectedSize completionHandler:(void (^)(NSData * _Nullable, NSError * _Nullable))completionHandler NS_SWIFT_NAME(__receiveData(expectedSize:completionHandler:));
|
||||||
|
|
||||||
|
- (void)disconnect;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
113
AltKit/Connections/Connection.swift
Normal file
113
AltKit/Connections/Connection.swift
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
//
|
||||||
|
// Connection.swift
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import Network
|
||||||
|
|
||||||
|
public extension Connection
|
||||||
|
{
|
||||||
|
func send(_ data: Data, completionHandler: @escaping (Result<Void, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
self.__send(data) { (success, error) in
|
||||||
|
let result = Result(success, error).mapError { (error) -> ALTServerError in
|
||||||
|
guard let nwError = error as? NWError else { return ALTServerError(error) }
|
||||||
|
return ALTServerError(.lostConnection, underlyingError: nwError)
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func receiveData(expectedSize: Int, completionHandler: @escaping (Result<Data, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
self.__receiveData(expectedSize: expectedSize) { (data, error) in
|
||||||
|
let result = Result(data, error).mapError { (error) -> ALTServerError in
|
||||||
|
guard let nwError = error as? NWError else { return ALTServerError(error) }
|
||||||
|
return ALTServerError(.lostConnection, underlyingError: nwError)
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func send<T: Encodable>(_ response: T, shouldDisconnect: Bool = false, completionHandler: @escaping (Result<Void, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
func finish(_ result: Result<Void, ALTServerError>)
|
||||||
|
{
|
||||||
|
completionHandler(result)
|
||||||
|
|
||||||
|
if shouldDisconnect
|
||||||
|
{
|
||||||
|
// Add short delay to prevent us from dropping connection too quickly.
|
||||||
|
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
||||||
|
self.disconnect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let data = try JSONEncoder().encode(response)
|
||||||
|
let responseSize = withUnsafeBytes(of: Int32(data.count)) { Data($0) }
|
||||||
|
|
||||||
|
self.send(responseSize) { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(.failure(error))
|
||||||
|
case .success:
|
||||||
|
self.send(data) { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(.failure(error))
|
||||||
|
case .success: finish(.success(()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
finish(.failure(.init(.invalidResponse, underlyingError: error)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func receiveRequest(completionHandler: @escaping (Result<ServerRequest, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
let size = MemoryLayout<Int32>.size
|
||||||
|
|
||||||
|
print("Receiving request size from connection:", self)
|
||||||
|
self.receiveData(expectedSize: size) { (result) in
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let data = try result.get()
|
||||||
|
|
||||||
|
let expectedSize = Int(data.withUnsafeBytes { $0.load(as: Int32.self) })
|
||||||
|
print("Receiving request from connection: \(self)... (\(expectedSize) bytes)")
|
||||||
|
|
||||||
|
self.receiveData(expectedSize: expectedSize) { (result) in
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let data = try result.get()
|
||||||
|
let request = try JSONDecoder().decode(ServerRequest.self, from: data)
|
||||||
|
|
||||||
|
print("Received request:", request)
|
||||||
|
completionHandler(.success(request))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
160
AltKit/Connections/ConnectionManager.swift
Normal file
160
AltKit/Connections/ConnectionManager.swift
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
//
|
||||||
|
// ConnectionManager.swift
|
||||||
|
// AltServer
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 5/23/19.
|
||||||
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import Network
|
||||||
|
|
||||||
|
public protocol RequestHandler
|
||||||
|
{
|
||||||
|
func handleAnisetteDataRequest(_ request: AnisetteDataRequest, for connection: Connection, completionHandler: @escaping (Result<AnisetteDataResponse, Error>) -> Void)
|
||||||
|
func handlePrepareAppRequest(_ request: PrepareAppRequest, for connection: Connection, completionHandler: @escaping (Result<InstallationProgressResponse, Error>) -> Void)
|
||||||
|
|
||||||
|
func handleInstallProvisioningProfilesRequest(_ request: InstallProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<InstallProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
func handleRemoveProvisioningProfilesRequest(_ request: RemoveProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<RemoveProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
|
||||||
|
func handleRemoveAppRequest(_ request: RemoveAppRequest, for connection: Connection, completionHandler: @escaping (Result<RemoveAppResponse, Error>) -> Void)
|
||||||
|
}
|
||||||
|
|
||||||
|
public protocol ConnectionHandler: AnyObject
|
||||||
|
{
|
||||||
|
var connectionHandler: ((Connection) -> Void)? { get set }
|
||||||
|
var disconnectionHandler: ((Connection) -> Void)? { get set }
|
||||||
|
|
||||||
|
func startListening()
|
||||||
|
func stopListening()
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ConnectionManager<RequestHandlerType: RequestHandler>
|
||||||
|
{
|
||||||
|
public let requestHandler: RequestHandlerType
|
||||||
|
public let connectionHandlers: [ConnectionHandler]
|
||||||
|
|
||||||
|
public var isStarted = false
|
||||||
|
|
||||||
|
private var connections = [Connection]()
|
||||||
|
|
||||||
|
public init(requestHandler: RequestHandlerType, connectionHandlers: [ConnectionHandler])
|
||||||
|
{
|
||||||
|
self.requestHandler = requestHandler
|
||||||
|
self.connectionHandlers = connectionHandlers
|
||||||
|
|
||||||
|
for handler in connectionHandlers
|
||||||
|
{
|
||||||
|
handler.connectionHandler = { [weak self] (connection) in
|
||||||
|
self?.prepare(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
handler.disconnectionHandler = { [weak self] (connection) in
|
||||||
|
self?.disconnect(connection)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func start()
|
||||||
|
{
|
||||||
|
guard !self.isStarted else { return }
|
||||||
|
|
||||||
|
for connectionHandler in self.connectionHandlers
|
||||||
|
{
|
||||||
|
connectionHandler.startListening()
|
||||||
|
}
|
||||||
|
|
||||||
|
self.isStarted = true
|
||||||
|
}
|
||||||
|
|
||||||
|
public func stop()
|
||||||
|
{
|
||||||
|
guard self.isStarted else { return }
|
||||||
|
|
||||||
|
for connectionHandler in self.connectionHandlers
|
||||||
|
{
|
||||||
|
connectionHandler.stopListening()
|
||||||
|
}
|
||||||
|
|
||||||
|
self.isStarted = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension ConnectionManager
|
||||||
|
{
|
||||||
|
func prepare(_ connection: Connection)
|
||||||
|
{
|
||||||
|
guard !self.connections.contains(where: { $0 === connection }) else { return }
|
||||||
|
self.connections.append(connection)
|
||||||
|
|
||||||
|
self.handleRequest(for: connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func disconnect(_ connection: Connection)
|
||||||
|
{
|
||||||
|
guard let index = self.connections.firstIndex(where: { $0 === connection }) else { return }
|
||||||
|
self.connections.remove(at: index)
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleRequest(for connection: Connection)
|
||||||
|
{
|
||||||
|
func finish<T: ServerMessageProtocol>(_ result: Result<T, Error>)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
let response = try result.get()
|
||||||
|
connection.send(response, shouldDisconnect: true) { (result) in
|
||||||
|
print("Sent response \(response) with result:", result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
let response = ErrorResponse(error: ALTServerError(error))
|
||||||
|
connection.send(response, shouldDisconnect: true) { (result) in
|
||||||
|
print("Sent error response \(response) with result:", result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.receiveRequest() { (result) in
|
||||||
|
print("Received request with result:", result)
|
||||||
|
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(Result<ErrorResponse, Error>.failure(error))
|
||||||
|
|
||||||
|
case .success(.anisetteData(let request)):
|
||||||
|
self.requestHandler.handleAnisetteDataRequest(request, for: connection) { (result) in
|
||||||
|
finish(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success(.prepareApp(let request)):
|
||||||
|
self.requestHandler.handlePrepareAppRequest(request, for: connection) { (result) in
|
||||||
|
finish(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success(.beginInstallation): break
|
||||||
|
|
||||||
|
case .success(.installProvisioningProfiles(let request)):
|
||||||
|
self.requestHandler.handleInstallProvisioningProfilesRequest(request, for: connection) { (result) in
|
||||||
|
finish(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success(.removeProvisioningProfiles(let request)):
|
||||||
|
self.requestHandler.handleRemoveProvisioningProfilesRequest(request, for: connection) { (result) in
|
||||||
|
finish(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success(.removeApp(let request)):
|
||||||
|
self.requestHandler.handleRemoveAppRequest(request, for: connection) { (result) in
|
||||||
|
finish(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success(.unknown):
|
||||||
|
finish(Result<ErrorResponse, Error>.failure(ALTServerError(.unknownRequest)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
AltKit/Connections/NetworkConnection.swift
Normal file
54
AltKit/Connections/NetworkConnection.swift
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// NetworkConnection.swift
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import Network
|
||||||
|
|
||||||
|
public class NetworkConnection: NSObject, Connection
|
||||||
|
{
|
||||||
|
public let nwConnection: NWConnection
|
||||||
|
|
||||||
|
public init(_ nwConnection: NWConnection)
|
||||||
|
{
|
||||||
|
self.nwConnection = nwConnection
|
||||||
|
}
|
||||||
|
|
||||||
|
public func __send(_ data: Data, completionHandler: @escaping (Bool, Error?) -> Void)
|
||||||
|
{
|
||||||
|
self.nwConnection.send(content: data, completion: .contentProcessed { (error) in
|
||||||
|
completionHandler(error == nil, error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
public func __receiveData(expectedSize: Int, completionHandler: @escaping (Data?, Error?) -> Void)
|
||||||
|
{
|
||||||
|
self.nwConnection.receive(minimumIncompleteLength: expectedSize, maximumLength: expectedSize) { (data, context, isComplete, error) in
|
||||||
|
guard data != nil || error != nil else {
|
||||||
|
return completionHandler(nil, ALTServerError(.lostConnection))
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(data, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func disconnect()
|
||||||
|
{
|
||||||
|
switch self.nwConnection.state
|
||||||
|
{
|
||||||
|
case .cancelled, .failed: break
|
||||||
|
default: self.nwConnection.cancel()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension NetworkConnection
|
||||||
|
{
|
||||||
|
override public var description: String {
|
||||||
|
return "\(self.nwConnection.endpoint) (Network)"
|
||||||
|
}
|
||||||
|
}
|
||||||
36
AltKit/Extensions/ALTServerError+Conveniences.swift
Normal file
36
AltKit/Extensions/ALTServerError+Conveniences.swift
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// ALTServerError+Conveniences.swift
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/4/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public extension ALTServerError
|
||||||
|
{
|
||||||
|
init<E: Error>(_ error: E)
|
||||||
|
{
|
||||||
|
switch error
|
||||||
|
{
|
||||||
|
case let error as ALTServerError: self = error
|
||||||
|
case is DecodingError: self = ALTServerError(.invalidRequest, underlyingError: error)
|
||||||
|
case is EncodingError: self = ALTServerError(.invalidResponse, underlyingError: error)
|
||||||
|
case let error as NSError:
|
||||||
|
var userInfo = error.userInfo
|
||||||
|
if !userInfo.keys.contains(NSUnderlyingErrorKey)
|
||||||
|
{
|
||||||
|
// Assign underlying error (if there isn't already one).
|
||||||
|
userInfo[NSUnderlyingErrorKey] = error
|
||||||
|
}
|
||||||
|
|
||||||
|
self = ALTServerError(.underlyingError, userInfo: userInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init<E: Error>(_ code: ALTServerError.Code, underlyingError: E)
|
||||||
|
{
|
||||||
|
self = ALTServerError(code, userInfo: [NSUnderlyingErrorKey: underlyingError])
|
||||||
|
}
|
||||||
|
}
|
||||||
126
AltKit/Server Protocol/CodableServerError.swift
Normal file
126
AltKit/Server Protocol/CodableServerError.swift
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
//
|
||||||
|
// CodableServerError.swift
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 3/5/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
// Can only automatically conform ALTServerError.Code to Codable, not ALTServerError itself
|
||||||
|
extension ALTServerError.Code: Codable {}
|
||||||
|
|
||||||
|
extension CodableServerError
|
||||||
|
{
|
||||||
|
enum UserInfoValue: Codable
|
||||||
|
{
|
||||||
|
case string(String)
|
||||||
|
case error(NSError)
|
||||||
|
|
||||||
|
public init(from decoder: Decoder) throws
|
||||||
|
{
|
||||||
|
let container = try decoder.singleValueContainer()
|
||||||
|
|
||||||
|
if
|
||||||
|
let data = try? container.decode(Data.self),
|
||||||
|
let error = try? NSKeyedUnarchiver.unarchivedObject(ofClass: NSError.self, from: data)
|
||||||
|
{
|
||||||
|
self = .error(error)
|
||||||
|
}
|
||||||
|
else if let string = try? container.decode(String.self)
|
||||||
|
{
|
||||||
|
self = .string(string)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw DecodingError.dataCorruptedError(in: container, debugDescription: "UserInfoValue value cannot be decoded")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func encode(to encoder: Encoder) throws
|
||||||
|
{
|
||||||
|
var container = encoder.singleValueContainer()
|
||||||
|
|
||||||
|
switch self
|
||||||
|
{
|
||||||
|
case .string(let string): try container.encode(string)
|
||||||
|
case .error(let error):
|
||||||
|
guard let data = try? NSKeyedArchiver.archivedData(withRootObject: error, requiringSecureCoding: true) else {
|
||||||
|
let context = EncodingError.Context(codingPath: container.codingPath, debugDescription: "UserInfoValue value \(self) cannot be encoded")
|
||||||
|
throw EncodingError.invalidValue(self, context)
|
||||||
|
}
|
||||||
|
|
||||||
|
try container.encode(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct CodableServerError: Codable
|
||||||
|
{
|
||||||
|
var error: ALTServerError {
|
||||||
|
return ALTServerError(self.errorCode, userInfo: self.userInfo ?? [:])
|
||||||
|
}
|
||||||
|
|
||||||
|
private var errorCode: ALTServerError.Code
|
||||||
|
private var userInfo: [String: Any]?
|
||||||
|
|
||||||
|
private enum CodingKeys: String, CodingKey
|
||||||
|
{
|
||||||
|
case errorCode
|
||||||
|
case userInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
init(error: ALTServerError)
|
||||||
|
{
|
||||||
|
self.errorCode = error.code
|
||||||
|
|
||||||
|
var userInfo = error.userInfo
|
||||||
|
if let localizedRecoverySuggestion = (error as NSError).localizedRecoverySuggestion
|
||||||
|
{
|
||||||
|
userInfo[NSLocalizedRecoverySuggestionErrorKey] = localizedRecoverySuggestion
|
||||||
|
}
|
||||||
|
|
||||||
|
if !userInfo.isEmpty
|
||||||
|
{
|
||||||
|
self.userInfo = userInfo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init(from decoder: Decoder) throws
|
||||||
|
{
|
||||||
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
|
||||||
|
let errorCode = try container.decode(Int.self, forKey: .errorCode)
|
||||||
|
self.errorCode = ALTServerError.Code(rawValue: errorCode) ?? .unknown
|
||||||
|
|
||||||
|
let rawUserInfo = try container.decodeIfPresent([String: UserInfoValue].self, forKey: .userInfo)
|
||||||
|
|
||||||
|
let userInfo = rawUserInfo?.mapValues { (value) -> Any in
|
||||||
|
switch value
|
||||||
|
{
|
||||||
|
case .string(let string): return string
|
||||||
|
case .error(let error): return error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.userInfo = userInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func encode(to encoder: Encoder) throws
|
||||||
|
{
|
||||||
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
try container.encode(self.error.code.rawValue, forKey: .errorCode)
|
||||||
|
|
||||||
|
let rawUserInfo = self.userInfo?.compactMapValues { (value) -> UserInfoValue? in
|
||||||
|
switch value
|
||||||
|
{
|
||||||
|
case let string as String: return .string(string)
|
||||||
|
case let error as NSError: return .error(error)
|
||||||
|
default: return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try container.encodeIfPresent(rawUserInfo, forKey: .userInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -267,24 +267,30 @@ public struct PrepareAppRequest: ServerMessageProtocol
|
|||||||
public var udid: String
|
public var udid: String
|
||||||
public var contentSize: Int
|
public var contentSize: Int
|
||||||
|
|
||||||
public init(udid: String, contentSize: Int)
|
public var fileURL: URL?
|
||||||
|
|
||||||
|
public init(udid: String, contentSize: Int, fileURL: URL? = nil)
|
||||||
{
|
{
|
||||||
self.udid = udid
|
self.udid = udid
|
||||||
self.contentSize = contentSize
|
self.contentSize = contentSize
|
||||||
|
self.fileURL = fileURL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct BeginInstallationRequest: ServerMessageProtocol
|
public struct BeginInstallationRequest: ServerMessageProtocol
|
||||||
{
|
{
|
||||||
public var version = 2
|
public var version = 3
|
||||||
public var identifier = "BeginInstallationRequest"
|
public var identifier = "BeginInstallationRequest"
|
||||||
|
|
||||||
// If activeProfiles is non-nil, then AltServer should remove all profiles except active ones.
|
// If activeProfiles is non-nil, then AltServer should remove all profiles except active ones.
|
||||||
public var activeProfiles: Set<String>?
|
public var activeProfiles: Set<String>?
|
||||||
|
|
||||||
public init(activeProfiles: Set<String>?)
|
public var bundleIdentifier: String?
|
||||||
|
|
||||||
|
public init(activeProfiles: Set<String>?, bundleIdentifier: String?)
|
||||||
{
|
{
|
||||||
self.activeProfiles = activeProfiles
|
self.activeProfiles = activeProfiles
|
||||||
|
self.bundleIdentifier = bundleIdentifier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
|
|
||||||
@interface ALTWiredConnection ()
|
@interface ALTWiredConnection ()
|
||||||
|
|
||||||
|
@property (nonatomic, readwrite, getter=isConnected) BOOL connected;
|
||||||
|
|
||||||
@property (nonatomic, readonly) idevice_connection_t connection;
|
@property (nonatomic, readonly) idevice_connection_t connection;
|
||||||
|
|
||||||
- (instancetype)initWithDevice:(ALTDevice *)device connection:(idevice_connection_t)connection;
|
- (instancetype)initWithDevice:(ALTDevice *)device connection:(idevice_connection_t)connection;
|
||||||
|
|||||||
@@ -8,10 +8,14 @@
|
|||||||
|
|
||||||
#import <AltSign/AltSign.h>
|
#import <AltSign/AltSign.h>
|
||||||
|
|
||||||
|
#import "AltKit.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
NS_SWIFT_NAME(WiredConnection)
|
NS_SWIFT_NAME(WiredConnection)
|
||||||
@interface ALTWiredConnection : NSObject
|
@interface ALTWiredConnection : NSObject <ALTConnection>
|
||||||
|
|
||||||
|
@property (nonatomic, readonly, getter=isConnected) BOOL connected;
|
||||||
|
|
||||||
@property (nonatomic, copy, readonly) ALTDevice *device;
|
@property (nonatomic, copy, readonly) ALTDevice *device;
|
||||||
|
|
||||||
|
|||||||
@@ -30,8 +30,15 @@
|
|||||||
|
|
||||||
- (void)disconnect
|
- (void)disconnect
|
||||||
{
|
{
|
||||||
|
if (![self isConnected])
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
idevice_disconnect(self.connection);
|
idevice_disconnect(self.connection);
|
||||||
_connection = nil;
|
_connection = nil;
|
||||||
|
|
||||||
|
self.connected = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)sendData:(NSData *)data completionHandler:(void (^)(BOOL, NSError * _Nullable))completionHandler
|
- (void)sendData:(NSData *)data completionHandler:(void (^)(BOOL, NSError * _Nullable))completionHandler
|
||||||
@@ -98,4 +105,11 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - NSObject -
|
||||||
|
|
||||||
|
- (NSString *)description
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:@"%@ (Wired)", self.device.name];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -1,231 +0,0 @@
|
|||||||
//
|
|
||||||
// ClientConnection.swift
|
|
||||||
// AltServer
|
|
||||||
//
|
|
||||||
// Created by Riley Testut on 1/9/20.
|
|
||||||
// Copyright © 2020 Riley Testut. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import Network
|
|
||||||
|
|
||||||
import AltKit
|
|
||||||
import AltSign
|
|
||||||
|
|
||||||
extension ClientConnection
|
|
||||||
{
|
|
||||||
enum Connection
|
|
||||||
{
|
|
||||||
case wireless(NWConnection)
|
|
||||||
case wired(WiredConnection)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ClientConnection
|
|
||||||
{
|
|
||||||
let connection: Connection
|
|
||||||
|
|
||||||
init(connection: Connection)
|
|
||||||
{
|
|
||||||
self.connection = connection
|
|
||||||
}
|
|
||||||
|
|
||||||
func disconnect()
|
|
||||||
{
|
|
||||||
switch self.connection
|
|
||||||
{
|
|
||||||
case .wireless(let connection):
|
|
||||||
switch connection.state
|
|
||||||
{
|
|
||||||
case .cancelled, .failed:
|
|
||||||
print("Disconnecting from \(connection.endpoint)...")
|
|
||||||
|
|
||||||
default:
|
|
||||||
// State update handler might call this method again.
|
|
||||||
connection.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
case .wired(let connection):
|
|
||||||
connection.disconnect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func send<T: Encodable>(_ response: T, shouldDisconnect: Bool = false, completionHandler: @escaping (Result<Void, ALTServerError>) -> Void)
|
|
||||||
{
|
|
||||||
func finish(_ result: Result<Void, ALTServerError>)
|
|
||||||
{
|
|
||||||
completionHandler(result)
|
|
||||||
|
|
||||||
if shouldDisconnect
|
|
||||||
{
|
|
||||||
// Add short delay to prevent us from dropping connection too quickly.
|
|
||||||
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
|
||||||
self.disconnect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
let data = try JSONEncoder().encode(response)
|
|
||||||
let responseSize = withUnsafeBytes(of: Int32(data.count)) { Data($0) }
|
|
||||||
|
|
||||||
self.send(responseSize) { (result) in
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure: finish(.failure(.init(.lostConnection)))
|
|
||||||
case .success:
|
|
||||||
|
|
||||||
self.send(data) { (result) in
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure: finish(.failure(.init(.lostConnection)))
|
|
||||||
case .success: finish(.success(()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
finish(.failure(.init(.invalidResponse)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func receiveRequest(completionHandler: @escaping (Result<ServerRequest, ALTServerError>) -> Void)
|
|
||||||
{
|
|
||||||
let size = MemoryLayout<Int32>.size
|
|
||||||
|
|
||||||
print("Receiving request size")
|
|
||||||
self.receiveData(expectedBytes: size) { (result) in
|
|
||||||
do
|
|
||||||
{
|
|
||||||
let data = try result.get()
|
|
||||||
|
|
||||||
print("Receiving request...")
|
|
||||||
let expectedBytes = Int(data.withUnsafeBytes { $0.load(as: Int32.self) })
|
|
||||||
self.receiveData(expectedBytes: expectedBytes) { (result) in
|
|
||||||
do
|
|
||||||
{
|
|
||||||
let data = try result.get()
|
|
||||||
let request = try JSONDecoder().decode(ServerRequest.self, from: data)
|
|
||||||
|
|
||||||
print("Received installation request:", request)
|
|
||||||
completionHandler(.success(request))
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
completionHandler(.failure(ALTServerError(error)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
completionHandler(.failure(ALTServerError(error)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func send(_ data: Data, completionHandler: @escaping (Result<Void, Error>) -> Void)
|
|
||||||
{
|
|
||||||
switch self.connection
|
|
||||||
{
|
|
||||||
case .wireless(let connection):
|
|
||||||
connection.send(content: data, completion: .contentProcessed { (error) in
|
|
||||||
if let error = error
|
|
||||||
{
|
|
||||||
completionHandler(.failure(error))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
completionHandler(.success(()))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
case .wired(let connection):
|
|
||||||
connection.send(data) { (success, error) in
|
|
||||||
if !success
|
|
||||||
{
|
|
||||||
completionHandler(.failure(ALTServerError(.lostConnection)))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
completionHandler(.success(()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func receiveData(expectedBytes: Int, completionHandler: @escaping (Result<Data, Error>) -> Void)
|
|
||||||
{
|
|
||||||
func finish(data: Data?, error: Error?)
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
let data = try self.process(data: data, error: error)
|
|
||||||
completionHandler(.success(data))
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
completionHandler(.failure(ALTServerError(error)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch self.connection
|
|
||||||
{
|
|
||||||
case .wireless(let connection):
|
|
||||||
connection.receive(minimumIncompleteLength: expectedBytes, maximumLength: expectedBytes) { (data, _, _, error) in
|
|
||||||
finish(data: data, error: error)
|
|
||||||
}
|
|
||||||
|
|
||||||
case .wired(let connection):
|
|
||||||
connection.receiveData(withExpectedSize: expectedBytes) { (data, error) in
|
|
||||||
finish(data: data, error: error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension ClientConnection: CustomStringConvertible
|
|
||||||
{
|
|
||||||
var description: String {
|
|
||||||
switch self.connection
|
|
||||||
{
|
|
||||||
case .wireless(let connection): return "\(connection.endpoint) (Wireless)"
|
|
||||||
case .wired(let connection): return "\(connection.device.name) (Wired)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private extension ClientConnection
|
|
||||||
{
|
|
||||||
func process(data: Data?, error: Error?) throws -> Data
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
guard let data = data else { throw error ?? ALTServerError(.unknown) }
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
catch let error as NWError
|
|
||||||
{
|
|
||||||
print("Error receiving data from connection \(connection)", error)
|
|
||||||
|
|
||||||
throw ALTServerError(.lostConnection)
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch let error as ALTServerError
|
|
||||||
{
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
preconditionFailure("A non-ALTServerError should never be thrown from this method.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,535 +0,0 @@
|
|||||||
//
|
|
||||||
// ConnectionManager.swift
|
|
||||||
// AltServer
|
|
||||||
//
|
|
||||||
// Created by Riley Testut on 5/23/19.
|
|
||||||
// Copyright © 2019 Riley Testut. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import Network
|
|
||||||
import AppKit
|
|
||||||
|
|
||||||
import AltKit
|
|
||||||
|
|
||||||
extension ALTServerError
|
|
||||||
{
|
|
||||||
init<E: Error>(_ error: E)
|
|
||||||
{
|
|
||||||
switch error
|
|
||||||
{
|
|
||||||
case let error as ALTServerError: self = error
|
|
||||||
case is DecodingError: self = ALTServerError(.invalidRequest)
|
|
||||||
case is EncodingError: self = ALTServerError(.invalidResponse)
|
|
||||||
case let error as NSError:
|
|
||||||
self = ALTServerError(.unknown, userInfo: error.userInfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension ConnectionManager
|
|
||||||
{
|
|
||||||
enum State
|
|
||||||
{
|
|
||||||
case notRunning
|
|
||||||
case connecting
|
|
||||||
case running(NWListener.Service)
|
|
||||||
case failed(Swift.Error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ConnectionManager
|
|
||||||
{
|
|
||||||
static let shared = ConnectionManager()
|
|
||||||
|
|
||||||
var stateUpdateHandler: ((State) -> Void)?
|
|
||||||
|
|
||||||
private(set) var state: State = .notRunning {
|
|
||||||
didSet {
|
|
||||||
self.stateUpdateHandler?(self.state)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private lazy var listener = self.makeListener()
|
|
||||||
private let dispatchQueue = DispatchQueue(label: "com.rileytestut.AltServer.connections", qos: .utility)
|
|
||||||
|
|
||||||
private var connections = [ClientConnection]()
|
|
||||||
private var notificationConnections = [ALTDevice: NotificationConnection]()
|
|
||||||
|
|
||||||
private init()
|
|
||||||
{
|
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(ConnectionManager.deviceDidConnect(_:)), name: .deviceManagerDeviceDidConnect, object: nil)
|
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(ConnectionManager.deviceDidDisconnect(_:)), name: .deviceManagerDeviceDidDisconnect, object: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func start()
|
|
||||||
{
|
|
||||||
switch self.state
|
|
||||||
{
|
|
||||||
case .notRunning, .failed: self.listener.start(queue: self.dispatchQueue)
|
|
||||||
default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func stop()
|
|
||||||
{
|
|
||||||
switch self.state
|
|
||||||
{
|
|
||||||
case .running: self.listener.cancel()
|
|
||||||
default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func disconnect(_ connection: ClientConnection)
|
|
||||||
{
|
|
||||||
connection.disconnect()
|
|
||||||
|
|
||||||
if let index = self.connections.firstIndex(where: { $0 === connection })
|
|
||||||
{
|
|
||||||
self.connections.remove(at: index)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private extension ConnectionManager
|
|
||||||
{
|
|
||||||
func makeListener() -> NWListener
|
|
||||||
{
|
|
||||||
let listener = try! NWListener(using: .tcp)
|
|
||||||
|
|
||||||
let service: NWListener.Service
|
|
||||||
|
|
||||||
if let serverID = UserDefaults.standard.serverID?.data(using: .utf8)
|
|
||||||
{
|
|
||||||
let txtDictionary = ["serverID": serverID]
|
|
||||||
let txtData = NetService.data(fromTXTRecord: txtDictionary)
|
|
||||||
|
|
||||||
service = NWListener.Service(name: nil, type: ALTServerServiceType, domain: nil, txtRecord: txtData)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
service = NWListener.Service(type: ALTServerServiceType)
|
|
||||||
}
|
|
||||||
|
|
||||||
listener.service = service
|
|
||||||
|
|
||||||
listener.serviceRegistrationUpdateHandler = { (serviceChange) in
|
|
||||||
switch serviceChange
|
|
||||||
{
|
|
||||||
case .add(.service(let name, let type, let domain, _)):
|
|
||||||
let service = NWListener.Service(name: name, type: type, domain: domain, txtRecord: nil)
|
|
||||||
self.state = .running(service)
|
|
||||||
|
|
||||||
default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
listener.stateUpdateHandler = { (state) in
|
|
||||||
switch state
|
|
||||||
{
|
|
||||||
case .ready: break
|
|
||||||
case .waiting, .setup: self.state = .connecting
|
|
||||||
case .cancelled: self.state = .notRunning
|
|
||||||
case .failed(let error):
|
|
||||||
self.state = .failed(error)
|
|
||||||
self.start()
|
|
||||||
|
|
||||||
@unknown default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
listener.newConnectionHandler = { [weak self] (connection) in
|
|
||||||
self?.prepare(connection)
|
|
||||||
}
|
|
||||||
|
|
||||||
return listener
|
|
||||||
}
|
|
||||||
|
|
||||||
func prepare(_ connection: NWConnection)
|
|
||||||
{
|
|
||||||
let clientConnection = ClientConnection(connection: .wireless(connection))
|
|
||||||
|
|
||||||
guard !self.connections.contains(where: { $0 === clientConnection }) else { return }
|
|
||||||
self.connections.append(clientConnection)
|
|
||||||
|
|
||||||
connection.stateUpdateHandler = { [weak self] (state) in
|
|
||||||
switch state
|
|
||||||
{
|
|
||||||
case .setup, .preparing: break
|
|
||||||
|
|
||||||
case .ready:
|
|
||||||
print("Connected to client:", connection.endpoint)
|
|
||||||
self?.handleRequest(for: clientConnection)
|
|
||||||
|
|
||||||
case .waiting:
|
|
||||||
print("Waiting for connection...")
|
|
||||||
|
|
||||||
case .failed(let error):
|
|
||||||
print("Failed to connect to service \(connection.endpoint).", error)
|
|
||||||
self?.disconnect(clientConnection)
|
|
||||||
|
|
||||||
case .cancelled:
|
|
||||||
self?.disconnect(clientConnection)
|
|
||||||
|
|
||||||
@unknown default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
connection.start(queue: self.dispatchQueue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private extension ConnectionManager
|
|
||||||
{
|
|
||||||
func startNotificationConnection(to device: ALTDevice)
|
|
||||||
{
|
|
||||||
ALTDeviceManager.shared.startNotificationConnection(to: device) { (connection, error) in
|
|
||||||
guard let connection = connection else { return }
|
|
||||||
|
|
||||||
let notifications: [CFNotificationName] = [.wiredServerConnectionAvailableRequest, .wiredServerConnectionStartRequest]
|
|
||||||
connection.startListening(forNotifications: notifications.map { String($0.rawValue) }) { (success, error) in
|
|
||||||
guard success else { return }
|
|
||||||
|
|
||||||
connection.receivedNotificationHandler = { [weak self, weak connection] (notification) in
|
|
||||||
guard let self = self, let connection = connection else { return }
|
|
||||||
self.handle(notification, for: connection)
|
|
||||||
}
|
|
||||||
|
|
||||||
self.notificationConnections[device] = connection
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func stopNotificationConnection(to device: ALTDevice)
|
|
||||||
{
|
|
||||||
guard let connection = self.notificationConnections[device] else { return }
|
|
||||||
connection.disconnect()
|
|
||||||
|
|
||||||
self.notificationConnections[device] = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func handle(_ notification: CFNotificationName, for connection: NotificationConnection)
|
|
||||||
{
|
|
||||||
switch notification
|
|
||||||
{
|
|
||||||
case .wiredServerConnectionAvailableRequest:
|
|
||||||
connection.sendNotification(.wiredServerConnectionAvailableResponse) { (success, error) in
|
|
||||||
if let error = error, !success
|
|
||||||
{
|
|
||||||
print("Error sending wired server connection response.", error)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print("Sent wired server connection available response!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
case .wiredServerConnectionStartRequest:
|
|
||||||
ALTDeviceManager.shared.startWiredConnection(to: connection.device) { (wiredConnection, error) in
|
|
||||||
if let wiredConnection = wiredConnection
|
|
||||||
{
|
|
||||||
print("Started wired server connection!")
|
|
||||||
|
|
||||||
let clientConnection = ClientConnection(connection: .wired(wiredConnection))
|
|
||||||
self.handleRequest(for: clientConnection)
|
|
||||||
}
|
|
||||||
else if let error = error
|
|
||||||
{
|
|
||||||
print("Error starting wired server connection.", error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
default: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private extension ConnectionManager
|
|
||||||
{
|
|
||||||
func handleRequest(for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
connection.receiveRequest() { (result) in
|
|
||||||
print("Received initial request with result:", result)
|
|
||||||
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error):
|
|
||||||
let response = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent error response with result:", result)
|
|
||||||
}
|
|
||||||
|
|
||||||
case .success(.anisetteData(let request)):
|
|
||||||
self.handleAnisetteDataRequest(request, for: connection)
|
|
||||||
|
|
||||||
case .success(.prepareApp(let request)):
|
|
||||||
self.handlePrepareAppRequest(request, for: connection)
|
|
||||||
|
|
||||||
case .success(.beginInstallation): break
|
|
||||||
|
|
||||||
case .success(.installProvisioningProfiles(let request)):
|
|
||||||
self.handleInstallProvisioningProfilesRequest(request, for: connection)
|
|
||||||
|
|
||||||
case .success(.removeProvisioningProfiles(let request)):
|
|
||||||
self.handleRemoveProvisioningProfilesRequest(request, for: connection)
|
|
||||||
|
|
||||||
case .success(.removeApp(let request)):
|
|
||||||
self.handleRemoveAppRequest(request, for: connection)
|
|
||||||
|
|
||||||
case .success(.unknown):
|
|
||||||
let response = ErrorResponse(error: ALTServerError(.unknownRequest))
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent unknown request response with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleAnisetteDataRequest(_ request: AnisetteDataRequest, for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
AnisetteDataManager.shared.requestAnisetteData { (result) in
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error):
|
|
||||||
let errorResponse = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(errorResponse, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent anisette data error response with result:", result)
|
|
||||||
}
|
|
||||||
|
|
||||||
case .success(let anisetteData):
|
|
||||||
let response = AnisetteDataResponse(anisetteData: anisetteData)
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent anisette data response with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handlePrepareAppRequest(_ request: PrepareAppRequest, for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
var temporaryURL: URL?
|
|
||||||
|
|
||||||
func finish(_ result: Result<Void, ALTServerError>)
|
|
||||||
{
|
|
||||||
if let temporaryURL = temporaryURL
|
|
||||||
{
|
|
||||||
do { try FileManager.default.removeItem(at: temporaryURL) }
|
|
||||||
catch { print("Failed to remove .ipa.", error) }
|
|
||||||
}
|
|
||||||
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error):
|
|
||||||
print("Failed to process request from \(connection).", error)
|
|
||||||
|
|
||||||
let response = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent install app error response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
|
|
||||||
case .success:
|
|
||||||
print("Processed request from \(connection).")
|
|
||||||
|
|
||||||
let response = InstallationProgressResponse(progress: 1.0)
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent install app response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.receiveApp(for: request, from: connection) { (result) in
|
|
||||||
print("Received app with result:", result)
|
|
||||||
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error): finish(.failure(error))
|
|
||||||
case .success(let fileURL):
|
|
||||||
temporaryURL = fileURL
|
|
||||||
|
|
||||||
print("Awaiting begin installation request...")
|
|
||||||
|
|
||||||
connection.receiveRequest() { (result) in
|
|
||||||
print("Received begin installation request with result:", result)
|
|
||||||
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error): finish(.failure(error))
|
|
||||||
case .success(.beginInstallation(let installRequest)):
|
|
||||||
print("Installing to device \(request.udid)...")
|
|
||||||
|
|
||||||
self.installApp(at: fileURL, toDeviceWithUDID: request.udid, activeProvisioningProfiles: installRequest.activeProfiles, connection: connection) { (result) in
|
|
||||||
print("Installed to device with result:", result)
|
|
||||||
switch result
|
|
||||||
{
|
|
||||||
case .failure(let error): finish(.failure(error))
|
|
||||||
case .success: finish(.success(()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
case .success:
|
|
||||||
let response = ErrorResponse(error: ALTServerError(.unknownRequest))
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent unknown request error response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func receiveApp(for request: PrepareAppRequest, from connection: ClientConnection, completionHandler: @escaping (Result<URL, ALTServerError>) -> Void)
|
|
||||||
{
|
|
||||||
connection.receiveData(expectedBytes: request.contentSize) { (result) in
|
|
||||||
do
|
|
||||||
{
|
|
||||||
print("Received app data!")
|
|
||||||
|
|
||||||
let data = try result.get()
|
|
||||||
|
|
||||||
guard ALTDeviceManager.shared.availableDevices.contains(where: { $0.identifier == request.udid }) else { throw ALTServerError(.deviceNotFound) }
|
|
||||||
|
|
||||||
print("Writing app data...")
|
|
||||||
|
|
||||||
let temporaryURL = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString + ".ipa")
|
|
||||||
try data.write(to: temporaryURL, options: .atomic)
|
|
||||||
|
|
||||||
print("Wrote app to URL:", temporaryURL)
|
|
||||||
|
|
||||||
completionHandler(.success(temporaryURL))
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
print("Error processing app data:", error)
|
|
||||||
|
|
||||||
completionHandler(.failure(ALTServerError(error)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func installApp(at fileURL: URL, toDeviceWithUDID udid: String, activeProvisioningProfiles: Set<String>?, connection: ClientConnection, completionHandler: @escaping (Result<Void, ALTServerError>) -> Void)
|
|
||||||
{
|
|
||||||
let serialQueue = DispatchQueue(label: "com.altstore.ConnectionManager.installQueue", qos: .default)
|
|
||||||
var isSending = false
|
|
||||||
|
|
||||||
var observation: NSKeyValueObservation?
|
|
||||||
|
|
||||||
let progress = ALTDeviceManager.shared.installApp(at: fileURL, toDeviceWithUDID: udid, activeProvisioningProfiles: activeProvisioningProfiles) { (success, error) in
|
|
||||||
print("Installed app with result:", error == nil ? "Success" : error!.localizedDescription)
|
|
||||||
|
|
||||||
if let error = error.map({ $0 as? ALTServerError ?? ALTServerError(.unknown) })
|
|
||||||
{
|
|
||||||
completionHandler(.failure(error))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
completionHandler(.success(()))
|
|
||||||
}
|
|
||||||
|
|
||||||
observation?.invalidate()
|
|
||||||
observation = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
observation = progress.observe(\.fractionCompleted, changeHandler: { (progress, change) in
|
|
||||||
serialQueue.async {
|
|
||||||
guard !isSending else { return }
|
|
||||||
isSending = true
|
|
||||||
|
|
||||||
print("Progress:", progress.fractionCompleted)
|
|
||||||
let response = InstallationProgressResponse(progress: progress.fractionCompleted)
|
|
||||||
|
|
||||||
connection.send(response) { (result) in
|
|
||||||
serialQueue.async {
|
|
||||||
isSending = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleInstallProvisioningProfilesRequest(_ request: InstallProvisioningProfilesRequest, for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
ALTDeviceManager.shared.installProvisioningProfiles(request.provisioningProfiles, toDeviceWithUDID: request.udid, activeProvisioningProfiles: request.activeProfiles) { (success, error) in
|
|
||||||
if let error = error, !success
|
|
||||||
{
|
|
||||||
print("Failed to install profiles \(request.provisioningProfiles.map { $0.bundleIdentifier }):", error)
|
|
||||||
|
|
||||||
let errorResponse = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(errorResponse, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent install profiles error response with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print("Installed profiles:", request.provisioningProfiles.map { $0.bundleIdentifier })
|
|
||||||
|
|
||||||
let response = InstallProvisioningProfilesResponse()
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent install profiles response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleRemoveProvisioningProfilesRequest(_ request: RemoveProvisioningProfilesRequest, for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
ALTDeviceManager.shared.removeProvisioningProfiles(forBundleIdentifiers: request.bundleIdentifiers, fromDeviceWithUDID: request.udid) { (success, error) in
|
|
||||||
if let error = error, !success
|
|
||||||
{
|
|
||||||
print("Failed to remove profiles \(request.bundleIdentifiers):", error)
|
|
||||||
|
|
||||||
let errorResponse = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(errorResponse, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent remove profiles error response with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print("Removed profiles:", request.bundleIdentifiers)
|
|
||||||
|
|
||||||
let response = RemoveProvisioningProfilesResponse()
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent remove profiles success response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleRemoveAppRequest(_ request: RemoveAppRequest, for connection: ClientConnection)
|
|
||||||
{
|
|
||||||
ALTDeviceManager.shared.removeApp(forBundleIdentifier: request.bundleIdentifier, fromDeviceWithUDID: request.udid) { (success, error) in
|
|
||||||
if let error = error, !success
|
|
||||||
{
|
|
||||||
print("Failed to remove app \(request.bundleIdentifier):", error)
|
|
||||||
|
|
||||||
let errorResponse = ErrorResponse(error: ALTServerError(error))
|
|
||||||
connection.send(errorResponse, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent remove a[[ error response with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print("Removed app:", request.bundleIdentifier)
|
|
||||||
|
|
||||||
let response = RemoveAppResponse()
|
|
||||||
connection.send(response, shouldDisconnect: true) { (result) in
|
|
||||||
print("Sent remove app success response to \(connection) with result:", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private extension ConnectionManager
|
|
||||||
{
|
|
||||||
@objc func deviceDidConnect(_ notification: Notification)
|
|
||||||
{
|
|
||||||
guard let device = notification.object as? ALTDevice else { return }
|
|
||||||
self.startNotificationConnection(to: device)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc func deviceDidDisconnect(_ notification: Notification)
|
|
||||||
{
|
|
||||||
guard let device = notification.object as? ALTDevice else { return }
|
|
||||||
self.stopNotificationConnection(to: device)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
219
AltServer/Connections/RequestHandler.swift
Normal file
219
AltServer/Connections/RequestHandler.swift
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
//
|
||||||
|
// RequestHandler.swift
|
||||||
|
// AltServer
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 5/23/19.
|
||||||
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
typealias ConnectionManager = AltKit.ConnectionManager<RequestHandler>
|
||||||
|
|
||||||
|
private let connectionManager = ConnectionManager(requestHandler: RequestHandler(),
|
||||||
|
connectionHandlers: [WirelessConnectionHandler(), WiredConnectionHandler()])
|
||||||
|
|
||||||
|
extension ConnectionManager
|
||||||
|
{
|
||||||
|
static var shared: ConnectionManager {
|
||||||
|
return connectionManager
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct RequestHandler: AltKit.RequestHandler
|
||||||
|
{
|
||||||
|
func handleAnisetteDataRequest(_ request: AnisetteDataRequest, for connection: Connection, completionHandler: @escaping (Result<AnisetteDataResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
AnisetteDataManager.shared.requestAnisetteData { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): completionHandler(.failure(error))
|
||||||
|
case .success(let anisetteData):
|
||||||
|
let response = AnisetteDataResponse(anisetteData: anisetteData)
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handlePrepareAppRequest(_ request: PrepareAppRequest, for connection: Connection, completionHandler: @escaping (Result<InstallationProgressResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
var temporaryURL: URL?
|
||||||
|
|
||||||
|
func finish(_ result: Result<InstallationProgressResponse, Error>)
|
||||||
|
{
|
||||||
|
if let temporaryURL = temporaryURL
|
||||||
|
{
|
||||||
|
do { try FileManager.default.removeItem(at: temporaryURL) }
|
||||||
|
catch { print("Failed to remove .ipa.", error) }
|
||||||
|
}
|
||||||
|
|
||||||
|
completionHandler(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
self.receiveApp(for: request, from: connection) { (result) in
|
||||||
|
print("Received app with result:", result)
|
||||||
|
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(.failure(error))
|
||||||
|
case .success(let fileURL):
|
||||||
|
temporaryURL = fileURL
|
||||||
|
|
||||||
|
print("Awaiting begin installation request...")
|
||||||
|
|
||||||
|
connection.receiveRequest() { (result) in
|
||||||
|
print("Received begin installation request with result:", result)
|
||||||
|
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(.failure(error))
|
||||||
|
case .success(.beginInstallation(let installRequest)):
|
||||||
|
print("Installing app to device \(request.udid)...")
|
||||||
|
|
||||||
|
self.installApp(at: fileURL, toDeviceWithUDID: request.udid, activeProvisioningProfiles: installRequest.activeProfiles, connection: connection) { (result) in
|
||||||
|
print("Installed app to device with result:", result)
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): finish(.failure(error))
|
||||||
|
case .success:
|
||||||
|
let response = InstallationProgressResponse(progress: 1.0)
|
||||||
|
finish(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case .success: finish(.failure(ALTServerError(.unknownRequest)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleInstallProvisioningProfilesRequest(_ request: InstallProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<InstallProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
ALTDeviceManager.shared.installProvisioningProfiles(request.provisioningProfiles, toDeviceWithUDID: request.udid, activeProvisioningProfiles: request.activeProfiles) { (success, error) in
|
||||||
|
if let error = error, !success
|
||||||
|
{
|
||||||
|
print("Failed to install profiles \(request.provisioningProfiles.map { $0.bundleIdentifier }):", error)
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print("Installed profiles:", request.provisioningProfiles.map { $0.bundleIdentifier })
|
||||||
|
|
||||||
|
let response = InstallProvisioningProfilesResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleRemoveProvisioningProfilesRequest(_ request: RemoveProvisioningProfilesRequest, for connection: Connection,
|
||||||
|
completionHandler: @escaping (Result<RemoveProvisioningProfilesResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
ALTDeviceManager.shared.removeProvisioningProfiles(forBundleIdentifiers: request.bundleIdentifiers, fromDeviceWithUDID: request.udid) { (success, error) in
|
||||||
|
if let error = error, !success
|
||||||
|
{
|
||||||
|
print("Failed to remove profiles \(request.bundleIdentifiers):", error)
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print("Removed profiles:", request.bundleIdentifiers)
|
||||||
|
|
||||||
|
let response = RemoveProvisioningProfilesResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleRemoveAppRequest(_ request: RemoveAppRequest, for connection: Connection, completionHandler: @escaping (Result<RemoveAppResponse, Error>) -> Void)
|
||||||
|
{
|
||||||
|
ALTDeviceManager.shared.removeApp(forBundleIdentifier: request.bundleIdentifier, fromDeviceWithUDID: request.udid) { (success, error) in
|
||||||
|
if let error = error, !success
|
||||||
|
{
|
||||||
|
print("Failed to remove app \(request.bundleIdentifier):", error)
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print("Removed app:", request.bundleIdentifier)
|
||||||
|
|
||||||
|
let response = RemoveAppResponse()
|
||||||
|
completionHandler(.success(response))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension RequestHandler
|
||||||
|
{
|
||||||
|
func receiveApp(for request: PrepareAppRequest, from connection: Connection, completionHandler: @escaping (Result<URL, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
connection.receiveData(expectedSize: request.contentSize) { (result) in
|
||||||
|
do
|
||||||
|
{
|
||||||
|
print("Received app data!")
|
||||||
|
|
||||||
|
let data = try result.get()
|
||||||
|
|
||||||
|
guard ALTDeviceManager.shared.availableDevices.contains(where: { $0.identifier == request.udid }) else { throw ALTServerError(.deviceNotFound) }
|
||||||
|
|
||||||
|
print("Writing app data...")
|
||||||
|
|
||||||
|
let temporaryURL = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString + ".ipa")
|
||||||
|
try data.write(to: temporaryURL, options: .atomic)
|
||||||
|
|
||||||
|
print("Wrote app to URL:", temporaryURL)
|
||||||
|
|
||||||
|
completionHandler(.success(temporaryURL))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
print("Error processing app data:", error)
|
||||||
|
|
||||||
|
completionHandler(.failure(ALTServerError(error)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func installApp(at fileURL: URL, toDeviceWithUDID udid: String, activeProvisioningProfiles: Set<String>?, connection: Connection, completionHandler: @escaping (Result<Void, ALTServerError>) -> Void)
|
||||||
|
{
|
||||||
|
let serialQueue = DispatchQueue(label: "com.altstore.ConnectionManager.installQueue", qos: .default)
|
||||||
|
var isSending = false
|
||||||
|
|
||||||
|
var observation: NSKeyValueObservation?
|
||||||
|
|
||||||
|
let progress = ALTDeviceManager.shared.installApp(at: fileURL, toDeviceWithUDID: udid, activeProvisioningProfiles: activeProvisioningProfiles) { (success, error) in
|
||||||
|
print("Installed app with result:", error == nil ? "Success" : error!.localizedDescription)
|
||||||
|
|
||||||
|
if let error = error.map { ALTServerError($0) }
|
||||||
|
{
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
completionHandler(.success(()))
|
||||||
|
}
|
||||||
|
|
||||||
|
observation?.invalidate()
|
||||||
|
observation = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
observation = progress.observe(\.fractionCompleted, changeHandler: { (progress, change) in
|
||||||
|
serialQueue.async {
|
||||||
|
guard !isSending else { return }
|
||||||
|
isSending = true
|
||||||
|
|
||||||
|
print("Progress:", progress.fractionCompleted)
|
||||||
|
let response = InstallationProgressResponse(progress: progress.fractionCompleted)
|
||||||
|
|
||||||
|
connection.send(response) { (result) in
|
||||||
|
serialQueue.async {
|
||||||
|
isSending = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
116
AltServer/Connections/WiredConnectionHandler.swift
Normal file
116
AltServer/Connections/WiredConnectionHandler.swift
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
//
|
||||||
|
// WiredConnectionHandler.swift
|
||||||
|
// AltServer
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
class WiredConnectionHandler: ConnectionHandler
|
||||||
|
{
|
||||||
|
var connectionHandler: ((Connection) -> Void)?
|
||||||
|
var disconnectionHandler: ((Connection) -> Void)?
|
||||||
|
|
||||||
|
private var notificationConnections = [ALTDevice: NotificationConnection]()
|
||||||
|
|
||||||
|
func startListening()
|
||||||
|
{
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(WiredConnectionHandler.deviceDidConnect(_:)), name: .deviceManagerDeviceDidConnect, object: nil)
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(WiredConnectionHandler.deviceDidDisconnect(_:)), name: .deviceManagerDeviceDidDisconnect, object: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stopListening()
|
||||||
|
{
|
||||||
|
NotificationCenter.default.removeObserver(self, name: .deviceManagerDeviceDidConnect, object: nil)
|
||||||
|
NotificationCenter.default.removeObserver(self, name: .deviceManagerDeviceDidDisconnect, object: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension WiredConnectionHandler
|
||||||
|
{
|
||||||
|
func startNotificationConnection(to device: ALTDevice)
|
||||||
|
{
|
||||||
|
ALTDeviceManager.shared.startNotificationConnection(to: device) { (connection, error) in
|
||||||
|
guard let connection = connection else { return }
|
||||||
|
|
||||||
|
let notifications: [CFNotificationName] = [.wiredServerConnectionAvailableRequest, .wiredServerConnectionStartRequest]
|
||||||
|
connection.startListening(forNotifications: notifications.map { String($0.rawValue) }) { (success, error) in
|
||||||
|
guard success else { return }
|
||||||
|
|
||||||
|
connection.receivedNotificationHandler = { [weak self, weak connection] (notification) in
|
||||||
|
guard let self = self, let connection = connection else { return }
|
||||||
|
self.handle(notification, for: connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
self.notificationConnections[device] = connection
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func stopNotificationConnection(to device: ALTDevice)
|
||||||
|
{
|
||||||
|
guard let connection = self.notificationConnections[device] else { return }
|
||||||
|
connection.disconnect()
|
||||||
|
|
||||||
|
self.notificationConnections[device] = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func handle(_ notification: CFNotificationName, for connection: NotificationConnection)
|
||||||
|
{
|
||||||
|
switch notification
|
||||||
|
{
|
||||||
|
case .wiredServerConnectionAvailableRequest:
|
||||||
|
connection.sendNotification(.wiredServerConnectionAvailableResponse) { (success, error) in
|
||||||
|
if let error = error, !success
|
||||||
|
{
|
||||||
|
print("Error sending wired server connection response.", error)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print("Sent wired server connection available response!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case .wiredServerConnectionStartRequest:
|
||||||
|
ALTDeviceManager.shared.startWiredConnection(to: connection.device) { (wiredConnection, error) in
|
||||||
|
if let wiredConnection = wiredConnection
|
||||||
|
{
|
||||||
|
print("Started wired server connection!")
|
||||||
|
self.connectionHandler?(wiredConnection)
|
||||||
|
|
||||||
|
var observation: NSKeyValueObservation?
|
||||||
|
observation = wiredConnection.observe(\.isConnected) { [weak self] (connection, change) in
|
||||||
|
guard !connection.isConnected else { return }
|
||||||
|
self?.disconnectionHandler?(connection)
|
||||||
|
|
||||||
|
observation?.invalidate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if let error = error
|
||||||
|
{
|
||||||
|
print("Error starting wired server connection.", error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension WiredConnectionHandler
|
||||||
|
{
|
||||||
|
@objc func deviceDidConnect(_ notification: Notification)
|
||||||
|
{
|
||||||
|
guard let device = notification.object as? ALTDevice else { return }
|
||||||
|
self.startNotificationConnection(to: device)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func deviceDidDisconnect(_ notification: Notification)
|
||||||
|
{
|
||||||
|
guard let device = notification.object as? ALTDevice else { return }
|
||||||
|
self.stopNotificationConnection(to: device)
|
||||||
|
}
|
||||||
|
}
|
||||||
150
AltServer/Connections/WirelessConnectionHandler.swift
Normal file
150
AltServer/Connections/WirelessConnectionHandler.swift
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
//
|
||||||
|
// WirelessConnectionHandler.swift
|
||||||
|
// AltKit
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/1/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import Network
|
||||||
|
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
extension WirelessConnectionHandler
|
||||||
|
{
|
||||||
|
public enum State
|
||||||
|
{
|
||||||
|
case notRunning
|
||||||
|
case connecting
|
||||||
|
case running(NWListener.Service)
|
||||||
|
case failed(Swift.Error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WirelessConnectionHandler: ConnectionHandler
|
||||||
|
{
|
||||||
|
public var connectionHandler: ((Connection) -> Void)?
|
||||||
|
public var disconnectionHandler: ((Connection) -> Void)?
|
||||||
|
|
||||||
|
public var stateUpdateHandler: ((State) -> Void)?
|
||||||
|
|
||||||
|
public private(set) var state: State = .notRunning {
|
||||||
|
didSet {
|
||||||
|
self.stateUpdateHandler?(self.state)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private lazy var listener = self.makeListener()
|
||||||
|
private let dispatchQueue = DispatchQueue(label: "io.altstore.WirelessConnectionListener", qos: .utility)
|
||||||
|
|
||||||
|
public func startListening()
|
||||||
|
{
|
||||||
|
switch self.state
|
||||||
|
{
|
||||||
|
case .notRunning, .failed: self.listener.start(queue: self.dispatchQueue)
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func stopListening()
|
||||||
|
{
|
||||||
|
switch self.state
|
||||||
|
{
|
||||||
|
case .running: self.listener.cancel()
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension WirelessConnectionHandler
|
||||||
|
{
|
||||||
|
func makeListener() -> NWListener
|
||||||
|
{
|
||||||
|
let listener = try! NWListener(using: .tcp)
|
||||||
|
|
||||||
|
let service: NWListener.Service
|
||||||
|
|
||||||
|
if let serverID = UserDefaults.standard.serverID?.data(using: .utf8)
|
||||||
|
{
|
||||||
|
let txtDictionary = ["serverID": serverID]
|
||||||
|
let txtData = NetService.data(fromTXTRecord: txtDictionary)
|
||||||
|
|
||||||
|
service = NWListener.Service(name: nil, type: ALTServerServiceType, domain: nil, txtRecord: txtData)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
service = NWListener.Service(type: ALTServerServiceType)
|
||||||
|
}
|
||||||
|
|
||||||
|
listener.service = service
|
||||||
|
|
||||||
|
listener.serviceRegistrationUpdateHandler = { (serviceChange) in
|
||||||
|
switch serviceChange
|
||||||
|
{
|
||||||
|
case .add(.service(let name, let type, let domain, _)):
|
||||||
|
let service = NWListener.Service(name: name, type: type, domain: domain, txtRecord: nil)
|
||||||
|
self.state = .running(service)
|
||||||
|
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listener.stateUpdateHandler = { (state) in
|
||||||
|
switch state
|
||||||
|
{
|
||||||
|
case .ready: break
|
||||||
|
case .waiting, .setup: self.state = .connecting
|
||||||
|
case .cancelled: self.state = .notRunning
|
||||||
|
case .failed(let error): self.state = .failed(error)
|
||||||
|
@unknown default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listener.newConnectionHandler = { [weak self] (connection) in
|
||||||
|
self?.prepare(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
return listener
|
||||||
|
}
|
||||||
|
|
||||||
|
func prepare(_ nwConnection: NWConnection)
|
||||||
|
{
|
||||||
|
print("Preparing:", nwConnection)
|
||||||
|
|
||||||
|
// Use same instance for all callbacks.
|
||||||
|
let connection = NetworkConnection(nwConnection)
|
||||||
|
|
||||||
|
nwConnection.stateUpdateHandler = { [weak self] (state) in
|
||||||
|
switch state
|
||||||
|
{
|
||||||
|
case .setup, .preparing: break
|
||||||
|
|
||||||
|
case .ready:
|
||||||
|
print("Connected to client:", connection)
|
||||||
|
self?.connectionHandler?(connection)
|
||||||
|
|
||||||
|
case .waiting:
|
||||||
|
print("Waiting for connection...")
|
||||||
|
|
||||||
|
case .failed(let error):
|
||||||
|
print("Failed to connect to service \(nwConnection.endpoint).", error)
|
||||||
|
self?.disconnect(connection)
|
||||||
|
|
||||||
|
case .cancelled:
|
||||||
|
self?.disconnect(connection)
|
||||||
|
|
||||||
|
@unknown default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nwConnection.start(queue: self.dispatchQueue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func disconnect(_ connection: Connection)
|
||||||
|
{
|
||||||
|
connection.disconnect()
|
||||||
|
|
||||||
|
self.disconnectionHandler?(connection)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,8 +23,12 @@
|
|||||||
BF0F5FC723F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF0F5FC623F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel */; };
|
BF0F5FC723F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF0F5FC623F394AD0080DB64 /* AltStore3ToAltStore4.xcmappingmodel */; };
|
||||||
BF100C50232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */; };
|
BF100C50232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */; };
|
||||||
BF100C54232D7DAE006A8926 /* StoreAppPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF100C53232D7DAE006A8926 /* StoreAppPolicy.swift */; };
|
BF100C54232D7DAE006A8926 /* StoreAppPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF100C53232D7DAE006A8926 /* StoreAppPolicy.swift */; };
|
||||||
|
BF10EB34248730750055E6DB /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF10EB33248730750055E6DB /* main.swift */; };
|
||||||
BF18B0F122E25DF9005C4CF5 /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18B0F022E25DF9005C4CF5 /* ToastView.swift */; };
|
BF18B0F122E25DF9005C4CF5 /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18B0F022E25DF9005C4CF5 /* ToastView.swift */; };
|
||||||
BF1E312B229F474900370A3C /* ConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E3129229F474900370A3C /* ConnectionManager.swift */; };
|
BF18BFF32485828200DD5981 /* ConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18BFF22485828200DD5981 /* ConnectionManager.swift */; };
|
||||||
|
BF18BFF724858BDE00DD5981 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18BFF624858BDE00DD5981 /* Connection.swift */; };
|
||||||
|
BF18BFFD2485A1E400DD5981 /* WiredConnectionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18BFFC2485A1E400DD5981 /* WiredConnectionHandler.swift */; };
|
||||||
|
BF1E312B229F474900370A3C /* RequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E3129229F474900370A3C /* RequestHandler.swift */; };
|
||||||
BF1E315722A061F500370A3C /* ServerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E3128229F474900370A3C /* ServerProtocol.swift */; };
|
BF1E315722A061F500370A3C /* ServerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E3128229F474900370A3C /* ServerProtocol.swift */; };
|
||||||
BF1E315822A061F900370A3C /* Result+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBAC8852295C90300587369 /* Result+Conveniences.swift */; };
|
BF1E315822A061F900370A3C /* Result+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBAC8852295C90300587369 /* Result+Conveniences.swift */; };
|
||||||
BF1E315A22A0620000370A3C /* NSError+ALTServerError.m in Sources */ = {isa = PBXBuildFile; fileRef = BF1E314922A060F400370A3C /* NSError+ALTServerError.m */; };
|
BF1E315A22A0620000370A3C /* NSError+ALTServerError.m in Sources */ = {isa = PBXBuildFile; fileRef = BF1E314922A060F400370A3C /* NSError+ALTServerError.m */; };
|
||||||
@@ -130,7 +134,6 @@
|
|||||||
BF580482246A28F7008AE704 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF580481246A28F7008AE704 /* ViewController.swift */; };
|
BF580482246A28F7008AE704 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF580481246A28F7008AE704 /* ViewController.swift */; };
|
||||||
BF580487246A28F9008AE704 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF580486246A28F9008AE704 /* Assets.xcassets */; };
|
BF580487246A28F9008AE704 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF580486246A28F9008AE704 /* Assets.xcassets */; };
|
||||||
BF58048A246A28F9008AE704 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF580488246A28F9008AE704 /* LaunchScreen.storyboard */; };
|
BF58048A246A28F9008AE704 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF580488246A28F9008AE704 /* LaunchScreen.storyboard */; };
|
||||||
BF580492246A2C5C008AE704 /* Bundle+AltStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */; };
|
|
||||||
BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF580495246A3CB5008AE704 /* UIColor+AltBackup.swift */; };
|
BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF580495246A3CB5008AE704 /* UIColor+AltBackup.swift */; };
|
||||||
BF580498246A3D19008AE704 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF580497246A3D19008AE704 /* UIKit.framework */; };
|
BF580498246A3D19008AE704 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF580497246A3D19008AE704 /* UIKit.framework */; };
|
||||||
BF58049B246A432D008AE704 /* NSError+LocalizedFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */; };
|
BF58049B246A432D008AE704 /* NSError+LocalizedFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */; };
|
||||||
@@ -156,9 +159,13 @@
|
|||||||
BF770E6922BD57DD002A40FE /* Silence.m4a in Resources */ = {isa = PBXBuildFile; fileRef = BF770E6822BD57DD002A40FE /* Silence.m4a */; };
|
BF770E6922BD57DD002A40FE /* Silence.m4a in Resources */ = {isa = PBXBuildFile; fileRef = BF770E6822BD57DD002A40FE /* Silence.m4a */; };
|
||||||
BF7C627223DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF7C627123DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel */; };
|
BF7C627223DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF7C627123DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel */; };
|
||||||
BF7C627423DBB78C00515A2D /* InstalledAppPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7C627323DBB78C00515A2D /* InstalledAppPolicy.swift */; };
|
BF7C627423DBB78C00515A2D /* InstalledAppPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7C627323DBB78C00515A2D /* InstalledAppPolicy.swift */; };
|
||||||
|
BF8CAE452489E772004D6CCE /* AnisetteDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8CAE422489E772004D6CCE /* AnisetteDataManager.swift */; };
|
||||||
|
BF8CAE462489E772004D6CCE /* AppManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8CAE432489E772004D6CCE /* AppManager.swift */; };
|
||||||
|
BF8CAE472489E772004D6CCE /* RequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8CAE442489E772004D6CCE /* RequestHandler.swift */; };
|
||||||
|
BF8CAE4C2489F637004D6CCE /* AltDaemon.deb in Resources */ = {isa = PBXBuildFile; fileRef = BF8CAE4A2489F5A0004D6CCE /* AltDaemon.deb */; };
|
||||||
|
BF8CAE4E248AEABA004D6CCE /* UIDevice+Jailbreak.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8CAE4D248AEABA004D6CCE /* UIDevice+Jailbreak.swift */; };
|
||||||
BF8F69C222E659F700049BA1 /* AppContentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8F69C122E659F700049BA1 /* AppContentViewController.swift */; };
|
BF8F69C222E659F700049BA1 /* AppContentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8F69C122E659F700049BA1 /* AppContentViewController.swift */; };
|
||||||
BF8F69C422E662D300049BA1 /* AppViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8F69C322E662D300049BA1 /* AppViewController.swift */; };
|
BF8F69C422E662D300049BA1 /* AppViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8F69C322E662D300049BA1 /* AppViewController.swift */; };
|
||||||
BF9A03C623C7DD0D000D08DB /* ClientConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9A03C523C7DD0D000D08DB /* ClientConnection.swift */; };
|
|
||||||
BF9ABA4522DCFF43008935CF /* BrowseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4422DCFF43008935CF /* BrowseViewController.swift */; };
|
BF9ABA4522DCFF43008935CF /* BrowseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4422DCFF43008935CF /* BrowseViewController.swift */; };
|
||||||
BF9ABA4722DD0638008935CF /* BrowseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4622DD0638008935CF /* BrowseCollectionViewCell.swift */; };
|
BF9ABA4722DD0638008935CF /* BrowseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4622DD0638008935CF /* BrowseCollectionViewCell.swift */; };
|
||||||
BF9ABA4922DD0742008935CF /* ScreenshotCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4822DD0742008935CF /* ScreenshotCollectionViewCell.swift */; };
|
BF9ABA4922DD0742008935CF /* ScreenshotCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9ABA4822DD0742008935CF /* ScreenshotCollectionViewCell.swift */; };
|
||||||
@@ -262,6 +269,12 @@
|
|||||||
BFF0B696232242D3007A79E1 /* LicensesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B695232242D3007A79E1 /* LicensesViewController.swift */; };
|
BFF0B696232242D3007A79E1 /* LicensesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B695232242D3007A79E1 /* LicensesViewController.swift */; };
|
||||||
BFF0B6982322CAB8007A79E1 /* InstructionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B6972322CAB8007A79E1 /* InstructionsViewController.swift */; };
|
BFF0B6982322CAB8007A79E1 /* InstructionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B6972322CAB8007A79E1 /* InstructionsViewController.swift */; };
|
||||||
BFF0B69A2322D7D0007A79E1 /* UIScreen+CompactHeight.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B6992322D7D0007A79E1 /* UIScreen+CompactHeight.swift */; };
|
BFF0B69A2322D7D0007A79E1 /* UIScreen+CompactHeight.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF0B6992322D7D0007A79E1 /* UIScreen+CompactHeight.swift */; };
|
||||||
|
BFF767C82489A74E0097E58C /* WirelessConnectionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF767C72489A74E0097E58C /* WirelessConnectionHandler.swift */; };
|
||||||
|
BFF767CC2489AB5C0097E58C /* ALTServerError+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF767CB2489AB5C0097E58C /* ALTServerError+Conveniences.swift */; };
|
||||||
|
BFF767CE2489ABE90097E58C /* NetworkConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF767CD2489ABE90097E58C /* NetworkConnection.swift */; };
|
||||||
|
BFFCFA582488648D0077BFCE /* LocalConnectionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF10EB3124870B3F0055E6DB /* LocalConnectionHandler.swift */; };
|
||||||
|
BFFCFA5B2488649E0077BFCE /* libAltKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF1E315022A0616100370A3C /* libAltKit.a */; };
|
||||||
|
EFB988A976C401E5710498B7 /* libPods-AltDaemon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B0B5097D956380B6E11D09C /* libPods-AltDaemon.a */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@@ -330,9 +343,11 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
06959A23FD240B33CB3EF551 /* Pods-AltDaemon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltDaemon.release.xcconfig"; path = "Target Support Files/Pods-AltDaemon/Pods-AltDaemon.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
0DE618FA97EA42C3F468D186 /* libPods-AltStore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AltStore.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
0DE618FA97EA42C3F468D186 /* libPods-AltStore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AltStore.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
11611D46F8A7C8B928E8156B /* Pods-AltServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltServer.debug.xcconfig"; path = "Target Support Files/Pods-AltServer/Pods-AltServer.debug.xcconfig"; sourceTree = "<group>"; };
|
11611D46F8A7C8B928E8156B /* Pods-AltServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltServer.debug.xcconfig"; path = "Target Support Files/Pods-AltServer/Pods-AltServer.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
589BA531D903B28F292063E5 /* Pods-AltServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltServer.release.xcconfig"; path = "Target Support Files/Pods-AltServer/Pods-AltServer.release.xcconfig"; sourceTree = "<group>"; };
|
589BA531D903B28F292063E5 /* Pods-AltServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltServer.release.xcconfig"; path = "Target Support Files/Pods-AltServer/Pods-AltServer.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
5B0B5097D956380B6E11D09C /* libPods-AltDaemon.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AltDaemon.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
A136EE677716B80768E9F0A2 /* Pods-AltStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltStore.release.xcconfig"; path = "Target Support Files/Pods-AltStore/Pods-AltStore.release.xcconfig"; sourceTree = "<group>"; };
|
A136EE677716B80768E9F0A2 /* Pods-AltStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltStore.release.xcconfig"; path = "Target Support Files/Pods-AltStore/Pods-AltStore.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
BF02419322F2156E00129732 /* RefreshAttempt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshAttempt.swift; sourceTree = "<group>"; };
|
BF02419322F2156E00129732 /* RefreshAttempt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshAttempt.swift; sourceTree = "<group>"; };
|
||||||
BF02419522F2199300129732 /* RefreshAttemptsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshAttemptsViewController.swift; sourceTree = "<group>"; };
|
BF02419522F2199300129732 /* RefreshAttemptsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshAttemptsViewController.swift; sourceTree = "<group>"; };
|
||||||
@@ -345,9 +360,17 @@
|
|||||||
BF100C46232D7828006A8926 /* AltStore 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 2.xcdatamodel"; sourceTree = "<group>"; };
|
BF100C46232D7828006A8926 /* AltStore 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 2.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStoreToAltStore2.xcmappingmodel; sourceTree = "<group>"; };
|
BF100C4F232D7CD1006A8926 /* AltStoreToAltStore2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStoreToAltStore2.xcmappingmodel; sourceTree = "<group>"; };
|
||||||
BF100C53232D7DAE006A8926 /* StoreAppPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreAppPolicy.swift; sourceTree = "<group>"; };
|
BF100C53232D7DAE006A8926 /* StoreAppPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreAppPolicy.swift; sourceTree = "<group>"; };
|
||||||
|
BF10EB3124870B3F0055E6DB /* LocalConnectionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalConnectionHandler.swift; sourceTree = "<group>"; };
|
||||||
|
BF10EB33248730750055E6DB /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
|
||||||
BF18B0F022E25DF9005C4CF5 /* ToastView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastView.swift; sourceTree = "<group>"; };
|
BF18B0F022E25DF9005C4CF5 /* ToastView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastView.swift; sourceTree = "<group>"; };
|
||||||
|
BF18BFE724857D7900DD5981 /* AltDaemon */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = AltDaemon; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
BF18BFF22485828200DD5981 /* ConnectionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectionManager.swift; sourceTree = "<group>"; };
|
||||||
|
BF18BFF624858BDE00DD5981 /* Connection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Connection.swift; sourceTree = "<group>"; };
|
||||||
|
BF18BFFC2485A1E400DD5981 /* WiredConnectionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WiredConnectionHandler.swift; sourceTree = "<group>"; };
|
||||||
|
BF18BFFE2485A42800DD5981 /* ALTConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ALTConnection.h; sourceTree = "<group>"; };
|
||||||
|
BF18C0032485B4DE00DD5981 /* AltDaemon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AltDaemon-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
BF1E3128229F474900370A3C /* ServerProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServerProtocol.swift; sourceTree = "<group>"; };
|
BF1E3128229F474900370A3C /* ServerProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServerProtocol.swift; sourceTree = "<group>"; };
|
||||||
BF1E3129229F474900370A3C /* ConnectionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionManager.swift; sourceTree = "<group>"; };
|
BF1E3129229F474900370A3C /* RequestHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestHandler.swift; sourceTree = "<group>"; };
|
||||||
BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+AltStore.swift"; sourceTree = "<group>"; };
|
BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+AltStore.swift"; sourceTree = "<group>"; };
|
||||||
BF1E314722A060F300370A3C /* AltStore-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AltStore-Bridging-Header.h"; sourceTree = "<group>"; };
|
BF1E314722A060F300370A3C /* AltStore-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AltStore-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
BF1E314822A060F400370A3C /* NSError+ALTServerError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+ALTServerError.h"; sourceTree = "<group>"; };
|
BF1E314822A060F400370A3C /* NSError+ALTServerError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+ALTServerError.h"; sourceTree = "<group>"; };
|
||||||
@@ -502,9 +525,13 @@
|
|||||||
BF7C627023DBB33300515A2D /* AltStore 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 3.xcdatamodel"; sourceTree = "<group>"; };
|
BF7C627023DBB33300515A2D /* AltStore 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AltStore 3.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
BF7C627123DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStore2ToAltStore3.xcmappingmodel; sourceTree = "<group>"; };
|
BF7C627123DBB3B400515A2D /* AltStore2ToAltStore3.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = AltStore2ToAltStore3.xcmappingmodel; sourceTree = "<group>"; };
|
||||||
BF7C627323DBB78C00515A2D /* InstalledAppPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledAppPolicy.swift; sourceTree = "<group>"; };
|
BF7C627323DBB78C00515A2D /* InstalledAppPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledAppPolicy.swift; sourceTree = "<group>"; };
|
||||||
|
BF8CAE422489E772004D6CCE /* AnisetteDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnisetteDataManager.swift; sourceTree = "<group>"; };
|
||||||
|
BF8CAE432489E772004D6CCE /* AppManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppManager.swift; sourceTree = "<group>"; };
|
||||||
|
BF8CAE442489E772004D6CCE /* RequestHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestHandler.swift; sourceTree = "<group>"; };
|
||||||
|
BF8CAE4A2489F5A0004D6CCE /* AltDaemon.deb */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = AltDaemon.deb; sourceTree = "<group>"; };
|
||||||
|
BF8CAE4D248AEABA004D6CCE /* UIDevice+Jailbreak.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Jailbreak.swift"; sourceTree = "<group>"; };
|
||||||
BF8F69C122E659F700049BA1 /* AppContentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppContentViewController.swift; sourceTree = "<group>"; };
|
BF8F69C122E659F700049BA1 /* AppContentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppContentViewController.swift; sourceTree = "<group>"; };
|
||||||
BF8F69C322E662D300049BA1 /* AppViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppViewController.swift; sourceTree = "<group>"; };
|
BF8F69C322E662D300049BA1 /* AppViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppViewController.swift; sourceTree = "<group>"; };
|
||||||
BF9A03C523C7DD0D000D08DB /* ClientConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientConnection.swift; sourceTree = "<group>"; };
|
|
||||||
BF9ABA4422DCFF43008935CF /* BrowseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseViewController.swift; sourceTree = "<group>"; };
|
BF9ABA4422DCFF43008935CF /* BrowseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseViewController.swift; sourceTree = "<group>"; };
|
||||||
BF9ABA4622DD0638008935CF /* BrowseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseCollectionViewCell.swift; sourceTree = "<group>"; };
|
BF9ABA4622DD0638008935CF /* BrowseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowseCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||||
BF9ABA4822DD0742008935CF /* ScreenshotCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScreenshotCollectionViewCell.swift; sourceTree = "<group>"; };
|
BF9ABA4822DD0742008935CF /* ScreenshotCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScreenshotCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||||
@@ -617,6 +644,11 @@
|
|||||||
BFF0B695232242D3007A79E1 /* LicensesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicensesViewController.swift; sourceTree = "<group>"; };
|
BFF0B695232242D3007A79E1 /* LicensesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicensesViewController.swift; sourceTree = "<group>"; };
|
||||||
BFF0B6972322CAB8007A79E1 /* InstructionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstructionsViewController.swift; sourceTree = "<group>"; };
|
BFF0B6972322CAB8007A79E1 /* InstructionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstructionsViewController.swift; sourceTree = "<group>"; };
|
||||||
BFF0B6992322D7D0007A79E1 /* UIScreen+CompactHeight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScreen+CompactHeight.swift"; sourceTree = "<group>"; };
|
BFF0B6992322D7D0007A79E1 /* UIScreen+CompactHeight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScreen+CompactHeight.swift"; sourceTree = "<group>"; };
|
||||||
|
BFF767C72489A74E0097E58C /* WirelessConnectionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WirelessConnectionHandler.swift; sourceTree = "<group>"; };
|
||||||
|
BFF767CB2489AB5C0097E58C /* ALTServerError+Conveniences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ALTServerError+Conveniences.swift"; sourceTree = "<group>"; };
|
||||||
|
BFF767CD2489ABE90097E58C /* NetworkConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConnection.swift; sourceTree = "<group>"; };
|
||||||
|
BFFCFA45248835530077BFCE /* AltDaemon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AltDaemon.entitlements; sourceTree = "<group>"; };
|
||||||
|
DA55288EC4433117304BAF39 /* Pods-AltDaemon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltDaemon.debug.xcconfig"; path = "Target Support Files/Pods-AltDaemon/Pods-AltDaemon.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
EA79A60285C6AF5848AA16E9 /* Pods-AltStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltStore.debug.xcconfig"; path = "Target Support Files/Pods-AltStore/Pods-AltStore.debug.xcconfig"; sourceTree = "<group>"; };
|
EA79A60285C6AF5848AA16E9 /* Pods-AltStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AltStore.debug.xcconfig"; path = "Target Support Files/Pods-AltStore/Pods-AltStore.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
FC3822AB1C4CF1D4CDF7445D /* Pods_AltServer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AltServer.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
FC3822AB1C4CF1D4CDF7445D /* Pods_AltServer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AltServer.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
@@ -629,6 +661,15 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
BF18BFE424857D7900DD5981 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
BFFCFA5B2488649E0077BFCE /* libAltKit.a in Frameworks */,
|
||||||
|
EFB988A976C401E5710498B7 /* libPods-AltDaemon.a in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
BF1E314D22A0616100370A3C /* Frameworks */ = {
|
BF1E314D22A0616100370A3C /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -685,6 +726,8 @@
|
|||||||
A136EE677716B80768E9F0A2 /* Pods-AltStore.release.xcconfig */,
|
A136EE677716B80768E9F0A2 /* Pods-AltStore.release.xcconfig */,
|
||||||
11611D46F8A7C8B928E8156B /* Pods-AltServer.debug.xcconfig */,
|
11611D46F8A7C8B928E8156B /* Pods-AltServer.debug.xcconfig */,
|
||||||
589BA531D903B28F292063E5 /* Pods-AltServer.release.xcconfig */,
|
589BA531D903B28F292063E5 /* Pods-AltServer.release.xcconfig */,
|
||||||
|
DA55288EC4433117304BAF39 /* Pods-AltDaemon.debug.xcconfig */,
|
||||||
|
06959A23FD240B33CB3EF551 /* Pods-AltDaemon.release.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -735,19 +778,38 @@
|
|||||||
path = Policies;
|
path = Policies;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
BF18BFE824857D7900DD5981 /* AltDaemon */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BFFCFA45248835530077BFCE /* AltDaemon.entitlements */,
|
||||||
|
BF10EB33248730750055E6DB /* main.swift */,
|
||||||
|
BF8CAE442489E772004D6CCE /* RequestHandler.swift */,
|
||||||
|
BF10EB3124870B3F0055E6DB /* LocalConnectionHandler.swift */,
|
||||||
|
BF8CAE422489E772004D6CCE /* AnisetteDataManager.swift */,
|
||||||
|
BF8CAE432489E772004D6CCE /* AppManager.swift */,
|
||||||
|
BF18C0032485B4DE00DD5981 /* AltDaemon-Bridging-Header.h */,
|
||||||
|
);
|
||||||
|
path = AltDaemon;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
BF18BFFF2485A75F00DD5981 /* Server Protocol */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BF1E3128229F474900370A3C /* ServerProtocol.swift */,
|
||||||
|
BFD44605241188C300EAB90A /* CodableServerError.swift */,
|
||||||
|
);
|
||||||
|
path = "Server Protocol";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
BF1E315122A0616100370A3C /* AltKit */ = {
|
BF1E315122A0616100370A3C /* AltKit */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
BFD52BD222A06EFB000B7ED1 /* AltKit.h */,
|
BFD52BD222A06EFB000B7ED1 /* AltKit.h */,
|
||||||
BF718BD723C93DB700A89F2D /* AltKit.m */,
|
BF718BD723C93DB700A89F2D /* AltKit.m */,
|
||||||
BFBAC8852295C90300587369 /* Result+Conveniences.swift */,
|
BF18BFFF2485A75F00DD5981 /* Server Protocol */,
|
||||||
BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */,
|
BFF767CF2489AC240097E58C /* Connections */,
|
||||||
BF1E3128229F474900370A3C /* ServerProtocol.swift */,
|
BFF767C32489A6800097E58C /* Extensions */,
|
||||||
BFD44605241188C300EAB90A /* CodableServerError.swift */,
|
BFF767C42489A6980097E58C /* Categories */,
|
||||||
BF1E314822A060F400370A3C /* NSError+ALTServerError.h */,
|
|
||||||
BF1E314922A060F400370A3C /* NSError+ALTServerError.m */,
|
|
||||||
BF718BC723C919CC00A89F2D /* CFNotificationName+AltStore.h */,
|
|
||||||
BF718BC823C919E300A89F2D /* CFNotificationName+AltStore.m */,
|
|
||||||
);
|
);
|
||||||
path = AltKit;
|
path = AltKit;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1072,6 +1134,7 @@
|
|||||||
BF45872C2298D31600BD7491 /* libimobiledevice */,
|
BF45872C2298D31600BD7491 /* libimobiledevice */,
|
||||||
BF5C5FC6237DF5AE00EDD0C6 /* AltPlugin */,
|
BF5C5FC6237DF5AE00EDD0C6 /* AltPlugin */,
|
||||||
BF58047C246A28F7008AE704 /* AltBackup */,
|
BF58047C246A28F7008AE704 /* AltBackup */,
|
||||||
|
BF18BFE824857D7900DD5981 /* AltDaemon */,
|
||||||
BFD247852284BB3300981D42 /* Frameworks */,
|
BFD247852284BB3300981D42 /* Frameworks */,
|
||||||
BFD2476B2284B9A500981D42 /* Products */,
|
BFD2476B2284B9A500981D42 /* Products */,
|
||||||
4460E048E3AC1C9708C4FA33 /* Pods */,
|
4460E048E3AC1C9708C4FA33 /* Pods */,
|
||||||
@@ -1087,6 +1150,7 @@
|
|||||||
BF1E315022A0616100370A3C /* libAltKit.a */,
|
BF1E315022A0616100370A3C /* libAltKit.a */,
|
||||||
BF5C5FC5237DF5AE00EDD0C6 /* AltPlugin.mailbundle */,
|
BF5C5FC5237DF5AE00EDD0C6 /* AltPlugin.mailbundle */,
|
||||||
BF58047B246A28F7008AE704 /* AltBackup.app */,
|
BF58047B246A28F7008AE704 /* AltBackup.app */,
|
||||||
|
BF18BFE724857D7900DD5981 /* AltDaemon */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1138,6 +1202,7 @@
|
|||||||
BF4713A422976CFC00784A2F /* openssl.framework */,
|
BF4713A422976CFC00784A2F /* openssl.framework */,
|
||||||
FC3822AB1C4CF1D4CDF7445D /* Pods_AltServer.framework */,
|
FC3822AB1C4CF1D4CDF7445D /* Pods_AltServer.framework */,
|
||||||
0DE618FA97EA42C3F468D186 /* libPods-AltStore.a */,
|
0DE618FA97EA42C3F468D186 /* libPods-AltStore.a */,
|
||||||
|
5B0B5097D956380B6E11D09C /* libPods-AltDaemon.a */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1177,6 +1242,7 @@
|
|||||||
BFB1169C22932DB100BB457C /* apps.json */,
|
BFB1169C22932DB100BB457C /* apps.json */,
|
||||||
BFD247762284B9A700981D42 /* Assets.xcassets */,
|
BFD247762284B9A700981D42 /* Assets.xcassets */,
|
||||||
BF770E6822BD57DD002A40FE /* Silence.m4a */,
|
BF770E6822BD57DD002A40FE /* Silence.m4a */,
|
||||||
|
BF8CAE4A2489F5A0004D6CCE /* AltDaemon.deb */,
|
||||||
);
|
);
|
||||||
path = Resources;
|
path = Resources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1225,6 +1291,7 @@
|
|||||||
BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */,
|
BF6C336124197D700034FD24 /* NSError+LocalizedFailure.swift */,
|
||||||
BF663C4E2433ED8200DAA738 /* FileManager+DirectorySize.swift */,
|
BF663C4E2433ED8200DAA738 /* FileManager+DirectorySize.swift */,
|
||||||
BF6A531F246DC1B0004F59C8 /* FileManager+SharedDirectories.swift */,
|
BF6A531F246DC1B0004F59C8 /* FileManager+SharedDirectories.swift */,
|
||||||
|
BF8CAE4D248AEABA004D6CCE /* UIDevice+Jailbreak.swift */,
|
||||||
);
|
);
|
||||||
path = Extensions;
|
path = Extensions;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1232,8 +1299,9 @@
|
|||||||
BFD52BDC22A0A659000B7ED1 /* Connections */ = {
|
BFD52BDC22A0A659000B7ED1 /* Connections */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
BF1E3129229F474900370A3C /* ConnectionManager.swift */,
|
BF1E3129229F474900370A3C /* RequestHandler.swift */,
|
||||||
BF9A03C523C7DD0D000D08DB /* ClientConnection.swift */,
|
BFF767C72489A74E0097E58C /* WirelessConnectionHandler.swift */,
|
||||||
|
BF18BFFC2485A1E400DD5981 /* WiredConnectionHandler.swift */,
|
||||||
BF718BCF23C91BD300A89F2D /* ALTWiredConnection.h */,
|
BF718BCF23C91BD300A89F2D /* ALTWiredConnection.h */,
|
||||||
BF718BD223C91C7000A89F2D /* ALTWiredConnection+Private.h */,
|
BF718BD223C91C7000A89F2D /* ALTWiredConnection+Private.h */,
|
||||||
BF718BD023C91BD300A89F2D /* ALTWiredConnection.m */,
|
BF718BD023C91BD300A89F2D /* ALTWiredConnection.m */,
|
||||||
@@ -1320,6 +1388,38 @@
|
|||||||
path = Authentication;
|
path = Authentication;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
BFF767C32489A6800097E58C /* Extensions */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BFBAC8852295C90300587369 /* Result+Conveniences.swift */,
|
||||||
|
BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */,
|
||||||
|
BFF767CB2489AB5C0097E58C /* ALTServerError+Conveniences.swift */,
|
||||||
|
);
|
||||||
|
path = Extensions;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
BFF767C42489A6980097E58C /* Categories */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BF1E314822A060F400370A3C /* NSError+ALTServerError.h */,
|
||||||
|
BF1E314922A060F400370A3C /* NSError+ALTServerError.m */,
|
||||||
|
BF718BC723C919CC00A89F2D /* CFNotificationName+AltStore.h */,
|
||||||
|
BF718BC823C919E300A89F2D /* CFNotificationName+AltStore.m */,
|
||||||
|
);
|
||||||
|
path = Categories;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
BFF767CF2489AC240097E58C /* Connections */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
BF18BFF22485828200DD5981 /* ConnectionManager.swift */,
|
||||||
|
BF18BFFE2485A42800DD5981 /* ALTConnection.h */,
|
||||||
|
BF18BFF624858BDE00DD5981 /* Connection.swift */,
|
||||||
|
BFF767CD2489ABE90097E58C /* NetworkConnection.swift */,
|
||||||
|
);
|
||||||
|
path = Connections;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXHeadersBuildPhase section */
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
@@ -1371,6 +1471,24 @@
|
|||||||
/* End PBXHeadersBuildPhase section */
|
/* End PBXHeadersBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
BF18BFE624857D7900DD5981 /* AltDaemon */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = BF18BFEB24857D7900DD5981 /* Build configuration list for PBXNativeTarget "AltDaemon" */;
|
||||||
|
buildPhases = (
|
||||||
|
BF50DDF3ED17533F566F5915 /* [CP] Check Pods Manifest.lock */,
|
||||||
|
BF18BFE324857D7900DD5981 /* Sources */,
|
||||||
|
BF18BFE424857D7900DD5981 /* Frameworks */,
|
||||||
|
258892614AC96DBEA6CBA5F5 /* [CP] Copy Pods Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = AltDaemon;
|
||||||
|
productName = AltDaemon;
|
||||||
|
productReference = BF18BFE724857D7900DD5981 /* AltDaemon */;
|
||||||
|
productType = "com.apple.product-type.library.dynamic";
|
||||||
|
};
|
||||||
BF1E314F22A0616100370A3C /* AltKit */ = {
|
BF1E314F22A0616100370A3C /* AltKit */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = BF1E315422A0616100370A3C /* Build configuration list for PBXNativeTarget "AltKit" */;
|
buildConfigurationList = BF1E315422A0616100370A3C /* Build configuration list for PBXNativeTarget "AltKit" */;
|
||||||
@@ -1491,10 +1609,14 @@
|
|||||||
BFD247622284B9A500981D42 /* Project object */ = {
|
BFD247622284B9A500981D42 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 1140;
|
LastSwiftUpdateCheck = 1150;
|
||||||
LastUpgradeCheck = 1020;
|
LastUpgradeCheck = 1020;
|
||||||
ORGANIZATIONNAME = "Riley Testut";
|
ORGANIZATIONNAME = "Riley Testut";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
|
BF18BFE624857D7900DD5981 = {
|
||||||
|
CreatedOnToolsVersion = 11.5;
|
||||||
|
LastSwiftMigration = 1150;
|
||||||
|
};
|
||||||
BF1E314F22A0616100370A3C = {
|
BF1E314F22A0616100370A3C = {
|
||||||
CreatedOnToolsVersion = 10.2.1;
|
CreatedOnToolsVersion = 10.2.1;
|
||||||
};
|
};
|
||||||
@@ -1553,6 +1675,7 @@
|
|||||||
BF45872A2298D31600BD7491 /* libimobiledevice */,
|
BF45872A2298D31600BD7491 /* libimobiledevice */,
|
||||||
BF5C5FC4237DF5AE00EDD0C6 /* AltPlugin */,
|
BF5C5FC4237DF5AE00EDD0C6 /* AltPlugin */,
|
||||||
BF58047A246A28F7008AE704 /* AltBackup */,
|
BF58047A246A28F7008AE704 /* AltBackup */,
|
||||||
|
BF18BFE624857D7900DD5981 /* AltDaemon */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
@@ -1587,6 +1710,7 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
BF8CAE4C2489F637004D6CCE /* AltDaemon.deb in Resources */,
|
||||||
BFC57A702416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib in Resources */,
|
BFC57A702416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib in Resources */,
|
||||||
BFB4323F22DE852000B7F8BC /* UpdateCollectionViewCell.xib in Resources */,
|
BFB4323F22DE852000B7F8BC /* UpdateCollectionViewCell.xib in Resources */,
|
||||||
BFE60738231ADF49002B0E8E /* Settings.storyboard in Resources */,
|
BFE60738231ADF49002B0E8E /* Settings.storyboard in Resources */,
|
||||||
@@ -1607,6 +1731,23 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
258892614AC96DBEA6CBA5F5 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
8C9013C41DD92A1476195C0E /* [CP] Copy Pods Resources */ = {
|
8C9013C41DD92A1476195C0E /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -1641,6 +1782,28 @@
|
|||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
BF50DDF3ED17533F566F5915 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-AltDaemon-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
BF7FDA2C23203B6B00B5D3A4 /* Copy Launcher App */ = {
|
BF7FDA2C23203B6B00B5D3A4 /* Copy Launcher App */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -1724,15 +1887,31 @@
|
|||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
BF18BFE324857D7900DD5981 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
BF8CAE452489E772004D6CCE /* AnisetteDataManager.swift in Sources */,
|
||||||
|
BF8CAE472489E772004D6CCE /* RequestHandler.swift in Sources */,
|
||||||
|
BF10EB34248730750055E6DB /* main.swift in Sources */,
|
||||||
|
BFFCFA582488648D0077BFCE /* LocalConnectionHandler.swift in Sources */,
|
||||||
|
BF8CAE462489E772004D6CCE /* AppManager.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
BF1E314C22A0616100370A3C /* Sources */ = {
|
BF1E314C22A0616100370A3C /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
BF718BD823C93DB700A89F2D /* AltKit.m in Sources */,
|
BF718BD823C93DB700A89F2D /* AltKit.m in Sources */,
|
||||||
|
BFF767CE2489ABE90097E58C /* NetworkConnection.swift in Sources */,
|
||||||
|
BFF767CC2489AB5C0097E58C /* ALTServerError+Conveniences.swift in Sources */,
|
||||||
BF1E315A22A0620000370A3C /* NSError+ALTServerError.m in Sources */,
|
BF1E315A22A0620000370A3C /* NSError+ALTServerError.m in Sources */,
|
||||||
BF1E315822A061F900370A3C /* Result+Conveniences.swift in Sources */,
|
BF1E315822A061F900370A3C /* Result+Conveniences.swift in Sources */,
|
||||||
BF718BC923C919E300A89F2D /* CFNotificationName+AltStore.m in Sources */,
|
BF718BC923C919E300A89F2D /* CFNotificationName+AltStore.m in Sources */,
|
||||||
BFD44606241188C400EAB90A /* CodableServerError.swift in Sources */,
|
BFD44606241188C400EAB90A /* CodableServerError.swift in Sources */,
|
||||||
|
BF18BFF32485828200DD5981 /* ConnectionManager.swift in Sources */,
|
||||||
|
BF18BFF724858BDE00DD5981 /* Connection.swift in Sources */,
|
||||||
BF1E315722A061F500370A3C /* ServerProtocol.swift in Sources */,
|
BF1E315722A061F500370A3C /* ServerProtocol.swift in Sources */,
|
||||||
BF4E8456246F16D700ECCBD4 /* Bundle+AltStore.swift in Sources */,
|
BF4E8456246F16D700ECCBD4 /* Bundle+AltStore.swift in Sources */,
|
||||||
);
|
);
|
||||||
@@ -1742,10 +1921,11 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
BFF767C82489A74E0097E58C /* WirelessConnectionHandler.swift in Sources */,
|
||||||
BF3F786422CAA41E008FBD20 /* ALTDeviceManager+Installation.swift in Sources */,
|
BF3F786422CAA41E008FBD20 /* ALTDeviceManager+Installation.swift in Sources */,
|
||||||
|
BF18BFFD2485A1E400DD5981 /* WiredConnectionHandler.swift in Sources */,
|
||||||
BF718BD523C928A300A89F2D /* ALTNotificationConnection.m in Sources */,
|
BF718BD523C928A300A89F2D /* ALTNotificationConnection.m in Sources */,
|
||||||
BF1E312B229F474900370A3C /* ConnectionManager.swift in Sources */,
|
BF1E312B229F474900370A3C /* RequestHandler.swift in Sources */,
|
||||||
BF9A03C623C7DD0D000D08DB /* ClientConnection.swift in Sources */,
|
|
||||||
BF718BD123C91BD300A89F2D /* ALTWiredConnection.m in Sources */,
|
BF718BD123C91BD300A89F2D /* ALTWiredConnection.m in Sources */,
|
||||||
BF458690229872EA00BD7491 /* AppDelegate.swift in Sources */,
|
BF458690229872EA00BD7491 /* AppDelegate.swift in Sources */,
|
||||||
BF4586C52298CDB800BD7491 /* ALTDeviceManager.mm in Sources */,
|
BF4586C52298CDB800BD7491 /* ALTDeviceManager.mm in Sources */,
|
||||||
@@ -1819,7 +1999,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
BF580492246A2C5C008AE704 /* Bundle+AltStore.swift in Sources */,
|
|
||||||
BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */,
|
BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */,
|
||||||
BF580482246A28F7008AE704 /* ViewController.swift in Sources */,
|
BF580482246A28F7008AE704 /* ViewController.swift in Sources */,
|
||||||
BF44EEF0246B08BA002A52F2 /* BackupController.swift in Sources */,
|
BF44EEF0246B08BA002A52F2 /* BackupController.swift in Sources */,
|
||||||
@@ -1854,6 +2033,7 @@
|
|||||||
BF54E8212315EF0D000AE0D8 /* ALTPatreonBenefitType.m in Sources */,
|
BF54E8212315EF0D000AE0D8 /* ALTPatreonBenefitType.m in Sources */,
|
||||||
BFBBE2E122931F81002097FA /* InstalledApp.swift in Sources */,
|
BFBBE2E122931F81002097FA /* InstalledApp.swift in Sources */,
|
||||||
BFE6073A231ADF82002B0E8E /* SettingsViewController.swift in Sources */,
|
BFE6073A231ADF82002B0E8E /* SettingsViewController.swift in Sources */,
|
||||||
|
BF8CAE4E248AEABA004D6CCE /* UIDevice+Jailbreak.swift in Sources */,
|
||||||
BFE338DF22F0EADB002E24B9 /* FetchSourceOperation.swift in Sources */,
|
BFE338DF22F0EADB002E24B9 /* FetchSourceOperation.swift in Sources */,
|
||||||
BFBBE2DF22931F73002097FA /* StoreApp.swift in Sources */,
|
BFBBE2DF22931F73002097FA /* StoreApp.swift in Sources */,
|
||||||
BFB6B21E231870160022A802 /* NewsViewController.swift in Sources */,
|
BFB6B21E231870160022A802 /* NewsViewController.swift in Sources */,
|
||||||
@@ -2012,9 +2192,91 @@
|
|||||||
/* End PBXVariantGroup section */
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
|
BF18BFEC24857D7900DD5981 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = DA55288EC4433117304BAF39 /* Pods-AltDaemon.debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_MODULES_AUTOLINK = NO;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = AltDaemon/AltDaemon.entitlements;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
||||||
|
DYLIB_COMPATIBILITY_VERSION = "";
|
||||||
|
DYLIB_CURRENT_VERSION = "";
|
||||||
|
EXECUTABLE_EXTENSION = "";
|
||||||
|
EXECUTABLE_SUFFIX = "";
|
||||||
|
INSTALL_PATH = /usr/bin;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
||||||
|
LD_DYLIB_INSTALL_NAME = /usr/bin/AltDaemon;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@loader_path/Frameworks",
|
||||||
|
);
|
||||||
|
MACH_O_TYPE = mh_execute;
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-ObjC",
|
||||||
|
"-lRoxas",
|
||||||
|
"-lAltSign",
|
||||||
|
"-lc++",
|
||||||
|
"-lcrypto",
|
||||||
|
"-lssl",
|
||||||
|
);
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "AltDaemon/AltDaemon-Bridging-Header.h";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
BF18BFED24857D7900DD5981 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 06959A23FD240B33CB3EF551 /* Pods-AltDaemon.release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_MODULES_AUTOLINK = NO;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = AltDaemon/AltDaemon.entitlements;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
||||||
|
DYLIB_COMPATIBILITY_VERSION = "";
|
||||||
|
DYLIB_CURRENT_VERSION = "";
|
||||||
|
EXECUTABLE_EXTENSION = "";
|
||||||
|
EXECUTABLE_SUFFIX = "";
|
||||||
|
GCC_OPTIMIZATION_LEVEL = z;
|
||||||
|
INSTALL_PATH = /usr/bin;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
||||||
|
LD_DYLIB_INSTALL_NAME = /usr/bin/AltDaemon;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
"@loader_path/Frameworks",
|
||||||
|
);
|
||||||
|
MACH_O_TYPE = mh_execute;
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-ObjC",
|
||||||
|
"-lRoxas",
|
||||||
|
"-lAltSign",
|
||||||
|
"-lc++",
|
||||||
|
"-lcrypto",
|
||||||
|
"-lssl",
|
||||||
|
);
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "AltDaemon/AltDaemon-Bridging-Header.h";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
BF1E315522A0616100370A3C /* Debug */ = {
|
BF1E315522A0616100370A3C /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CLANG_MODULES_AUTOLINK = NO;
|
||||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
||||||
@@ -2032,6 +2294,7 @@
|
|||||||
BF1E315622A0616100370A3C /* Release */ = {
|
BF1E315622A0616100370A3C /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CLANG_MODULES_AUTOLINK = NO;
|
||||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
DEVELOPMENT_TEAM = 6XVY5G3U44;
|
||||||
@@ -2499,6 +2762,15 @@
|
|||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
BF18BFEB24857D7900DD5981 /* Build configuration list for PBXNativeTarget "AltDaemon" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
BF18BFEC24857D7900DD5981 /* Debug */,
|
||||||
|
BF18BFED24857D7900DD5981 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
BF1E315422A0616100370A3C /* Build configuration list for PBXNativeTarget "AltKit" */ = {
|
BF1E315422A0616100370A3C /* Build configuration list for PBXNativeTarget "AltKit" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
|||||||
111
AltStore.xcodeproj/xcshareddata/xcschemes/AltDaemon.xcscheme
Normal file
111
AltStore.xcodeproj/xcshareddata/xcschemes/AltDaemon.xcscheme
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1150"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "NO"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "A7A6DC28A6D60809855FE404C6A3EA29"
|
||||||
|
BuildableName = "libPods-AltDaemon.a"
|
||||||
|
BlueprintName = "Pods-AltDaemon"
|
||||||
|
ReferencedContainer = "container:Pods/Pods.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "BF1E314F22A0616100370A3C"
|
||||||
|
BuildableName = "libAltKit.a"
|
||||||
|
BlueprintName = "AltKit"
|
||||||
|
ReferencedContainer = "container:AltStore.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "BF18BFE624857D7900DD5981"
|
||||||
|
BuildableName = "AltDaemon"
|
||||||
|
BlueprintName = "AltDaemon"
|
||||||
|
ReferencedContainer = "container:AltStore.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "BF18BFE624857D7900DD5981"
|
||||||
|
BuildableName = "AltDaemon"
|
||||||
|
BlueprintName = "AltDaemon"
|
||||||
|
ReferencedContainer = "container:AltStore.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<EnvironmentVariables>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "THEOS"
|
||||||
|
value = "~/theos"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</EnvironmentVariable>
|
||||||
|
</EnvironmentVariables>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "BF18BFE624857D7900DD5981"
|
||||||
|
BuildableName = "AltDaemon"
|
||||||
|
BlueprintName = "AltDaemon"
|
||||||
|
ReferencedContainer = "container:AltStore.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@@ -8,6 +8,12 @@
|
|||||||
|
|
||||||
import Roxas
|
import Roxas
|
||||||
|
|
||||||
|
extension TimeInterval
|
||||||
|
{
|
||||||
|
static let shortToastViewDuration = 4.0
|
||||||
|
static let longToastViewDuration = 8.0
|
||||||
|
}
|
||||||
|
|
||||||
class ToastView: RSTToastView
|
class ToastView: RSTToastView
|
||||||
{
|
{
|
||||||
var preferredDuration: TimeInterval
|
var preferredDuration: TimeInterval
|
||||||
@@ -16,11 +22,11 @@ class ToastView: RSTToastView
|
|||||||
{
|
{
|
||||||
if detailedText == nil
|
if detailedText == nil
|
||||||
{
|
{
|
||||||
self.preferredDuration = 4.0
|
self.preferredDuration = .shortToastViewDuration
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self.preferredDuration = 8.0
|
self.preferredDuration = .longToastViewDuration
|
||||||
}
|
}
|
||||||
|
|
||||||
super.init(text: text, detailText: detailedText)
|
super.init(text: text, detailText: detailedText)
|
||||||
@@ -38,7 +44,22 @@ class ToastView: RSTToastView
|
|||||||
|
|
||||||
convenience init(error: Error)
|
convenience init(error: Error)
|
||||||
{
|
{
|
||||||
let error = error as NSError
|
var error = error as NSError
|
||||||
|
var underlyingError = error.userInfo[NSUnderlyingErrorKey] as? NSError
|
||||||
|
|
||||||
|
var preferredDuration: TimeInterval?
|
||||||
|
|
||||||
|
if
|
||||||
|
let unwrappedUnderlyingError = underlyingError,
|
||||||
|
error.domain == AltServerErrorDomain && error.code == ALTServerError.Code.underlyingError.rawValue
|
||||||
|
{
|
||||||
|
// Treat underlyingError as the primary error.
|
||||||
|
|
||||||
|
error = unwrappedUnderlyingError
|
||||||
|
underlyingError = nil
|
||||||
|
|
||||||
|
preferredDuration = .longToastViewDuration
|
||||||
|
}
|
||||||
|
|
||||||
let text: String
|
let text: String
|
||||||
let detailText: String?
|
let detailText: String?
|
||||||
@@ -46,20 +67,25 @@ class ToastView: RSTToastView
|
|||||||
if let failure = error.localizedFailure
|
if let failure = error.localizedFailure
|
||||||
{
|
{
|
||||||
text = failure
|
text = failure
|
||||||
detailText = error.localizedFailureReason ?? error.localizedRecoverySuggestion ?? error.localizedDescription
|
detailText = error.localizedFailureReason ?? error.localizedRecoverySuggestion ?? underlyingError?.localizedDescription ?? error.localizedDescription
|
||||||
}
|
}
|
||||||
else if let reason = error.localizedFailureReason
|
else if let reason = error.localizedFailureReason
|
||||||
{
|
{
|
||||||
text = reason
|
text = reason
|
||||||
detailText = error.localizedRecoverySuggestion
|
detailText = error.localizedRecoverySuggestion ?? underlyingError?.localizedDescription
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
text = error.localizedDescription
|
text = error.localizedDescription
|
||||||
detailText = nil
|
detailText = underlyingError?.localizedDescription
|
||||||
}
|
}
|
||||||
|
|
||||||
self.init(text: text, detailText: detailText)
|
self.init(text: text, detailText: detailText)
|
||||||
|
|
||||||
|
if let preferredDuration = preferredDuration
|
||||||
|
{
|
||||||
|
self.preferredDuration = preferredDuration
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
required init(coder aDecoder: NSCoder) {
|
required init(coder aDecoder: NSCoder) {
|
||||||
|
|||||||
30
AltStore/Extensions/UIDevice+Jailbreak.swift
Normal file
30
AltStore/Extensions/UIDevice+Jailbreak.swift
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// UIDevice+Jailbreak.swift
|
||||||
|
// AltStore
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 6/5/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
extension UIDevice
|
||||||
|
{
|
||||||
|
var isJailbroken: Bool {
|
||||||
|
if
|
||||||
|
FileManager.default.fileExists(atPath: "/Applications/Cydia.app") ||
|
||||||
|
FileManager.default.fileExists(atPath: "/Library/MobileSubstrate/MobileSubstrate.dylib") ||
|
||||||
|
FileManager.default.fileExists(atPath: "/bin/bash") ||
|
||||||
|
FileManager.default.fileExists(atPath: "/usr/sbin/sshd") ||
|
||||||
|
FileManager.default.fileExists(atPath: "/etc/apt") ||
|
||||||
|
FileManager.default.fileExists(atPath: "/private/var/lib/apt/") ||
|
||||||
|
UIApplication.shared.canOpenURL(URL(string:"cydia://")!)
|
||||||
|
{
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1225,9 +1225,9 @@ private extension AppManager
|
|||||||
switch error.code
|
switch error.code
|
||||||
{
|
{
|
||||||
case .deviceNotFound, .lostConnection:
|
case .deviceNotFound, .lostConnection:
|
||||||
if let server = group.context.server, server.isPreferred || server.isWiredConnection
|
if let server = group.context.server, server.isPreferred || server.connectionType != .wireless
|
||||||
{
|
{
|
||||||
// Preferred server (or wired connection), so report errors normally.
|
// Preferred server (or not random wireless connection), so report errors normally.
|
||||||
return error
|
return error
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -172,7 +172,14 @@ private extension DatabaseManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
let fileURL = installedApp.fileURL
|
let fileURL = installedApp.fileURL
|
||||||
if !FileManager.default.fileExists(atPath: fileURL.path) || installedApp.version != localApp.version
|
|
||||||
|
#if DEBUG
|
||||||
|
let replaceCachedApp = true
|
||||||
|
#else
|
||||||
|
let replaceCachedApp = !FileManager.default.fileExists(atPath: fileURL.path) || installedApp.version != localApp.version
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if replaceCachedApp
|
||||||
{
|
{
|
||||||
FileManager.default.prepareTemporaryURL() { (temporaryFileURL) in
|
FileManager.default.prepareTemporaryURL() { (temporaryFileURL) in
|
||||||
do
|
do
|
||||||
|
|||||||
@@ -10,14 +10,12 @@ import Foundation
|
|||||||
import AltKit
|
import AltKit
|
||||||
import Roxas
|
import Roxas
|
||||||
|
|
||||||
private extension Notification.Name
|
private let ReceivedServerConnectionResponse: @convention(c) (CFNotificationCenter?, UnsafeMutableRawPointer?, CFNotificationName?, UnsafeRawPointer?, CFDictionary?) -> Void =
|
||||||
{
|
|
||||||
static let didReceiveWiredServerConnectionResponse = Notification.Name("io.altstore.didReceiveWiredServerConnectionResponse")
|
|
||||||
}
|
|
||||||
|
|
||||||
private let ReceivedWiredServerConnectionResponse: @convention(c) (CFNotificationCenter?, UnsafeMutableRawPointer?, CFNotificationName?, UnsafeRawPointer?, CFDictionary?) -> Void =
|
|
||||||
{ (center, observer, name, object, userInfo) in
|
{ (center, observer, name, object, userInfo) in
|
||||||
NotificationCenter.default.post(name: .didReceiveWiredServerConnectionResponse, object: nil)
|
guard let name = name, let observer = observer else { return }
|
||||||
|
|
||||||
|
let operation = unsafeBitCast(observer, to: FindServerOperation.self)
|
||||||
|
operation.handle(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc(FindServerOperation)
|
@objc(FindServerOperation)
|
||||||
@@ -26,12 +24,13 @@ class FindServerOperation: ResultOperation<Server>
|
|||||||
let context: OperationContext
|
let context: OperationContext
|
||||||
|
|
||||||
private var isWiredServerConnectionAvailable = false
|
private var isWiredServerConnectionAvailable = false
|
||||||
|
private var isLocalServerConnectionAvailable = false
|
||||||
|
|
||||||
init(context: OperationContext = OperationContext())
|
init(context: OperationContext = OperationContext())
|
||||||
{
|
{
|
||||||
self.context = context
|
self.context = context
|
||||||
}
|
}
|
||||||
|
|
||||||
override func main()
|
override func main()
|
||||||
{
|
{
|
||||||
super.main()
|
super.main()
|
||||||
@@ -49,48 +48,68 @@ class FindServerOperation: ResultOperation<Server>
|
|||||||
}
|
}
|
||||||
|
|
||||||
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
|
let observer = Unmanaged.passUnretained(self).toOpaque()
|
||||||
|
|
||||||
// Prepare observers to receive callback from wired server (if connected).
|
// Prepare observers to receive callback from wired connection or background daemon (if available).
|
||||||
CFNotificationCenterAddObserver(notificationCenter, nil, ReceivedWiredServerConnectionResponse, CFNotificationName.wiredServerConnectionAvailableResponse.rawValue, nil, .deliverImmediately)
|
CFNotificationCenterAddObserver(notificationCenter, observer, ReceivedServerConnectionResponse, CFNotificationName.wiredServerConnectionAvailableResponse.rawValue, nil, .deliverImmediately)
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(FindServerOperation.didReceiveWiredServerConnectionResponse(_:)), name: .didReceiveWiredServerConnectionResponse, object: nil)
|
CFNotificationCenterAddObserver(notificationCenter, observer, ReceivedServerConnectionResponse, CFNotificationName.localServerConnectionAvailableResponse.rawValue, nil, .deliverImmediately)
|
||||||
|
|
||||||
// Post notification.
|
// Post notifications.
|
||||||
CFNotificationCenterPostNotification(notificationCenter, .wiredServerConnectionAvailableRequest, nil, nil, true)
|
CFNotificationCenterPostNotification(notificationCenter, .wiredServerConnectionAvailableRequest, nil, nil, true)
|
||||||
|
CFNotificationCenterPostNotification(notificationCenter, .localServerConnectionAvailableRequest, nil, nil, true)
|
||||||
|
|
||||||
// Wait for either callback or timeout.
|
// Wait for either callback or timeout.
|
||||||
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
||||||
if self.isWiredServerConnectionAvailable
|
if self.isLocalServerConnectionAvailable
|
||||||
{
|
{
|
||||||
let server = Server(isWiredConnection: true)
|
// Prefer background daemon, if it exists and is running.
|
||||||
|
let server = Server(connectionType: .local)
|
||||||
|
self.finish(.success(server))
|
||||||
|
}
|
||||||
|
else if self.isWiredServerConnectionAvailable
|
||||||
|
{
|
||||||
|
let server = Server(connectionType: .wired)
|
||||||
|
self.finish(.success(server))
|
||||||
|
}
|
||||||
|
else if let server = ServerManager.shared.discoveredServers.first(where: { $0.isPreferred })
|
||||||
|
{
|
||||||
|
// Preferred server.
|
||||||
|
self.finish(.success(server))
|
||||||
|
}
|
||||||
|
else if let server = ServerManager.shared.discoveredServers.first
|
||||||
|
{
|
||||||
|
// Any available server.
|
||||||
self.finish(.success(server))
|
self.finish(.success(server))
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if let server = ServerManager.shared.discoveredServers.first(where: { $0.isPreferred })
|
// No servers.
|
||||||
{
|
self.finish(.failure(ConnectionError.serverNotFound))
|
||||||
// Preferred server.
|
|
||||||
self.finish(.success(server))
|
|
||||||
}
|
|
||||||
else if let server = ServerManager.shared.discoveredServers.first
|
|
||||||
{
|
|
||||||
// Any available server.
|
|
||||||
self.finish(.success(server))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// No servers.
|
|
||||||
self.finish(.failure(ConnectionError.serverNotFound))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
override func finish(_ result: Result<Server, Error>)
|
||||||
private extension FindServerOperation
|
|
||||||
{
|
|
||||||
@objc func didReceiveWiredServerConnectionResponse(_ notification: Notification)
|
|
||||||
{
|
{
|
||||||
self.isWiredServerConnectionAvailable = true
|
super.finish(result)
|
||||||
|
|
||||||
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
|
let observer = Unmanaged.passUnretained(self).toOpaque()
|
||||||
|
|
||||||
|
CFNotificationCenterRemoveObserver(notificationCenter, observer, .wiredServerConnectionAvailableResponse, nil)
|
||||||
|
CFNotificationCenterRemoveObserver(notificationCenter, observer, .localServerConnectionAvailableResponse, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fileprivate extension FindServerOperation
|
||||||
|
{
|
||||||
|
func handle(_ notification: CFNotificationName)
|
||||||
|
{
|
||||||
|
switch notification
|
||||||
|
{
|
||||||
|
case .wiredServerConnectionAvailableResponse: self.isWiredServerConnectionAvailable = true
|
||||||
|
case .localServerConnectionAvailableResponse: self.isLocalServerConnectionAvailable = true
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ class InstallAppOperation: ResultOperation<InstalledApp>
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let request = BeginInstallationRequest(activeProfiles: activeProfiles)
|
let request = BeginInstallationRequest(activeProfiles: activeProfiles, bundleIdentifier: installedApp.resignedBundleIdentifier)
|
||||||
connection.send(request) { (result) in
|
connection.send(request) { (result) in
|
||||||
switch result
|
switch result
|
||||||
{
|
{
|
||||||
@@ -173,6 +173,21 @@ class InstallAppOperation: ResultOperation<InstalledApp>
|
|||||||
{
|
{
|
||||||
self.cleanUp()
|
self.cleanUp()
|
||||||
|
|
||||||
|
// Only remove refreshed IPA when finished.
|
||||||
|
if let app = self.context.app
|
||||||
|
{
|
||||||
|
let fileURL = InstalledApp.refreshedIPAURL(for: app)
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
try FileManager.default.removeItem(at: fileURL)
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
print("Failed to remove refreshed .ipa:", error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
super.finish(result)
|
super.finish(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,12 +238,6 @@ private extension InstallAppOperation
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
try FileManager.default.removeItem(at: self.context.temporaryDirectory)
|
try FileManager.default.removeItem(at: self.context.temporaryDirectory)
|
||||||
|
|
||||||
if let app = self.context.app
|
|
||||||
{
|
|
||||||
let fileURL = InstalledApp.refreshedIPAURL(for: app)
|
|
||||||
try FileManager.default.removeItem(at: fileURL)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -76,26 +76,41 @@ private extension SendAppOperation
|
|||||||
guard let appData = try? Data(contentsOf: fileURL) else { throw OperationError.invalidApp }
|
guard let appData = try? Data(contentsOf: fileURL) else { throw OperationError.invalidApp }
|
||||||
guard let udid = Bundle.main.object(forInfoDictionaryKey: Bundle.Info.deviceID) as? String else { throw OperationError.unknownUDID }
|
guard let udid = Bundle.main.object(forInfoDictionaryKey: Bundle.Info.deviceID) as? String else { throw OperationError.unknownUDID }
|
||||||
|
|
||||||
let request = PrepareAppRequest(udid: udid, contentSize: appData.count)
|
var request = PrepareAppRequest(udid: udid, contentSize: appData.count)
|
||||||
|
|
||||||
|
if connection.server.connectionType == .local
|
||||||
|
{
|
||||||
|
// Background daemons have low memory limit (~6MB as of 13.5),
|
||||||
|
// so send just the file URL rather than the app data itself.
|
||||||
|
request.fileURL = fileURL
|
||||||
|
}
|
||||||
|
|
||||||
print("Sending request \(request)")
|
|
||||||
connection.send(request) { (result) in
|
connection.send(request) { (result) in
|
||||||
switch result
|
switch result
|
||||||
{
|
{
|
||||||
case .failure(let error): completionHandler(.failure(error))
|
case .failure(let error): completionHandler(.failure(error))
|
||||||
case .success:
|
case .success:
|
||||||
|
|
||||||
print("Sending app data (\(appData.count) bytes)")
|
if connection.server.connectionType == .local
|
||||||
connection.send(appData, prependSize: false) { (result) in
|
{
|
||||||
switch result
|
// Sent file URL, so don't need to send any more.
|
||||||
{
|
completionHandler(.success(()))
|
||||||
case .failure(let error):
|
}
|
||||||
print("Failed to send app data (\(appData.count) bytes)")
|
else
|
||||||
completionHandler(.failure(error))
|
{
|
||||||
|
print("Sending app data (\(appData.count) bytes)...")
|
||||||
case .success:
|
|
||||||
print("Successfully sent app data (\(appData.count) bytes)")
|
connection.send(appData, prependSize: false) { (result) in
|
||||||
completionHandler(.success(()))
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error):
|
||||||
|
print("Failed to send app data (\(appData.count) bytes)")
|
||||||
|
completionHandler(.failure(error))
|
||||||
|
|
||||||
|
case .success:
|
||||||
|
print("Successfully sent app data (\(appData.count) bytes)")
|
||||||
|
completionHandler(.success(()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
AltStore/Resources/AltDaemon.deb
Normal file
BIN
AltStore/Resources/AltDaemon.deb
Normal file
Binary file not shown.
@@ -10,22 +10,6 @@ import Network
|
|||||||
|
|
||||||
import AltKit
|
import AltKit
|
||||||
|
|
||||||
extension ALTServerError
|
|
||||||
{
|
|
||||||
init<E: Error>(_ error: E)
|
|
||||||
{
|
|
||||||
switch error
|
|
||||||
{
|
|
||||||
case let error as ALTServerError: self = error
|
|
||||||
case is DecodingError: self = ALTServerError(.invalidResponse)
|
|
||||||
case is EncodingError: self = ALTServerError(.invalidRequest)
|
|
||||||
default:
|
|
||||||
assertionFailure("Caught unknown error type")
|
|
||||||
self = ALTServerError(.unknown)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ConnectionError: LocalizedError
|
enum ConnectionError: LocalizedError
|
||||||
{
|
{
|
||||||
case serverNotFound
|
case serverNotFound
|
||||||
@@ -42,13 +26,23 @@ enum ConnectionError: LocalizedError
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension Server
|
||||||
|
{
|
||||||
|
enum ConnectionType
|
||||||
|
{
|
||||||
|
case wireless
|
||||||
|
case wired
|
||||||
|
case local
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Server: Equatable
|
struct Server: Equatable
|
||||||
{
|
{
|
||||||
var identifier: String? = nil
|
var identifier: String? = nil
|
||||||
var service: NetService? = nil
|
var service: NetService? = nil
|
||||||
|
|
||||||
var isPreferred = false
|
var isPreferred = false
|
||||||
var isWiredConnection = false
|
var connectionType: ConnectionType = .wireless
|
||||||
}
|
}
|
||||||
|
|
||||||
extension Server
|
extension Server
|
||||||
|
|||||||
@@ -94,12 +94,18 @@ extension ServerManager
|
|||||||
connection.start(queue: self.dispatchQueue)
|
connection.start(queue: self.dispatchQueue)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let incomingConnectionsSemaphore = self.incomingConnectionsSemaphore, server.isWiredConnection
|
if let incomingConnectionsSemaphore = self.incomingConnectionsSemaphore, server.connectionType != .wireless
|
||||||
{
|
{
|
||||||
print("Waiting for new wired connection...")
|
print("Waiting for incoming connection...")
|
||||||
|
|
||||||
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
|
||||||
CFNotificationCenterPostNotification(notificationCenter, .wiredServerConnectionStartRequest, nil, nil, true)
|
|
||||||
|
switch server.connectionType
|
||||||
|
{
|
||||||
|
case .wired: CFNotificationCenterPostNotification(notificationCenter, .wiredServerConnectionStartRequest, nil, nil, true)
|
||||||
|
case .local: CFNotificationCenterPostNotification(notificationCenter, .localServerConnectionStartRequest, nil, nil, true)
|
||||||
|
case .wireless: break
|
||||||
|
}
|
||||||
|
|
||||||
_ = incomingConnectionsSemaphore.wait(timeout: .now() + 10.0)
|
_ = incomingConnectionsSemaphore.wait(timeout: .now() + 10.0)
|
||||||
|
|
||||||
@@ -114,7 +120,17 @@ extension ServerManager
|
|||||||
}
|
}
|
||||||
else if let service = server.service
|
else if let service = server.service
|
||||||
{
|
{
|
||||||
let connection = NWConnection(to: .service(name: service.name, type: service.type, domain: service.domain, interface: nil), using: .tcp)
|
print("Connecting to service:", service)
|
||||||
|
|
||||||
|
let parameters = NWParameters.tcp
|
||||||
|
|
||||||
|
if server.connectionType == .local
|
||||||
|
{
|
||||||
|
// Prevent AltStore from initiating connections over multiple interfaces simultaneously 🤷♂️
|
||||||
|
parameters.requiredInterfaceType = .loopback
|
||||||
|
}
|
||||||
|
|
||||||
|
let connection = NWConnection(to: .service(name: service.name, type: service.type, domain: service.domain, interface: nil), using: parameters)
|
||||||
start(connection)
|
start(connection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16092.1" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="5Rz-4h-jJ8">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="5Rz-4h-jJ8">
|
||||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16082.1"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
|
||||||
<capability name="Named colors" minToolsVersion="9.0"/>
|
<capability name="Named colors" minToolsVersion="9.0"/>
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<color key="separatorColor" white="1" alpha="0.25" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="separatorColor" white="1" alpha="0.25" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<label key="tableFooterView" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="AltStore 1.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bUR-rp-Nw2">
|
<label key="tableFooterView" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="AltStore 1.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bUR-rp-Nw2">
|
||||||
<rect key="frame" x="0.0" y="905.5" width="375" height="25"/>
|
<rect key="frame" x="0.0" y="996.5" width="375" height="25"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" white="1" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="textColor" white="1" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
@@ -237,10 +237,40 @@
|
|||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
</cells>
|
</cells>
|
||||||
</tableViewSection>
|
</tableViewSection>
|
||||||
|
<tableViewSection headerTitle="" id="9ht-ML-85l">
|
||||||
|
<cells>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" textLabel="wYS-qW-u8S" rowHeight="51" style="IBUITableViewCellStyleDefault" id="ndZ-OC-MWv" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="501.5" width="375" height="51"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="ndZ-OC-MWv" id="Tuq-2M-9df">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Install AltDaemon" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wYS-qW-u8S">
|
||||||
|
<rect key="frame" x="30" y="0.0" width="315" height="51"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
|
||||||
|
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
<color key="backgroundColor" white="1" alpha="0.14999999999999999" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<edgeInsets key="layoutMargins" top="8" left="30" bottom="8" right="30"/>
|
||||||
|
<inset key="separatorInset" minX="30" minY="0.0" maxX="30" maxY="0.0"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="style">
|
||||||
|
<integer key="value" value="0"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="boolean" keyPath="isSelectable" value="YES"/>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</tableViewCell>
|
||||||
|
</cells>
|
||||||
|
</tableViewSection>
|
||||||
<tableViewSection headerTitle="" id="eHy-qI-w5w">
|
<tableViewSection headerTitle="" id="eHy-qI-w5w">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="30h-59-88f" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="30h-59-88f" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="501.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="592.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="30h-59-88f" id="7qD-DW-Jls">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="30h-59-88f" id="7qD-DW-Jls">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -280,7 +310,7 @@
|
|||||||
<tableViewSection headerTitle="" id="J90-vn-u2O">
|
<tableViewSection headerTitle="" id="J90-vn-u2O">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="i4T-2q-jF3" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="i4T-2q-jF3" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="592.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="683.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="i4T-2q-jF3" id="VTQ-H4-aCM">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="i4T-2q-jF3" id="VTQ-H4-aCM">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -324,7 +354,7 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="0MT-ht-Sit" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="0MT-ht-Sit" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="643.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="734.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="0MT-ht-Sit" id="OZp-WM-5H7">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="0MT-ht-Sit" id="OZp-WM-5H7">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -368,7 +398,7 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="O5R-Al-lGj" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="O5R-Al-lGj" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="694.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="785.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="O5R-Al-lGj" id="CrG-Mr-xQq">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="O5R-Al-lGj" id="CrG-Mr-xQq">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -408,7 +438,7 @@
|
|||||||
<tableViewSection headerTitle="" id="OMa-EK-hRI">
|
<tableViewSection headerTitle="" id="OMa-EK-hRI">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="FMZ-as-Ljo" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="FMZ-as-Ljo" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="785.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="876.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="FMZ-as-Ljo" id="JzL-Of-A3T">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="FMZ-as-Ljo" id="JzL-Of-A3T">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -441,7 +471,7 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="Qca-pU-sJh" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="51" id="Qca-pU-sJh" customClass="InsetGroupTableViewCell" customModule="AltStore" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="836.5" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="927.5" width="375" height="51"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Qca-pU-sJh" id="QtU-8J-VQN">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Qca-pU-sJh" id="QtU-8J-VQN">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
|
||||||
@@ -608,7 +638,7 @@
|
|||||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" layoutMarginsFollowReadableWidth="YES" contentInsetAdjustmentBehavior="never" indicatorStyle="white" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oQQ-pR-oKc">
|
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" layoutMarginsFollowReadableWidth="YES" contentInsetAdjustmentBehavior="never" indicatorStyle="white" editable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oQQ-pR-oKc">
|
||||||
<rect key="frame" x="0.0" y="44" width="375" height="574"/>
|
<rect key="frame" x="0.0" y="44" width="375" height="574"/>
|
||||||
<edgeInsets key="layoutMargins" top="8" left="30" bottom="8" right="30"/>
|
<edgeInsets key="layoutMargins" top="8" left="30" bottom="8" right="30"/>
|
||||||
<mutableString key="text">Jay Freeman (ldid)
|
<string key="text">Jay Freeman (ldid)
|
||||||
Copyright (C) 2007-2012 Jay Freeman (saurik)
|
Copyright (C) 2007-2012 Jay Freeman (saurik)
|
||||||
|
|
||||||
libimobiledevice
|
libimobiledevice
|
||||||
@@ -685,7 +715,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
ICONS
|
ICONS
|
||||||
|
|
||||||
Settings by i cons from the Noun Project</mutableString>
|
Settings by i cons from the Noun Project</string>
|
||||||
<color key="textColor" white="1" alpha="0.75" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="textColor" white="1" alpha="0.75" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ extension SettingsViewController
|
|||||||
case account
|
case account
|
||||||
case patreon
|
case patreon
|
||||||
case backgroundRefresh
|
case backgroundRefresh
|
||||||
|
case jailbreak
|
||||||
case instructions
|
case instructions
|
||||||
case credits
|
case credits
|
||||||
case debug
|
case debug
|
||||||
@@ -167,6 +168,16 @@ private extension SettingsViewController
|
|||||||
case .backgroundRefresh:
|
case .backgroundRefresh:
|
||||||
settingsHeaderFooterView.secondaryLabel.text = NSLocalizedString("Automatically refresh apps in the background when connected to the same WiFi as AltServer.", comment: "")
|
settingsHeaderFooterView.secondaryLabel.text = NSLocalizedString("Automatically refresh apps in the background when connected to the same WiFi as AltServer.", comment: "")
|
||||||
|
|
||||||
|
case .jailbreak:
|
||||||
|
if isHeader
|
||||||
|
{
|
||||||
|
settingsHeaderFooterView.primaryLabel.text = NSLocalizedString("JAILBREAK", comment: "")
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
settingsHeaderFooterView.secondaryLabel.text = NSLocalizedString("AltDaemon allows AltStore to install and refresh apps without a computer. You can install AltDaemon using Filza or another file manager.", comment: "")
|
||||||
|
}
|
||||||
|
|
||||||
case .instructions:
|
case .instructions:
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -320,6 +331,7 @@ extension SettingsViewController
|
|||||||
{
|
{
|
||||||
case .signIn: return (self.activeTeam == nil) ? 1 : 0
|
case .signIn: return (self.activeTeam == nil) ? 1 : 0
|
||||||
case .account: return (self.activeTeam == nil) ? 0 : 3
|
case .account: return (self.activeTeam == nil) ? 0 : 3
|
||||||
|
case .jailbreak: return UIDevice.current.isJailbroken ? 1 : 0
|
||||||
default: return super.tableView(tableView, numberOfRowsInSection: section.rawValue)
|
default: return super.tableView(tableView, numberOfRowsInSection: section.rawValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -331,8 +343,9 @@ extension SettingsViewController
|
|||||||
{
|
{
|
||||||
case .signIn where self.activeTeam != nil: return nil
|
case .signIn where self.activeTeam != nil: return nil
|
||||||
case .account where self.activeTeam == nil: return nil
|
case .account where self.activeTeam == nil: return nil
|
||||||
|
case .jailbreak where !UIDevice.current.isJailbroken: return nil
|
||||||
|
|
||||||
case .signIn, .account, .patreon, .credits, .debug:
|
case .signIn, .account, .patreon, .jailbreak, .credits, .debug:
|
||||||
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderFooterView") as! SettingsHeaderFooterView
|
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderFooterView") as! SettingsHeaderFooterView
|
||||||
self.prepare(headerView, for: section, isHeader: true)
|
self.prepare(headerView, for: section, isHeader: true)
|
||||||
return headerView
|
return headerView
|
||||||
@@ -347,8 +360,9 @@ extension SettingsViewController
|
|||||||
switch section
|
switch section
|
||||||
{
|
{
|
||||||
case .signIn where self.activeTeam != nil: return nil
|
case .signIn where self.activeTeam != nil: return nil
|
||||||
|
case .jailbreak where !UIDevice.current.isJailbroken: return nil
|
||||||
|
|
||||||
case .signIn, .patreon, .backgroundRefresh:
|
case .signIn, .patreon, .backgroundRefresh, .jailbreak:
|
||||||
let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderFooterView") as! SettingsHeaderFooterView
|
let footerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderFooterView") as! SettingsHeaderFooterView
|
||||||
self.prepare(footerView, for: section, isHeader: false)
|
self.prepare(footerView, for: section, isHeader: false)
|
||||||
return footerView
|
return footerView
|
||||||
@@ -364,8 +378,9 @@ extension SettingsViewController
|
|||||||
{
|
{
|
||||||
case .signIn where self.activeTeam != nil: return 1.0
|
case .signIn where self.activeTeam != nil: return 1.0
|
||||||
case .account where self.activeTeam == nil: return 1.0
|
case .account where self.activeTeam == nil: return 1.0
|
||||||
|
case .jailbreak where !UIDevice.current.isJailbroken: return 1.0
|
||||||
|
|
||||||
case .signIn, .account, .patreon, .credits, .debug:
|
case .signIn, .account, .patreon, .jailbreak, .credits, .debug:
|
||||||
let height = self.preferredHeight(for: self.prototypeHeaderFooterView, in: section, isHeader: true)
|
let height = self.preferredHeight(for: self.prototypeHeaderFooterView, in: section, isHeader: true)
|
||||||
return height
|
return height
|
||||||
|
|
||||||
@@ -380,8 +395,9 @@ extension SettingsViewController
|
|||||||
{
|
{
|
||||||
case .signIn where self.activeTeam != nil: return 1.0
|
case .signIn where self.activeTeam != nil: return 1.0
|
||||||
case .account where self.activeTeam == nil: return 1.0
|
case .account where self.activeTeam == nil: return 1.0
|
||||||
|
case .jailbreak where !UIDevice.current.isJailbroken: return 1.0
|
||||||
|
|
||||||
case .signIn, .patreon, .backgroundRefresh:
|
case .signIn, .patreon, .backgroundRefresh, .jailbreak:
|
||||||
let height = self.preferredHeight(for: self.prototypeHeaderFooterView, in: section, isHeader: false)
|
let height = self.preferredHeight(for: self.prototypeHeaderFooterView, in: section, isHeader: false)
|
||||||
return height
|
return height
|
||||||
|
|
||||||
@@ -399,6 +415,14 @@ extension SettingsViewController
|
|||||||
{
|
{
|
||||||
case .signIn: self.signIn()
|
case .signIn: self.signIn()
|
||||||
case .instructions: break
|
case .instructions: break
|
||||||
|
case .jailbreak:
|
||||||
|
let fileURL = Bundle.main.url(forResource: "AltDaemon", withExtension: "deb")!
|
||||||
|
|
||||||
|
let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
|
||||||
|
self.present(activityViewController, animated: true, completion: nil)
|
||||||
|
|
||||||
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
|
|
||||||
case .credits:
|
case .credits:
|
||||||
let row = CreditsRow.allCases[indexPath.row]
|
let row = CreditsRow.allCases[indexPath.row]
|
||||||
switch row
|
switch row
|
||||||
|
|||||||
11
Podfile
11
Podfile
@@ -25,6 +25,17 @@ target 'AltServer' do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
target 'AltDaemon' do
|
||||||
|
platform :ios, '12.0'
|
||||||
|
|
||||||
|
use_modular_headers!
|
||||||
|
|
||||||
|
# Pods for AltDaemon
|
||||||
|
pod 'AltSign', :path => 'Dependencies/AltSign'
|
||||||
|
pod 'Roxas', :path => 'Dependencies/Roxas'
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
target.build_configurations.each do |config|
|
target.build_configurations.each do |config|
|
||||||
|
|||||||
@@ -62,6 +62,6 @@ SPEC CHECKSUMS:
|
|||||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||||
|
|
||||||
PODFILE CHECKSUM: 1317f1da77af3fbb8c90b0d34845d2f0068d488c
|
PODFILE CHECKSUM: bd28424f8d9916505402972bc06c1925ce9f5026
|
||||||
|
|
||||||
COCOAPODS: 1.8.4
|
COCOAPODS: 1.8.4
|
||||||
|
|||||||
2
Pods/Manifest.lock
generated
2
Pods/Manifest.lock
generated
@@ -62,6 +62,6 @@ SPEC CHECKSUMS:
|
|||||||
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
Sparkle: 3f75576db8b0265adef36c43249d747f22d0b708
|
||||||
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68
|
||||||
|
|
||||||
PODFILE CHECKSUM: 1317f1da77af3fbb8c90b0d34845d2f0068d488c
|
PODFILE CHECKSUM: bd28424f8d9916505402972bc06c1925ce9f5026
|
||||||
|
|
||||||
COCOAPODS: 1.8.4
|
COCOAPODS: 1.8.4
|
||||||
|
|||||||
314
Pods/Pods.xcodeproj/project.pbxproj
generated
314
Pods/Pods.xcodeproj/project.pbxproj
generated
@@ -181,7 +181,7 @@
|
|||||||
68178896553225CC371A439822E86255 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = DC700BEFCDC775BF366DC842E52854DD /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
68178896553225CC371A439822E86255 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = DC700BEFCDC775BF366DC842E52854DD /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
6917E87E8C8CE780B8A31B0C11A18440 /* Key.h in Headers */ = {isa = PBXBuildFile; fileRef = 79926042DA0FE3AC31BE54B760B6F908 /* Key.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
6917E87E8C8CE780B8A31B0C11A18440 /* Key.h in Headers */ = {isa = PBXBuildFile; fileRef = 79926042DA0FE3AC31BE54B760B6F908 /* Key.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
695874C3111A6C110481D87968B7B2ED /* ALTCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = B348AC7ABB9564CBB9312DCAEA83CCA8 /* ALTCertificate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
695874C3111A6C110481D87968B7B2ED /* ALTCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = B348AC7ABB9564CBB9312DCAEA83CCA8 /* ALTCertificate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
6B25D76AA9531920602674422A2E3174 /* Pods-AltStore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EC9F77AC7ECBA94225DE401B6A8004F2 /* Pods-AltStore-dummy.m */; };
|
6B25D76AA9531920602674422A2E3174 /* Pods-AltStore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C9132C40CB4837DADEB046E727F867FB /* Pods-AltStore-dummy.m */; };
|
||||||
6BEAFA9ACE3022B335DA0811B01D9D31 /* des_old.h in Headers */ = {isa = PBXBuildFile; fileRef = 442C72B32657E76148EBC3129ED2B08F /* des_old.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
6BEAFA9ACE3022B335DA0811B01D9D31 /* des_old.h in Headers */ = {isa = PBXBuildFile; fileRef = 442C72B32657E76148EBC3129ED2B08F /* des_old.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
6F0AEBA27C394CAD36373D4BC635A627 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = C72FC0FB6B8986A4FB1980229B73DDEE /* mztools.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
6F0AEBA27C394CAD36373D4BC635A627 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = C72FC0FB6B8986A4FB1980229B73DDEE /* mztools.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
6F30FECE94464AE2FEE52B10A54E2E53 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE107E4A9765C8FEB873EB1DD6945AE5 /* Node.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
6F30FECE94464AE2FEE52B10A54E2E53 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE107E4A9765C8FEB873EB1DD6945AE5 /* Node.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
B48A7C9B5400E62C541570902B447BF4 /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8BC9C468CBA45218B0935330923A03 /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
B48A7C9B5400E62C541570902B447BF4 /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8BC9C468CBA45218B0935330923A03 /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
B49C6C4BB263813111865E9E6C1B5763 /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 214A7740331D44B14BED994D0AD62890 /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
B49C6C4BB263813111865E9E6C1B5763 /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 214A7740331D44B14BED994D0AD62890 /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
B521A6187844EE5CEFEFE07A5D1DA298 /* cms.h in Headers */ = {isa = PBXBuildFile; fileRef = 037FB3B672D2D4A5D48669AB61EA914F /* cms.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
B521A6187844EE5CEFEFE07A5D1DA298 /* cms.h in Headers */ = {isa = PBXBuildFile; fileRef = 037FB3B672D2D4A5D48669AB61EA914F /* cms.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
B592B30E0A198D1F2E99F9E42FD1F332 /* Pods-AltServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E8434827ABB58D1C0275F5BDE3717F16 /* Pods-AltServer-dummy.m */; };
|
B592B30E0A198D1F2E99F9E42FD1F332 /* Pods-AltServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C63B22556372BD6A596092190AC874E3 /* Pods-AltServer-dummy.m */; };
|
||||||
B5C917462DB73F1880C6D1CE4665A4FA /* txt_db.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E9AC3ACB0E77B051E9401069DA4F792 /* txt_db.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
B5C917462DB73F1880C6D1CE4665A4FA /* txt_db.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E9AC3ACB0E77B051E9401069DA4F792 /* txt_db.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
B619F619AAEC640C10789093CDABC708 /* node_list.h in Headers */ = {isa = PBXBuildFile; fileRef = FDBED95D85CFE5DE2E1A73C8BDE40AF8 /* node_list.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
B619F619AAEC640C10789093CDABC708 /* node_list.h in Headers */ = {isa = PBXBuildFile; fileRef = FDBED95D85CFE5DE2E1A73C8BDE40AF8 /* node_list.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
B6CF49653D8AECE522F2393D5F7E0E25 /* cccmac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2119733D600F6F015CE868CFBBA5E2E1 /* cccmac.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
B6CF49653D8AECE522F2393D5F7E0E25 /* cccmac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2119733D600F6F015CE868CFBBA5E2E1 /* cccmac.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
@@ -329,7 +329,7 @@
|
|||||||
C8D3B91FF9292E6606553941712BAB4C /* ldid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFA796C2028D51219FED104E02BBA2E /* ldid.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
C8D3B91FF9292E6606553941712BAB4C /* ldid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFA796C2028D51219FED104E02BBA2E /* ldid.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
C8D7A5021858F9A7BE3FFF4FCE4FC8F1 /* stack.h in Headers */ = {isa = PBXBuildFile; fileRef = D6B718DB69C902E4BB79FFC1C7E66C65 /* stack.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
C8D7A5021858F9A7BE3FFF4FCE4FC8F1 /* stack.h in Headers */ = {isa = PBXBuildFile; fileRef = D6B718DB69C902E4BB79FFC1C7E66C65 /* stack.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
CABB5C4666EF8BA07A6CE46F825D6F16 /* obj_mac.h in Headers */ = {isa = PBXBuildFile; fileRef = 5496E932BB2B72CA3794430120AD503D /* obj_mac.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
CABB5C4666EF8BA07A6CE46F825D6F16 /* obj_mac.h in Headers */ = {isa = PBXBuildFile; fileRef = 5496E932BB2B72CA3794430120AD503D /* obj_mac.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
CB3B06F6B2DA11115709519F68A7E443 /* Pods-AltStore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 695286014335265E05C28AD7B887F02F /* Pods-AltStore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
CB3B06F6B2DA11115709519F68A7E443 /* Pods-AltStore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B51BFE6F7A28BF6D5614373C24DB981 /* Pods-AltStore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
CBD35A6A8664554106B1D3299A860A9B /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 82BCE1984F56DA8A1D3B838D10199799 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
CBD35A6A8664554106B1D3299A860A9B /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 82BCE1984F56DA8A1D3B838D10199799 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
CC77C0103FFB833464F050472CFAA06B /* ccn.h in Headers */ = {isa = PBXBuildFile; fileRef = C556A67CD97EE39683D31C0B9F0918EB /* ccn.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
CC77C0103FFB833464F050472CFAA06B /* ccn.h in Headers */ = {isa = PBXBuildFile; fileRef = C556A67CD97EE39683D31C0B9F0918EB /* ccn.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
CCA8A63BEDECA611CADF620A05A9EC5C /* ccdrbg_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DDEEEB045FDE52E9750BDC8D15D561 /* ccdrbg_impl.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
CCA8A63BEDECA611CADF620A05A9EC5C /* ccdrbg_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DDEEEB045FDE52E9750BDC8D15D561 /* ccdrbg_impl.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
@@ -341,6 +341,7 @@
|
|||||||
CFC146CDF3E73A5DE481651447554DB6 /* ALTDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA1938AA1B5E8390790EC972AF13407 /* ALTDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
CFC146CDF3E73A5DE481651447554DB6 /* ALTDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA1938AA1B5E8390790EC972AF13407 /* ALTDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
D05C23FC782B87DE30EB6C19C2E22ECF /* ALTAppleAPI_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 490F5F18CD5B71977FAEF4CD4BDCC5F9 /* ALTAppleAPI_Private.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
D05C23FC782B87DE30EB6C19C2E22ECF /* ALTAppleAPI_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 490F5F18CD5B71977FAEF4CD4BDCC5F9 /* ALTAppleAPI_Private.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
D155BE42D57F338F2E08EF48457F5654 /* ALTProvisioningProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = F908C96C7967FF6B7D5D5B285844D269 /* ALTProvisioningProfile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
D155BE42D57F338F2E08EF48457F5654 /* ALTProvisioningProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = F908C96C7967FF6B7D5D5B285844D269 /* ALTProvisioningProfile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
|
D2517BDBD1ABC11CE0956092866DE325 /* Pods-AltDaemon-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 546B88CFC6EBED3C7F26035C1D82B8B7 /* Pods-AltDaemon-dummy.m */; };
|
||||||
D377ED8648D9A1CE9B36AFD6447CC5B0 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8A48D68CE5B5EF610D60AE61C9F584 /* unzip.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
D377ED8648D9A1CE9B36AFD6447CC5B0 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A8A48D68CE5B5EF610D60AE61C9F584 /* unzip.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
D38417833634FBF5417E1710E58C0082 /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 226B01F8B34FFE63742C089DDE49D208 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
D38417833634FBF5417E1710E58C0082 /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 226B01F8B34FFE63742C089DDE49D208 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
D392A50B49F1B4A91D2F1F7F9A5215D7 /* sha.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B27464FED48BC6328C2539851FAA825 /* sha.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
D392A50B49F1B4A91D2F1F7F9A5215D7 /* sha.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B27464FED48BC6328C2539851FAA825 /* sha.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
@@ -384,7 +385,7 @@
|
|||||||
EE29F8F3123CE9D8110AA5DE779B972B /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F3A77F6E48BAFA480142E4AA3CD6A301 /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
EE29F8F3123CE9D8110AA5DE779B972B /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = F3A77F6E48BAFA480142E4AA3CD6A301 /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
F030BF3436D9DE224E357140463045D3 /* ccdrbg.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BACEB5A46F609F5EC73F3A2E4AAEA3 /* ccdrbg.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
F030BF3436D9DE224E357140463045D3 /* ccdrbg.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BACEB5A46F609F5EC73F3A2E4AAEA3 /* ccdrbg.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
F0DCCE9786B72C8EF925C5294A68A03A /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7C523F13B0698E9E1E0C8BC56663CDD /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
F0DCCE9786B72C8EF925C5294A68A03A /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C7C523F13B0698E9E1E0C8BC56663CDD /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
F56FF4EABEF80FA5EC5D6AA4A348031C /* Pods-AltServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A3F93787631B5439B1EA07C44C1097A /* Pods-AltServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
F56FF4EABEF80FA5EC5D6AA4A348031C /* Pods-AltServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E6C49955A91A9BF96052D43477EE8A79 /* Pods-AltServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
F643A81BFE5A686AF434AB8EC619E68F /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE6D1449D7BFE1D6B397E971652F9B /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
F643A81BFE5A686AF434AB8EC619E68F /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AE6D1449D7BFE1D6B397E971652F9B /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
F6570E449D7D7F7CC8D0F6A7471304DC /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4DFCBD550423E377A4B95FF98BFC4 /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
F6570E449D7D7F7CC8D0F6A7471304DC /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4DFCBD550423E377A4B95FF98BFC4 /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||||
F6DCF78E53424519321B9FA4BF334107 /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D056070FF1CAD623E04B056987D215E /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
F6DCF78E53424519321B9FA4BF334107 /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D056070FF1CAD623E04B056987D215E /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
|
||||||
@@ -432,6 +433,13 @@
|
|||||||
remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767;
|
remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767;
|
||||||
remoteInfo = Roxas;
|
remoteInfo = Roxas;
|
||||||
};
|
};
|
||||||
|
B1324C39ACC0CCA590E2F6C1CEE2A8A0 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767;
|
||||||
|
remoteInfo = Roxas;
|
||||||
|
};
|
||||||
C24230D37E930D006BF95D0AD49EEC82 /* PBXContainerItemProxy */ = {
|
C24230D37E930D006BF95D0AD49EEC82 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||||
@@ -446,6 +454,13 @@
|
|||||||
remoteGlobalIDString = 062A64896E847A6749F58B6BA9A931B1;
|
remoteGlobalIDString = 062A64896E847A6749F58B6BA9A931B1;
|
||||||
remoteInfo = Nuke;
|
remoteInfo = Nuke;
|
||||||
};
|
};
|
||||||
|
EB92C48D1AC6614C7A547B50D0514BC5 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 951A9DDCF9D2F851D1EC2B8CCD08ADFA;
|
||||||
|
remoteInfo = AltSign;
|
||||||
|
};
|
||||||
EFC1BC25A31E50DAEF6382D28E7E2F7B /* PBXContainerItemProxy */ = {
|
EFC1BC25A31E50DAEF6382D28E7E2F7B /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||||
@@ -457,6 +472,7 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
005E0CD4F4EEA460F60A980AB9F94EB4 /* KeychainAccess-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-prefix.pch"; sourceTree = "<group>"; };
|
005E0CD4F4EEA460F60A980AB9F94EB4 /* KeychainAccess-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-prefix.pch"; sourceTree = "<group>"; };
|
||||||
|
0100FAF2D9192354B5AD97C5ACA2892A /* Pods-AltServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
01EE98A5766917099B441607B08AEF3B /* RSTDynamicDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDynamicDataSource.h; path = Roxas/RSTDynamicDataSource.h; sourceTree = "<group>"; };
|
01EE98A5766917099B441607B08AEF3B /* RSTDynamicDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDynamicDataSource.h; path = Roxas/RSTDynamicDataSource.h; sourceTree = "<group>"; };
|
||||||
026DC37EEB01428D873261F3CB427FE8 /* Roxas.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Roxas.modulemap; sourceTree = "<group>"; };
|
026DC37EEB01428D873261F3CB427FE8 /* Roxas.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Roxas.modulemap; sourceTree = "<group>"; };
|
||||||
02B30122F755FA8B1BAE13CA00BA4D40 /* blowfish.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = blowfish.h; path = Dependencies/OpenSSL/ios/include/openssl/blowfish.h; sourceTree = "<group>"; };
|
02B30122F755FA8B1BAE13CA00BA4D40 /* blowfish.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = blowfish.h; path = Dependencies/OpenSSL/ios/include/openssl/blowfish.h; sourceTree = "<group>"; };
|
||||||
@@ -469,6 +485,7 @@
|
|||||||
059702EBFD928AE0189CA3F830C3616E /* ALTCertificateRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTCertificateRequest.m; sourceTree = "<group>"; };
|
059702EBFD928AE0189CA3F830C3616E /* ALTCertificateRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTCertificateRequest.m; sourceTree = "<group>"; };
|
||||||
0609BCE55DD9CFA3B184D68CE9D8D29B /* UISpringTimingParameters+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISpringTimingParameters+Conveniences.m"; path = "Roxas/UISpringTimingParameters+Conveniences.m"; sourceTree = "<group>"; };
|
0609BCE55DD9CFA3B184D68CE9D8D29B /* UISpringTimingParameters+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISpringTimingParameters+Conveniences.m"; path = "Roxas/UISpringTimingParameters+Conveniences.m"; sourceTree = "<group>"; };
|
||||||
0751F7694817D0E796E34BDA38D20A3B /* ccmd5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmd5.h; path = Dependencies/corecrypto/ccmd5.h; sourceTree = "<group>"; };
|
0751F7694817D0E796E34BDA38D20A3B /* ccmd5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmd5.h; path = Dependencies/corecrypto/ccmd5.h; sourceTree = "<group>"; };
|
||||||
|
09CBBA5767A1426DCF3A11FFFCCD6C9A /* Pods-AltStore-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltStore-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||||
0A0CAD2F5EF0037CACB181692CCEFC6F /* RSTLaunchViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLaunchViewController.m; path = Roxas/RSTLaunchViewController.m; sourceTree = "<group>"; };
|
0A0CAD2F5EF0037CACB181692CCEFC6F /* RSTLaunchViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLaunchViewController.m; path = Roxas/RSTLaunchViewController.m; sourceTree = "<group>"; };
|
||||||
0A42A9A1EEFA70A1653FD7A3CEA23219 /* cc_debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_debug.h; path = Dependencies/corecrypto/cc_debug.h; sourceTree = "<group>"; };
|
0A42A9A1EEFA70A1653FD7A3CEA23219 /* cc_debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_debug.h; path = Dependencies/corecrypto/cc_debug.h; sourceTree = "<group>"; };
|
||||||
0AF287DBC0725AF33B14CD9BE967E93D /* ccsrp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccsrp.h; path = Dependencies/corecrypto/ccsrp.h; sourceTree = "<group>"; };
|
0AF287DBC0725AF33B14CD9BE967E93D /* ccsrp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccsrp.h; path = Dependencies/corecrypto/ccsrp.h; sourceTree = "<group>"; };
|
||||||
@@ -476,14 +493,13 @@
|
|||||||
0D056070FF1CAD623E04B056987D215E /* RSTHelperFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHelperFile.m; path = Roxas/RSTHelperFile.m; sourceTree = "<group>"; };
|
0D056070FF1CAD623E04B056987D215E /* RSTHelperFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHelperFile.m; path = Roxas/RSTHelperFile.m; sourceTree = "<group>"; };
|
||||||
0D0916ED915FE3469729DB8CD31E623C /* UIAlertAction+Actions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertAction+Actions.h"; path = "Roxas/UIAlertAction+Actions.h"; sourceTree = "<group>"; };
|
0D0916ED915FE3469729DB8CD31E623C /* UIAlertAction+Actions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertAction+Actions.h"; path = "Roxas/UIAlertAction+Actions.h"; sourceTree = "<group>"; };
|
||||||
0D659CD2AA9C92DF6E9B43DA90AF27AC /* ebcdic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ebcdic.h; path = Dependencies/OpenSSL/ios/include/openssl/ebcdic.h; sourceTree = "<group>"; };
|
0D659CD2AA9C92DF6E9B43DA90AF27AC /* ebcdic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ebcdic.h; path = Dependencies/OpenSSL/ios/include/openssl/ebcdic.h; sourceTree = "<group>"; };
|
||||||
0D7CC1D321A7EFF4B480E5BAC0685CFC /* Pods-AltStore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltStore.modulemap"; sourceTree = "<group>"; };
|
|
||||||
0E8386150C1F216DF0D0047940058BCF /* e_os2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = e_os2.h; path = Dependencies/OpenSSL/ios/include/openssl/e_os2.h; sourceTree = "<group>"; };
|
0E8386150C1F216DF0D0047940058BCF /* e_os2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = e_os2.h; path = Dependencies/OpenSSL/ios/include/openssl/e_os2.h; sourceTree = "<group>"; };
|
||||||
0FF4DFCBD550423E377A4B95FF98BFC4 /* RSTHasher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHasher.h; path = Roxas/RSTHasher.h; sourceTree = "<group>"; };
|
0FF4DFCBD550423E377A4B95FF98BFC4 /* RSTHasher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHasher.h; path = Roxas/RSTHasher.h; sourceTree = "<group>"; };
|
||||||
107026048A6314BCB6551F23F23AEFD4 /* Boolean.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = Boolean.cpp; sourceTree = "<group>"; };
|
107026048A6314BCB6551F23F23AEFD4 /* Boolean.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = Boolean.cpp; sourceTree = "<group>"; };
|
||||||
1096054AEB4A5C2B7057CD805622BD3E /* ccder_encode_eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccder_encode_eckey.h; path = Dependencies/corecrypto/ccder_encode_eckey.h; sourceTree = "<group>"; };
|
1096054AEB4A5C2B7057CD805622BD3E /* ccder_encode_eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccder_encode_eckey.h; path = Dependencies/corecrypto/ccder_encode_eckey.h; sourceTree = "<group>"; };
|
||||||
1104F3DB9BFE2FD485E07DFDCE51C324 /* STPrivilegedTask-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "STPrivilegedTask-dummy.m"; sourceTree = "<group>"; };
|
1104F3DB9BFE2FD485E07DFDCE51C324 /* STPrivilegedTask-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "STPrivilegedTask-dummy.m"; sourceTree = "<group>"; };
|
||||||
1169B08138008F968889C891FB8233CD /* ccrng_rsafips_test.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_rsafips_test.h; path = Dependencies/corecrypto/ccrng_rsafips_test.h; sourceTree = "<group>"; };
|
1169B08138008F968889C891FB8233CD /* ccrng_rsafips_test.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_rsafips_test.h; path = Dependencies/corecrypto/ccrng_rsafips_test.h; sourceTree = "<group>"; };
|
||||||
1215053FA027E4CE849DAF4D00697FF1 /* Pods-AltServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.release.xcconfig"; sourceTree = "<group>"; };
|
1192029049EFACF019572AE1D7C92004 /* Pods-AltStore-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltStore-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||||
14CFEC626B7EA4CA5CD713FE6CC97FDC /* NSPredicate+Search.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSPredicate+Search.m"; path = "Roxas/NSPredicate+Search.m"; sourceTree = "<group>"; };
|
14CFEC626B7EA4CA5CD713FE6CC97FDC /* NSPredicate+Search.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSPredicate+Search.m"; path = "Roxas/NSPredicate+Search.m"; sourceTree = "<group>"; };
|
||||||
14EAE44A37B74218DAE2706E4BA6711D /* plist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = plist.c; sourceTree = "<group>"; };
|
14EAE44A37B74218DAE2706E4BA6711D /* plist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = plist.c; sourceTree = "<group>"; };
|
||||||
15401FF4A3F7C90F76DE04FB0BBF5A00 /* AppCenter.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppCenter.xcconfig; sourceTree = "<group>"; };
|
15401FF4A3F7C90F76DE04FB0BBF5A00 /* AppCenter.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppCenter.xcconfig; sourceTree = "<group>"; };
|
||||||
@@ -510,7 +526,6 @@
|
|||||||
1DF21761F51793B1E79B815C42A7224C /* AltSign.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AltSign.xcconfig; sourceTree = "<group>"; };
|
1DF21761F51793B1E79B815C42A7224C /* AltSign.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AltSign.xcconfig; sourceTree = "<group>"; };
|
||||||
1E0ADF893622CFC816C5CF2BD893648E /* time64.c */ = {isa = PBXFileReference; includeInIndex = 1; path = time64.c; sourceTree = "<group>"; };
|
1E0ADF893622CFC816C5CF2BD893648E /* time64.c */ = {isa = PBXFileReference; includeInIndex = 1; path = time64.c; sourceTree = "<group>"; };
|
||||||
1E4C74EB97AA653EB2B4ED3024626A52 /* bplist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = bplist.c; sourceTree = "<group>"; };
|
1E4C74EB97AA653EB2B4ED3024626A52 /* bplist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = bplist.c; sourceTree = "<group>"; };
|
||||||
1FDDB64DD95C45BA9E30FFB7ECFB9C30 /* Pods-AltServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltServer.modulemap"; sourceTree = "<group>"; };
|
|
||||||
2119733D600F6F015CE868CFBBA5E2E1 /* cccmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cccmac.h; path = Dependencies/corecrypto/cccmac.h; sourceTree = "<group>"; };
|
2119733D600F6F015CE868CFBBA5E2E1 /* cccmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cccmac.h; path = Dependencies/corecrypto/cccmac.h; sourceTree = "<group>"; };
|
||||||
214A7740331D44B14BED994D0AD62890 /* RSTOperation_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation_Subclasses.h; path = Roxas/RSTOperation_Subclasses.h; sourceTree = "<group>"; };
|
214A7740331D44B14BED994D0AD62890 /* RSTOperation_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation_Subclasses.h; path = Roxas/RSTOperation_Subclasses.h; sourceTree = "<group>"; };
|
||||||
21622C57776B02F7072D150F0B8361ED /* SUAppcast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcast.h; path = Sparkle.framework/Versions/A/Headers/SUAppcast.h; sourceTree = "<group>"; };
|
21622C57776B02F7072D150F0B8361ED /* SUAppcast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcast.h; path = Sparkle.framework/Versions/A/Headers/SUAppcast.h; sourceTree = "<group>"; };
|
||||||
@@ -527,6 +542,7 @@
|
|||||||
289381B8EDD6B16F3DF7EFEE1612E74A /* pem2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pem2.h; path = Dependencies/OpenSSL/ios/include/openssl/pem2.h; sourceTree = "<group>"; };
|
289381B8EDD6B16F3DF7EFEE1612E74A /* pem2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pem2.h; path = Dependencies/OpenSSL/ios/include/openssl/pem2.h; sourceTree = "<group>"; };
|
||||||
28CC4C54E2CCB470E999C3B9B45DDEB0 /* STPrivilegedTask.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = STPrivilegedTask.modulemap; sourceTree = "<group>"; };
|
28CC4C54E2CCB470E999C3B9B45DDEB0 /* STPrivilegedTask.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = STPrivilegedTask.modulemap; sourceTree = "<group>"; };
|
||||||
29839951F935B229EC6919D9B7379D26 /* RSTCellContentPrefetchingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentPrefetchingDataSource.h; path = Roxas/RSTCellContentPrefetchingDataSource.h; sourceTree = "<group>"; };
|
29839951F935B229EC6919D9B7379D26 /* RSTCellContentPrefetchingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentPrefetchingDataSource.h; path = Roxas/RSTCellContentPrefetchingDataSource.h; sourceTree = "<group>"; };
|
||||||
|
29D47FB44A4B93E67977EA7DA41FDBFE /* Pods-AltDaemon-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltDaemon-resources.sh"; sourceTree = "<group>"; };
|
||||||
29DDEEEB045FDE52E9750BDC8D15D561 /* ccdrbg_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdrbg_impl.h; path = Dependencies/corecrypto/ccdrbg_impl.h; sourceTree = "<group>"; };
|
29DDEEEB045FDE52E9750BDC8D15D561 /* ccdrbg_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdrbg_impl.h; path = Dependencies/corecrypto/ccdrbg_impl.h; sourceTree = "<group>"; };
|
||||||
2A31A3F9BAB499BD3B13B3F6F7BFA8A1 /* Nuke.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nuke.modulemap; sourceTree = "<group>"; };
|
2A31A3F9BAB499BD3B13B3F6F7BFA8A1 /* Nuke.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nuke.modulemap; sourceTree = "<group>"; };
|
||||||
2AB59EF78CE48305009BCBE5CFD27596 /* Data.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = Data.cpp; sourceTree = "<group>"; };
|
2AB59EF78CE48305009BCBE5CFD27596 /* Data.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = Data.cpp; sourceTree = "<group>"; };
|
||||||
@@ -550,9 +566,9 @@
|
|||||||
38090EB442D3768A7A0B8A9E04F17CE8 /* ccrng_pbkdf2_prng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_pbkdf2_prng.h; path = Dependencies/corecrypto/ccrng_pbkdf2_prng.h; sourceTree = "<group>"; };
|
38090EB442D3768A7A0B8A9E04F17CE8 /* ccrng_pbkdf2_prng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_pbkdf2_prng.h; path = Dependencies/corecrypto/ccrng_pbkdf2_prng.h; sourceTree = "<group>"; };
|
||||||
3847A3DB493D2B9BD693D49F7F252F93 /* aes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = aes.h; path = Dependencies/OpenSSL/ios/include/openssl/aes.h; sourceTree = "<group>"; };
|
3847A3DB493D2B9BD693D49F7F252F93 /* aes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = aes.h; path = Dependencies/OpenSSL/ios/include/openssl/aes.h; sourceTree = "<group>"; };
|
||||||
389771695B320767CE9FE0680E37A623 /* cczp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cczp.h; path = Dependencies/corecrypto/cczp.h; sourceTree = "<group>"; };
|
389771695B320767CE9FE0680E37A623 /* cczp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cczp.h; path = Dependencies/corecrypto/cczp.h; sourceTree = "<group>"; };
|
||||||
|
38B25887E1C1D20811EEFC7E4F30E75E /* Pods-AltDaemon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltDaemon.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
39C8B442E4F1D331FA20406BD841D05A /* ts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ts.h; path = Dependencies/OpenSSL/ios/include/openssl/ts.h; sourceTree = "<group>"; };
|
39C8B442E4F1D331FA20406BD841D05A /* ts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ts.h; path = Dependencies/OpenSSL/ios/include/openssl/ts.h; sourceTree = "<group>"; };
|
||||||
39F52AFBCFA9F816FF726CF258D87FB2 /* ui.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ui.h; path = Dependencies/OpenSSL/ios/include/openssl/ui.h; sourceTree = "<group>"; };
|
39F52AFBCFA9F816FF726CF258D87FB2 /* ui.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ui.h; path = Dependencies/OpenSSL/ios/include/openssl/ui.h; sourceTree = "<group>"; };
|
||||||
3A44D4EBF7CD579B73B275F0F125F846 /* Pods-AltServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
3B785D124B1FE49B3A725737AE70E203 /* Roxas-Prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Roxas-Prefix.pch"; path = "Roxas/Roxas-Prefix.pch"; sourceTree = "<group>"; };
|
3B785D124B1FE49B3A725737AE70E203 /* Roxas-Prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Roxas-Prefix.pch"; path = "Roxas/Roxas-Prefix.pch"; sourceTree = "<group>"; };
|
||||||
3BFD8D7E4F26C273FA16D730BBE09E13 /* SPUURLRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUURLRequest.h; path = Sparkle.framework/Versions/A/Headers/SPUURLRequest.h; sourceTree = "<group>"; };
|
3BFD8D7E4F26C273FA16D730BBE09E13 /* SPUURLRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUURLRequest.h; path = Sparkle.framework/Versions/A/Headers/SPUURLRequest.h; sourceTree = "<group>"; };
|
||||||
3C6E6C40CF28ADEC88B15ECDF2F3E884 /* SPUDownloaderSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderSession.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h; sourceTree = "<group>"; };
|
3C6E6C40CF28ADEC88B15ECDF2F3E884 /* SPUDownloaderSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderSession.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h; sourceTree = "<group>"; };
|
||||||
@@ -561,6 +577,7 @@
|
|||||||
3E050D4CE1C16A0C2923D75EE79FCD4E /* cc_runtime_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_runtime_config.h; path = Dependencies/corecrypto/cc_runtime_config.h; sourceTree = "<group>"; };
|
3E050D4CE1C16A0C2923D75EE79FCD4E /* cc_runtime_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_runtime_config.h; path = Dependencies/corecrypto/cc_runtime_config.h; sourceTree = "<group>"; };
|
||||||
407C9DAC0B6F7CB610C85D0263AE17B8 /* opensslconf-arm64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "opensslconf-arm64.h"; path = "Dependencies/OpenSSL/ios/include/openssl/opensslconf-arm64.h"; sourceTree = "<group>"; };
|
407C9DAC0B6F7CB610C85D0263AE17B8 /* opensslconf-arm64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "opensslconf-arm64.h"; path = "Dependencies/OpenSSL/ios/include/openssl/opensslconf-arm64.h"; sourceTree = "<group>"; };
|
||||||
413693D82E21BB52B74898987363EA99 /* cast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cast.h; path = Dependencies/OpenSSL/ios/include/openssl/cast.h; sourceTree = "<group>"; };
|
413693D82E21BB52B74898987363EA99 /* cast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cast.h; path = Dependencies/OpenSSL/ios/include/openssl/cast.h; sourceTree = "<group>"; };
|
||||||
|
415A2399B6A802A272A86233D7C9DA25 /* Pods-AltStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
41CB48690B18FAE99417885EF7E6E767 /* cchmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cchmac.h; path = Dependencies/corecrypto/cchmac.h; sourceTree = "<group>"; };
|
41CB48690B18FAE99417885EF7E6E767 /* cchmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cchmac.h; path = Dependencies/corecrypto/cchmac.h; sourceTree = "<group>"; };
|
||||||
42D5F4993737B5DFAA5F5E6FB06C2BB8 /* ALTAppleAPISession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppleAPISession.h; sourceTree = "<group>"; };
|
42D5F4993737B5DFAA5F5E6FB06C2BB8 /* ALTAppleAPISession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppleAPISession.h; sourceTree = "<group>"; };
|
||||||
4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRoxas.a; path = libRoxas.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRoxas.a; path = libRoxas.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@@ -569,11 +586,12 @@
|
|||||||
4537E82F32214FD7818D7CD91F603D5B /* conf_api.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conf_api.h; path = Dependencies/OpenSSL/ios/include/openssl/conf_api.h; sourceTree = "<group>"; };
|
4537E82F32214FD7818D7CD91F603D5B /* conf_api.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = conf_api.h; path = Dependencies/OpenSSL/ios/include/openssl/conf_api.h; sourceTree = "<group>"; };
|
||||||
46BDD3848FE0E636C85F4304CF3FB840 /* pem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pem.h; path = Dependencies/OpenSSL/ios/include/openssl/pem.h; sourceTree = "<group>"; };
|
46BDD3848FE0E636C85F4304CF3FB840 /* pem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pem.h; path = Dependencies/OpenSSL/ios/include/openssl/pem.h; sourceTree = "<group>"; };
|
||||||
474C34D18454CBF5A04B49C2055FBBAB /* ssl2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ssl2.h; path = Dependencies/OpenSSL/ios/include/openssl/ssl2.h; sourceTree = "<group>"; };
|
474C34D18454CBF5A04B49C2055FBBAB /* ssl2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ssl2.h; path = Dependencies/OpenSSL/ios/include/openssl/ssl2.h; sourceTree = "<group>"; };
|
||||||
|
4773ABB518FBF6876DAC8F0AE260A54B /* Pods-AltDaemon-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltDaemon-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||||
47F936C4BE30E448468E5D325E02CD12 /* ALTSigner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTSigner.h; sourceTree = "<group>"; };
|
47F936C4BE30E448468E5D325E02CD12 /* ALTSigner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTSigner.h; sourceTree = "<group>"; };
|
||||||
490F5F18CD5B71977FAEF4CD4BDCC5F9 /* ALTAppleAPI_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppleAPI_Private.h; sourceTree = "<group>"; };
|
490F5F18CD5B71977FAEF4CD4BDCC5F9 /* ALTAppleAPI_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppleAPI_Private.h; sourceTree = "<group>"; };
|
||||||
4920980B5315FFD0E2EBB7F30EF2BFC5 /* RSTCellContentDataSource_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource_Subclasses.h; path = Roxas/RSTCellContentDataSource_Subclasses.h; sourceTree = "<group>"; };
|
4920980B5315FFD0E2EBB7F30EF2BFC5 /* RSTCellContentDataSource_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource_Subclasses.h; path = Roxas/RSTCellContentDataSource_Subclasses.h; sourceTree = "<group>"; };
|
||||||
493A0B3CB13D03370FC0105ACD627968 /* whrlpool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = whrlpool.h; path = Dependencies/OpenSSL/ios/include/openssl/whrlpool.h; sourceTree = "<group>"; };
|
493A0B3CB13D03370FC0105ACD627968 /* whrlpool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = whrlpool.h; path = Dependencies/OpenSSL/ios/include/openssl/whrlpool.h; sourceTree = "<group>"; };
|
||||||
4A3F93787631B5439B1EA07C44C1097A /* Pods-AltServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltServer-umbrella.h"; sourceTree = "<group>"; };
|
49B0F76928525434803E52E609201454 /* libPods-AltDaemon.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-AltDaemon.a"; path = "libPods-AltDaemon.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
4AFC2A8BFD44BF4705CDB538A5A700C9 /* UIViewController+TransitionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+TransitionState.m"; path = "Roxas/UIViewController+TransitionState.m"; sourceTree = "<group>"; };
|
4AFC2A8BFD44BF4705CDB538A5A700C9 /* UIViewController+TransitionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+TransitionState.m"; path = "Roxas/UIViewController+TransitionState.m"; sourceTree = "<group>"; };
|
||||||
4BFFC3AD9DB5992D2F577A558958972F /* SPUDownloaderDeprecated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDeprecated.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h; sourceTree = "<group>"; };
|
4BFFC3AD9DB5992D2F577A558958972F /* SPUDownloaderDeprecated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDeprecated.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h; sourceTree = "<group>"; };
|
||||||
4C4EB1FF702E3A1ACF22B0FD9AEFDFAE /* md4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = md4.h; path = Dependencies/OpenSSL/ios/include/openssl/md4.h; sourceTree = "<group>"; };
|
4C4EB1FF702E3A1ACF22B0FD9AEFDFAE /* md4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = md4.h; path = Dependencies/OpenSSL/ios/include/openssl/md4.h; sourceTree = "<group>"; };
|
||||||
@@ -591,12 +609,14 @@
|
|||||||
520E4EFA88F054B4BFBE69E7598ED29D /* RSTCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewCell.h; path = Roxas/RSTCollectionViewCell.h; sourceTree = "<group>"; };
|
520E4EFA88F054B4BFBE69E7598ED29D /* RSTCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewCell.h; path = Roxas/RSTCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
52758575FDE408FC483B772F1A509906 /* ccripemd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccripemd.h; path = Dependencies/corecrypto/ccripemd.h; sourceTree = "<group>"; };
|
52758575FDE408FC483B772F1A509906 /* ccripemd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccripemd.h; path = Dependencies/corecrypto/ccripemd.h; sourceTree = "<group>"; };
|
||||||
5317E660654C64DB949B1E59A273A07C /* alt_ldid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = alt_ldid.cpp; sourceTree = "<group>"; };
|
5317E660654C64DB949B1E59A273A07C /* alt_ldid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = alt_ldid.cpp; sourceTree = "<group>"; };
|
||||||
|
546B88CFC6EBED3C7F26035C1D82B8B7 /* Pods-AltDaemon-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltDaemon-dummy.m"; sourceTree = "<group>"; };
|
||||||
5496E932BB2B72CA3794430120AD503D /* obj_mac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = obj_mac.h; path = Dependencies/OpenSSL/ios/include/openssl/obj_mac.h; sourceTree = "<group>"; };
|
5496E932BB2B72CA3794430120AD503D /* obj_mac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = obj_mac.h; path = Dependencies/OpenSSL/ios/include/openssl/obj_mac.h; sourceTree = "<group>"; };
|
||||||
557113703F2557617D59ADA3DB5FD9E8 /* mdc2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mdc2.h; path = Dependencies/OpenSSL/ios/include/openssl/mdc2.h; sourceTree = "<group>"; };
|
557113703F2557617D59ADA3DB5FD9E8 /* mdc2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mdc2.h; path = Dependencies/OpenSSL/ios/include/openssl/mdc2.h; sourceTree = "<group>"; };
|
||||||
568687E6B6B277681DE9A457F089DF57 /* RSTBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTBlockOperation.h; path = Roxas/RSTBlockOperation.h; sourceTree = "<group>"; };
|
568687E6B6B277681DE9A457F089DF57 /* RSTBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTBlockOperation.h; path = Roxas/RSTBlockOperation.h; sourceTree = "<group>"; };
|
||||||
568A2EC5A1E112757032C27664AC2E1C /* ccpbkdf2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccpbkdf2.h; path = Dependencies/corecrypto/ccpbkdf2.h; sourceTree = "<group>"; };
|
568A2EC5A1E112757032C27664AC2E1C /* ccpbkdf2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccpbkdf2.h; path = Dependencies/corecrypto/ccpbkdf2.h; sourceTree = "<group>"; };
|
||||||
577F20AC9D1D37C21171DE3BC57EB4B8 /* RSTCellContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentView.h; path = Roxas/RSTCellContentView.h; sourceTree = "<group>"; };
|
577F20AC9D1D37C21171DE3BC57EB4B8 /* RSTCellContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentView.h; path = Roxas/RSTCellContentView.h; sourceTree = "<group>"; };
|
||||||
58093B01C1E44E948FEDBDB15079C7C6 /* alt_ldid.hpp */ = {isa = PBXFileReference; includeInIndex = 1; path = alt_ldid.hpp; sourceTree = "<group>"; };
|
58093B01C1E44E948FEDBDB15079C7C6 /* alt_ldid.hpp */ = {isa = PBXFileReference; includeInIndex = 1; path = alt_ldid.hpp; sourceTree = "<group>"; };
|
||||||
|
5835BCCA38BE408715F2124CE34EE05A /* Pods-AltServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltServer.modulemap"; sourceTree = "<group>"; };
|
||||||
5894D9DE89EF3AD8F90F2B9359464119 /* cctest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cctest.h; path = Dependencies/corecrypto/cctest.h; sourceTree = "<group>"; };
|
5894D9DE89EF3AD8F90F2B9359464119 /* cctest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cctest.h; path = Dependencies/corecrypto/cctest.h; sourceTree = "<group>"; };
|
||||||
58BC72BB52DEC3634030DEDACD3B932E /* RSTCellContentChangeOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChangeOperation.h; path = Roxas/RSTCellContentChangeOperation.h; sourceTree = "<group>"; };
|
58BC72BB52DEC3634030DEDACD3B932E /* RSTCellContentChangeOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChangeOperation.h; path = Roxas/RSTCellContentChangeOperation.h; sourceTree = "<group>"; };
|
||||||
5997619C66BBB2F2D0E31C562EA522F9 /* hmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = Dependencies/OpenSSL/ios/include/openssl/hmac.h; sourceTree = "<group>"; };
|
5997619C66BBB2F2D0E31C562EA522F9 /* hmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hmac.h; path = Dependencies/OpenSSL/ios/include/openssl/hmac.h; sourceTree = "<group>"; };
|
||||||
@@ -611,11 +631,11 @@
|
|||||||
5E6C305E38932B0284A040A773DFF879 /* RSTCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewCell.m; path = Roxas/RSTCollectionViewCell.m; sourceTree = "<group>"; };
|
5E6C305E38932B0284A040A773DFF879 /* RSTCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewCell.m; path = Roxas/RSTCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
5F0027637207387F612B8391E5111E9D /* STPrivilegedTask-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-prefix.pch"; sourceTree = "<group>"; };
|
5F0027637207387F612B8391E5111E9D /* STPrivilegedTask-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-prefix.pch"; sourceTree = "<group>"; };
|
||||||
60987BC87BDAE2562C44DF9109931565 /* RSTCellContentChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChange.m; path = Roxas/RSTCellContentChange.m; sourceTree = "<group>"; };
|
60987BC87BDAE2562C44DF9109931565 /* RSTCellContentChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChange.m; path = Roxas/RSTCellContentChange.m; sourceTree = "<group>"; };
|
||||||
|
60B0985C122B155F5C155FCB90F30B94 /* Pods-AltStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
61472883BDD4214BDDEEA2288061A605 /* RSTSearchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSearchController.m; path = Roxas/RSTSearchController.m; sourceTree = "<group>"; };
|
61472883BDD4214BDDEEA2288061A605 /* RSTSearchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSearchController.m; path = Roxas/RSTSearchController.m; sourceTree = "<group>"; };
|
||||||
61501C1661FD2F24B7E32026E45D5AA1 /* x509_vfy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = x509_vfy.h; path = Dependencies/OpenSSL/ios/include/openssl/x509_vfy.h; sourceTree = "<group>"; };
|
61501C1661FD2F24B7E32026E45D5AA1 /* x509_vfy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = x509_vfy.h; path = Dependencies/OpenSSL/ios/include/openssl/x509_vfy.h; sourceTree = "<group>"; };
|
||||||
61A98FE2E2A5A1751790C7E5E36372B5 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
|
61A98FE2E2A5A1751790C7E5E36372B5 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
|
||||||
61C5B1B207DD52BC5ACAB62A5A6DEF64 /* tls1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = tls1.h; path = Dependencies/OpenSSL/ios/include/openssl/tls1.h; sourceTree = "<group>"; };
|
61C5B1B207DD52BC5ACAB62A5A6DEF64 /* tls1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = tls1.h; path = Dependencies/OpenSSL/ios/include/openssl/tls1.h; sourceTree = "<group>"; };
|
||||||
61DDF5B83CA12D93D7CBD4F0B3242860 /* Pods-AltStore-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltStore-acknowledgements.markdown"; sourceTree = "<group>"; };
|
|
||||||
631B9239A14B8849600FF2BE44308CD2 /* UITableView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+CellContent.m"; path = "Roxas/UITableView+CellContent.m"; sourceTree = "<group>"; };
|
631B9239A14B8849600FF2BE44308CD2 /* UITableView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+CellContent.m"; path = "Roxas/UITableView+CellContent.m"; sourceTree = "<group>"; };
|
||||||
63413445A679C0467BDE3CAE89B94D34 /* STPrivilegedTask.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = STPrivilegedTask.xcconfig; sourceTree = "<group>"; };
|
63413445A679C0467BDE3CAE89B94D34 /* STPrivilegedTask.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = STPrivilegedTask.xcconfig; sourceTree = "<group>"; };
|
||||||
65625EB922D2287FB6B5065FA82D7CA8 /* RSTPlaceholderView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTPlaceholderView.xib; path = Roxas/RSTPlaceholderView.xib; sourceTree = "<group>"; };
|
65625EB922D2287FB6B5065FA82D7CA8 /* RSTPlaceholderView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTPlaceholderView.xib; path = Roxas/RSTPlaceholderView.xib; sourceTree = "<group>"; };
|
||||||
@@ -626,11 +646,9 @@
|
|||||||
6701293BB9F23B8CF472B900EFFCDE04 /* NSError+ALTErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSError+ALTErrors.m"; sourceTree = "<group>"; };
|
6701293BB9F23B8CF472B900EFFCDE04 /* NSError+ALTErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSError+ALTErrors.m"; sourceTree = "<group>"; };
|
||||||
676644EB1805E96CE47F7882733262B3 /* libPods-AltStore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-AltStore.a"; path = "libPods-AltStore.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
676644EB1805E96CE47F7882733262B3 /* libPods-AltStore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-AltStore.a"; path = "libPods-AltStore.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
67DF21072AF32876EAA108A94774E489 /* bn.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bn.h; path = Dependencies/OpenSSL/ios/include/openssl/bn.h; sourceTree = "<group>"; };
|
67DF21072AF32876EAA108A94774E489 /* bn.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bn.h; path = Dependencies/OpenSSL/ios/include/openssl/bn.h; sourceTree = "<group>"; };
|
||||||
67F9C672B6F11F0BC41900AED4C10DE0 /* Pods-AltServer-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltServer-acknowledgements.markdown"; sourceTree = "<group>"; };
|
|
||||||
6858F0A591CF832F5B248EE55B17F5A0 /* RSTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTError.m; path = Roxas/RSTError.m; sourceTree = "<group>"; };
|
6858F0A591CF832F5B248EE55B17F5A0 /* RSTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTError.m; path = Roxas/RSTError.m; sourceTree = "<group>"; };
|
||||||
68D8D3A708227C0506574E6358D79A3D /* ALTAppGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppGroup.h; sourceTree = "<group>"; };
|
68D8D3A708227C0506574E6358D79A3D /* ALTAppGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppGroup.h; sourceTree = "<group>"; };
|
||||||
694E6932887B1C0D0912130564BB474B /* asn1t.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = asn1t.h; path = Dependencies/OpenSSL/ios/include/openssl/asn1t.h; sourceTree = "<group>"; };
|
694E6932887B1C0D0912130564BB474B /* asn1t.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = asn1t.h; path = Dependencies/OpenSSL/ios/include/openssl/asn1t.h; sourceTree = "<group>"; };
|
||||||
695286014335265E05C28AD7B887F02F /* Pods-AltStore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltStore-umbrella.h"; sourceTree = "<group>"; };
|
|
||||||
69BC2DC6AC50B0C61B4F7E90078ECBCB /* cc_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_priv.h; path = Dependencies/corecrypto/cc_priv.h; sourceTree = "<group>"; };
|
69BC2DC6AC50B0C61B4F7E90078ECBCB /* cc_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc_priv.h; path = Dependencies/corecrypto/cc_priv.h; sourceTree = "<group>"; };
|
||||||
69BCF448A4351DCC0562F34132ABDD71 /* SUVersionComparisonProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionComparisonProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h; sourceTree = "<group>"; };
|
69BCF448A4351DCC0562F34132ABDD71 /* SUVersionComparisonProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionComparisonProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h; sourceTree = "<group>"; };
|
||||||
69ECB6396AFAB0A666321652A0E61F09 /* RSTOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation.h; path = Roxas/RSTOperation.h; sourceTree = "<group>"; };
|
69ECB6396AFAB0A666321652A0E61F09 /* RSTOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation.h; path = Roxas/RSTOperation.h; sourceTree = "<group>"; };
|
||||||
@@ -642,6 +660,7 @@
|
|||||||
6E2FE91417F00A47CBBD4CAFC7944947 /* UICollectionViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+CellContent.h"; path = "Roxas/UICollectionViewCell+CellContent.h"; sourceTree = "<group>"; };
|
6E2FE91417F00A47CBBD4CAFC7944947 /* UICollectionViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+CellContent.h"; path = "Roxas/UICollectionViewCell+CellContent.h"; sourceTree = "<group>"; };
|
||||||
6E64CA484C441CC0643B335135212607 /* RSTNibView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNibView.h; path = Roxas/RSTNibView.h; sourceTree = "<group>"; };
|
6E64CA484C441CC0643B335135212607 /* RSTNibView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNibView.h; path = Roxas/RSTNibView.h; sourceTree = "<group>"; };
|
||||||
6E917D3B3ADB864E9C69574812B5733D /* UIView+AnimatedHide.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnimatedHide.m"; path = "Roxas/UIView+AnimatedHide.m"; sourceTree = "<group>"; };
|
6E917D3B3ADB864E9C69574812B5733D /* UIView+AnimatedHide.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnimatedHide.m"; path = "Roxas/UIView+AnimatedHide.m"; sourceTree = "<group>"; };
|
||||||
|
702E803654797D70C915837AF7D76C6B /* Pods-AltServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-Info.plist"; sourceTree = "<group>"; };
|
||||||
705EFF4E047D0012135E9FC6B039DAAE /* UICollectionViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+CellContent.m"; path = "Roxas/UICollectionViewCell+CellContent.m"; sourceTree = "<group>"; };
|
705EFF4E047D0012135E9FC6B039DAAE /* UICollectionViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+CellContent.m"; path = "Roxas/UICollectionViewCell+CellContent.m"; sourceTree = "<group>"; };
|
||||||
709FED73AB0971FF10898C166D5C34DD /* pkcs12.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pkcs12.h; path = Dependencies/OpenSSL/ios/include/openssl/pkcs12.h; sourceTree = "<group>"; };
|
709FED73AB0971FF10898C166D5C34DD /* pkcs12.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = pkcs12.h; path = Dependencies/OpenSSL/ios/include/openssl/pkcs12.h; sourceTree = "<group>"; };
|
||||||
71121C9D9F2640ECC1FAA0F3FCDA607F /* SUStandardVersionComparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUStandardVersionComparator.h; path = Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h; sourceTree = "<group>"; };
|
71121C9D9F2640ECC1FAA0F3FCDA607F /* SUStandardVersionComparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUStandardVersionComparator.h; path = Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h; sourceTree = "<group>"; };
|
||||||
@@ -656,8 +675,10 @@
|
|||||||
7861F7E486DBFDA791F172183A52B4CF /* ccecies.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccecies.h; path = Dependencies/corecrypto/ccecies.h; sourceTree = "<group>"; };
|
7861F7E486DBFDA791F172183A52B4CF /* ccecies.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccecies.h; path = Dependencies/corecrypto/ccecies.h; sourceTree = "<group>"; };
|
||||||
7870A8AD5E4B6B18B10B9DD5A40084E5 /* UICollectionViewCell+Nibs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+Nibs.m"; path = "Roxas/UICollectionViewCell+Nibs.m"; sourceTree = "<group>"; };
|
7870A8AD5E4B6B18B10B9DD5A40084E5 /* UICollectionViewCell+Nibs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+Nibs.m"; path = "Roxas/UICollectionViewCell+Nibs.m"; sourceTree = "<group>"; };
|
||||||
79926042DA0FE3AC31BE54B760B6F908 /* Key.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Key.h; sourceTree = "<group>"; };
|
79926042DA0FE3AC31BE54B760B6F908 /* Key.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Key.h; sourceTree = "<group>"; };
|
||||||
|
79DC23F753EEAEA1F99B4F772AC87CEB /* Pods-AltDaemon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltDaemon.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
7AC3A57327833C46EF9AEA88A5664D69 /* ALTModel+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ALTModel+Internal.h"; sourceTree = "<group>"; };
|
7AC3A57327833C46EF9AEA88A5664D69 /* ALTModel+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ALTModel+Internal.h"; sourceTree = "<group>"; };
|
||||||
7AC49781BB0CCCCFBFFF6EEFB0867FEF /* ccmd2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmd2.h; path = Dependencies/corecrypto/ccmd2.h; sourceTree = "<group>"; };
|
7AC49781BB0CCCCFBFFF6EEFB0867FEF /* ccmd2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmd2.h; path = Dependencies/corecrypto/ccmd2.h; sourceTree = "<group>"; };
|
||||||
|
7B51BFE6F7A28BF6D5614373C24DB981 /* Pods-AltStore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltStore-umbrella.h"; sourceTree = "<group>"; };
|
||||||
7B937B69AB1B177FA5B33FAC4EF2B1F9 /* ALTAppID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppID.h; sourceTree = "<group>"; };
|
7B937B69AB1B177FA5B33FAC4EF2B1F9 /* ALTAppID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAppID.h; sourceTree = "<group>"; };
|
||||||
7B93E8672E3990ED78D813FADC50EECF /* ssl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = Dependencies/OpenSSL/ios/include/openssl/ssl.h; sourceTree = "<group>"; };
|
7B93E8672E3990ED78D813FADC50EECF /* ssl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ssl.h; path = Dependencies/OpenSSL/ios/include/openssl/ssl.h; sourceTree = "<group>"; };
|
||||||
7C02717986AF7E99DD42B70931BDE20A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; };
|
7C02717986AF7E99DD42B70931BDE20A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
@@ -675,8 +696,9 @@
|
|||||||
81B1303346FA0756C50186333EFB1F84 /* AppCenterCrashes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppCenterCrashes.framework; path = "AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework"; sourceTree = "<group>"; };
|
81B1303346FA0756C50186333EFB1F84 /* AppCenterCrashes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppCenterCrashes.framework; path = "AppCenter-SDK-Apple/iOS/AppCenterCrashes.framework"; sourceTree = "<group>"; };
|
||||||
81FEA74DB1902FB97CE333C1CEDB224A /* ccrng_system.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_system.h; path = Dependencies/corecrypto/ccrng_system.h; sourceTree = "<group>"; };
|
81FEA74DB1902FB97CE333C1CEDB224A /* ccrng_system.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrng_system.h; path = Dependencies/corecrypto/ccrng_system.h; sourceTree = "<group>"; };
|
||||||
82341B13B5AF5BB883018AF6C0C29A35 /* Uid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Uid.h; sourceTree = "<group>"; };
|
82341B13B5AF5BB883018AF6C0C29A35 /* Uid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Uid.h; sourceTree = "<group>"; };
|
||||||
827E121948344EAD1A1BAD926CD89E2C /* Pods-AltServer-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-acknowledgements.plist"; sourceTree = "<group>"; };
|
82392F6B02D2A2D62197B66C2056B9B9 /* Pods-AltStore-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltStore-resources.sh"; sourceTree = "<group>"; };
|
||||||
82BCE1984F56DA8A1D3B838D10199799 /* NSUserDefaults+DynamicProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+DynamicProperties.h"; path = "Roxas/NSUserDefaults+DynamicProperties.h"; sourceTree = "<group>"; };
|
82BCE1984F56DA8A1D3B838D10199799 /* NSUserDefaults+DynamicProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+DynamicProperties.h"; path = "Roxas/NSUserDefaults+DynamicProperties.h"; sourceTree = "<group>"; };
|
||||||
|
83727454E3DD81F758E0BDADE642B5C9 /* Pods-AltDaemon-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltDaemon-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||||
83BB07F284FD8A5C58CFAFC534D68D48 /* ALTAnisetteData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTAnisetteData.m; sourceTree = "<group>"; };
|
83BB07F284FD8A5C58CFAFC534D68D48 /* ALTAnisetteData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTAnisetteData.m; sourceTree = "<group>"; };
|
||||||
863044A19021CE9383C742A072B8641C /* UICollectionView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+CellContent.h"; path = "Roxas/UICollectionView+CellContent.h"; sourceTree = "<group>"; };
|
863044A19021CE9383C742A072B8641C /* UICollectionView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+CellContent.h"; path = "Roxas/UICollectionView+CellContent.h"; sourceTree = "<group>"; };
|
||||||
86BC9D65F62DE91B357F9221B01D3DD9 /* KeychainAccess.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = KeychainAccess.modulemap; sourceTree = "<group>"; };
|
86BC9D65F62DE91B357F9221B01D3DD9 /* KeychainAccess.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = KeychainAccess.modulemap; sourceTree = "<group>"; };
|
||||||
@@ -699,14 +721,12 @@
|
|||||||
8C8CB396F5F3F3E83C4FCE36B8954F1B /* zip.c */ = {isa = PBXFileReference; includeInIndex = 1; name = zip.c; path = Dependencies/minizip/zip.c; sourceTree = "<group>"; };
|
8C8CB396F5F3F3E83C4FCE36B8954F1B /* zip.c */ = {isa = PBXFileReference; includeInIndex = 1; name = zip.c; path = Dependencies/minizip/zip.c; sourceTree = "<group>"; };
|
||||||
8D56DC21CF454680EB780E780B5BC4A3 /* RSTRelationshipPreservingMergePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTRelationshipPreservingMergePolicy.h; path = Roxas/RSTRelationshipPreservingMergePolicy.h; sourceTree = "<group>"; };
|
8D56DC21CF454680EB780E780B5BC4A3 /* RSTRelationshipPreservingMergePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTRelationshipPreservingMergePolicy.h; path = Roxas/RSTRelationshipPreservingMergePolicy.h; sourceTree = "<group>"; };
|
||||||
8DC59D60A54C55B6E1685B2CAB5D5A35 /* SUVersionDisplayProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionDisplayProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h; sourceTree = "<group>"; };
|
8DC59D60A54C55B6E1685B2CAB5D5A35 /* SUVersionDisplayProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionDisplayProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h; sourceTree = "<group>"; };
|
||||||
8E59788A401232096F8BFE2CF38011B3 /* Pods-AltStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
8E59C3A64EF23452AA58698B0F5F2A39 /* RSTToastView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTToastView.h; path = Roxas/RSTToastView.h; sourceTree = "<group>"; };
|
8E59C3A64EF23452AA58698B0F5F2A39 /* RSTToastView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTToastView.h; path = Roxas/RSTToastView.h; sourceTree = "<group>"; };
|
||||||
8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods_AltServer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_AltServer.framework; path = "Pods-AltServer.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods_AltServer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_AltServer.framework; path = "Pods-AltServer.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
8F5832C9D79544C20373B7A1438E6671 /* AltSign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AltSign.h; path = AltSign/AltSign.h; sourceTree = "<group>"; };
|
8F5832C9D79544C20373B7A1438E6671 /* AltSign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AltSign.h; path = AltSign/AltSign.h; sourceTree = "<group>"; };
|
||||||
8F5E1856E53AF0DB69BD508F9A6D3D10 /* opensslconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = opensslconf.h; path = Dependencies/OpenSSL/ios/include/openssl/opensslconf.h; sourceTree = "<group>"; };
|
8F5E1856E53AF0DB69BD508F9A6D3D10 /* opensslconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = opensslconf.h; path = Dependencies/OpenSSL/ios/include/openssl/opensslconf.h; sourceTree = "<group>"; };
|
||||||
903DA55629D1B8B8172C106D1027247B /* ccec25519_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccec25519_priv.h; path = Dependencies/corecrypto/ccec25519_priv.h; sourceTree = "<group>"; };
|
903DA55629D1B8B8172C106D1027247B /* ccec25519_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccec25519_priv.h; path = Dependencies/corecrypto/ccec25519_priv.h; sourceTree = "<group>"; };
|
||||||
911AB656234F15A99CA82B25BA46A6DF /* cc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc.h; path = Dependencies/corecrypto/cc.h; sourceTree = "<group>"; };
|
911AB656234F15A99CA82B25BA46A6DF /* cc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cc.h; path = Dependencies/corecrypto/cc.h; sourceTree = "<group>"; };
|
||||||
91203FEFD09BD6533A223ACCB6D53735 /* Pods-AltServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-Info.plist"; sourceTree = "<group>"; };
|
|
||||||
91372A6AD9FBF98E332A9431BA39D4D1 /* RSTNibView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNibView.m; path = Roxas/RSTNibView.m; sourceTree = "<group>"; };
|
91372A6AD9FBF98E332A9431BA39D4D1 /* RSTNibView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNibView.m; path = Roxas/RSTNibView.m; sourceTree = "<group>"; };
|
||||||
92199C8E1E8E1DFC2347DB246CA7F1DA /* ImagePreheater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePreheater.swift; path = Sources/ImagePreheater.swift; sourceTree = "<group>"; };
|
92199C8E1E8E1DFC2347DB246CA7F1DA /* ImagePreheater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePreheater.swift; path = Sources/ImagePreheater.swift; sourceTree = "<group>"; };
|
||||||
92B239E2FA94463894D8553410190216 /* plist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = plist.h; sourceTree = "<group>"; };
|
92B239E2FA94463894D8553410190216 /* plist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = plist.h; sourceTree = "<group>"; };
|
||||||
@@ -728,6 +748,7 @@
|
|||||||
99A34B91E3966B3C42216C9E4A2D4CFF /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Dependencies/OpenSSL/ios/include/openssl/ecdsa.h; sourceTree = "<group>"; };
|
99A34B91E3966B3C42216C9E4A2D4CFF /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Dependencies/OpenSSL/ios/include/openssl/ecdsa.h; sourceTree = "<group>"; };
|
||||||
99C7B66B038F2B0D0975A387F4E73F29 /* ccchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccchacha20poly1305.h; path = Dependencies/corecrypto/ccchacha20poly1305.h; sourceTree = "<group>"; };
|
99C7B66B038F2B0D0975A387F4E73F29 /* ccchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccchacha20poly1305.h; path = Dependencies/corecrypto/ccchacha20poly1305.h; sourceTree = "<group>"; };
|
||||||
9A43A3EB159CA9C66ED383CAB0E128A6 /* ossl_typ.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ossl_typ.h; path = Dependencies/OpenSSL/ios/include/openssl/ossl_typ.h; sourceTree = "<group>"; };
|
9A43A3EB159CA9C66ED383CAB0E128A6 /* ossl_typ.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ossl_typ.h; path = Dependencies/OpenSSL/ios/include/openssl/ossl_typ.h; sourceTree = "<group>"; };
|
||||||
|
9A5F712C8D5959F1E477A2D285AB9A07 /* Pods-AltServer-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltServer-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||||
9A69C6F20E3BBAE1C8C90A58CBA3DB0C /* ALTAccount.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAccount.h; sourceTree = "<group>"; };
|
9A69C6F20E3BBAE1C8C90A58CBA3DB0C /* ALTAccount.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAccount.h; sourceTree = "<group>"; };
|
||||||
9A8A48D68CE5B5EF610D60AE61C9F584 /* unzip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = unzip.h; path = Dependencies/minizip/unzip.h; sourceTree = "<group>"; };
|
9A8A48D68CE5B5EF610D60AE61C9F584 /* unzip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = unzip.h; path = Dependencies/minizip/unzip.h; sourceTree = "<group>"; };
|
||||||
9ACE8C95ED09F41B08C4DF0B178B37EA /* objects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = objects.h; path = Dependencies/OpenSSL/ios/include/openssl/objects.h; sourceTree = "<group>"; };
|
9ACE8C95ED09F41B08C4DF0B178B37EA /* objects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = objects.h; path = Dependencies/OpenSSL/ios/include/openssl/objects.h; sourceTree = "<group>"; };
|
||||||
@@ -753,8 +774,8 @@
|
|||||||
A65888B0E090B10E6170D43D8E1C0F6F /* STPrivilegedTask-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "STPrivilegedTask-Info.plist"; sourceTree = "<group>"; };
|
A65888B0E090B10E6170D43D8E1C0F6F /* STPrivilegedTask-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "STPrivilegedTask-Info.plist"; sourceTree = "<group>"; };
|
||||||
A6C7A3F8405342E0CFCF2C6C5F9B0A3D /* dh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dh.h; path = Dependencies/OpenSSL/ios/include/openssl/dh.h; sourceTree = "<group>"; };
|
A6C7A3F8405342E0CFCF2C6C5F9B0A3D /* dh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dh.h; path = Dependencies/OpenSSL/ios/include/openssl/dh.h; sourceTree = "<group>"; };
|
||||||
A6CB7BCDAD00CC9657632FA0DF9599EC /* ccdh_gp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdh_gp.h; path = Dependencies/corecrypto/ccdh_gp.h; sourceTree = "<group>"; };
|
A6CB7BCDAD00CC9657632FA0DF9599EC /* ccdh_gp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdh_gp.h; path = Dependencies/corecrypto/ccdh_gp.h; sourceTree = "<group>"; };
|
||||||
|
A79744C0D952ADD34EC8CCD2D1501838 /* Pods-AltServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
A8093B399024794431159E69E5C18C92 /* ccmode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmode.h; path = Dependencies/corecrypto/ccmode.h; sourceTree = "<group>"; };
|
A8093B399024794431159E69E5C18C92 /* ccmode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmode.h; path = Dependencies/corecrypto/ccmode.h; sourceTree = "<group>"; };
|
||||||
A82A21359DA7189002E88491D87FB6BE /* Pods-AltStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
A8918968EFD5B0DD448B57256A730D5A /* RSTCellContentChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChange.h; path = Roxas/RSTCellContentChange.h; sourceTree = "<group>"; };
|
A8918968EFD5B0DD448B57256A730D5A /* RSTCellContentChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChange.h; path = Roxas/RSTCellContentChange.h; sourceTree = "<group>"; };
|
||||||
AA460D4136BE705CF537D99DB76207FF /* ALTAnisetteData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAnisetteData.h; sourceTree = "<group>"; };
|
AA460D4136BE705CF537D99DB76207FF /* ALTAnisetteData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTAnisetteData.h; sourceTree = "<group>"; };
|
||||||
AA7D8EE75A3FE7F4EB2ECBCABDA9330D /* ccchacha20poly1305_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccchacha20poly1305_priv.h; path = Dependencies/corecrypto/ccchacha20poly1305_priv.h; sourceTree = "<group>"; };
|
AA7D8EE75A3FE7F4EB2ECBCABDA9330D /* ccchacha20poly1305_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccchacha20poly1305_priv.h; path = Dependencies/corecrypto/ccchacha20poly1305_priv.h; sourceTree = "<group>"; };
|
||||||
@@ -782,11 +803,11 @@
|
|||||||
B831FF60290BCF3108FDBC1BD6525103 /* Dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Dictionary.h; sourceTree = "<group>"; };
|
B831FF60290BCF3108FDBC1BD6525103 /* Dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Dictionary.h; sourceTree = "<group>"; };
|
||||||
B87FE5286C1FD482F82C01FCB38DB158 /* ccrc4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrc4.h; path = Dependencies/corecrypto/ccrc4.h; sourceTree = "<group>"; };
|
B87FE5286C1FD482F82C01FCB38DB158 /* ccrc4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrc4.h; path = Dependencies/corecrypto/ccrc4.h; sourceTree = "<group>"; };
|
||||||
B88B0C4661B00E43F453B1A81826157A /* STPrivilegedTask-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-umbrella.h"; sourceTree = "<group>"; };
|
B88B0C4661B00E43F453B1A81826157A /* STPrivilegedTask-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-umbrella.h"; sourceTree = "<group>"; };
|
||||||
|
B8B4E51528ACF4ED0E62FD2946936A77 /* Pods-AltServer-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltServer-frameworks.sh"; sourceTree = "<group>"; };
|
||||||
B9B1CEF2EED0B01E64AB78B582825997 /* ALTApplication.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = ALTApplication.mm; sourceTree = "<group>"; };
|
B9B1CEF2EED0B01E64AB78B582825997 /* ALTApplication.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = ALTApplication.mm; sourceTree = "<group>"; };
|
||||||
B9C77F574EE4D8FCC56A32497585256D /* ccdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdh.h; path = Dependencies/corecrypto/ccdh.h; sourceTree = "<group>"; };
|
B9C77F574EE4D8FCC56A32497585256D /* ccdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdh.h; path = Dependencies/corecrypto/ccdh.h; sourceTree = "<group>"; };
|
||||||
BAF50E693DDCD83078B5CA7F1DA5D5B8 /* ALTAppleAPISession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTAppleAPISession.m; sourceTree = "<group>"; };
|
BAF50E693DDCD83078B5CA7F1DA5D5B8 /* ALTAppleAPISession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ALTAppleAPISession.m; sourceTree = "<group>"; };
|
||||||
BB3E62EAAE23B1F6A4465CC181048F4E /* ALTApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTApplication.h; sourceTree = "<group>"; };
|
BB3E62EAAE23B1F6A4465CC181048F4E /* ALTApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ALTApplication.h; sourceTree = "<group>"; };
|
||||||
BC6F74406EF976ECC3669BD38B0ECED4 /* Pods-AltServer-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltServer-frameworks.sh"; sourceTree = "<group>"; };
|
|
||||||
BD03248F0F2BB2C459A7CC45CDF38647 /* RSTHasher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHasher.m; path = Roxas/RSTHasher.m; sourceTree = "<group>"; };
|
BD03248F0F2BB2C459A7CC45CDF38647 /* RSTHasher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHasher.m; path = Roxas/RSTHasher.m; sourceTree = "<group>"; };
|
||||||
BE3254B479A7B3EC6F741494E430EA42 /* ioapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ioapi.h; path = Dependencies/minizip/ioapi.h; sourceTree = "<group>"; };
|
BE3254B479A7B3EC6F741494E430EA42 /* ioapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ioapi.h; path = Dependencies/minizip/ioapi.h; sourceTree = "<group>"; };
|
||||||
BE86423754DE6F326E05DA81C8610E5B /* ccrsa_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrsa_priv.h; path = Dependencies/corecrypto/ccrsa_priv.h; sourceTree = "<group>"; };
|
BE86423754DE6F326E05DA81C8610E5B /* ccrsa_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccrsa_priv.h; path = Dependencies/corecrypto/ccrsa_priv.h; sourceTree = "<group>"; };
|
||||||
@@ -794,7 +815,6 @@
|
|||||||
BEFC63944685F87ABCA6731E33ECA843 /* RSTSeparatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSeparatorView.h; path = Roxas/RSTSeparatorView.h; sourceTree = "<group>"; };
|
BEFC63944685F87ABCA6731E33ECA843 /* RSTSeparatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSeparatorView.h; path = Roxas/RSTSeparatorView.h; sourceTree = "<group>"; };
|
||||||
BF327FF6D10BE735B3541D8135486FAC /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/ImageCache.swift; sourceTree = "<group>"; };
|
BF327FF6D10BE735B3541D8135486FAC /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/ImageCache.swift; sourceTree = "<group>"; };
|
||||||
BFC87DA394F783CD7D6834276283DE6F /* ImageRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageRequest.swift; path = Sources/ImageRequest.swift; sourceTree = "<group>"; };
|
BFC87DA394F783CD7D6834276283DE6F /* ImageRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageRequest.swift; path = Sources/ImageRequest.swift; sourceTree = "<group>"; };
|
||||||
C0D26B225AB108A39AD161E5C626DFCA /* Pods-AltStore-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltStore-resources.sh"; sourceTree = "<group>"; };
|
|
||||||
C1E18A24C4A563BC4DDCA5EF6254C778 /* mztools.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mztools.h; path = Dependencies/minizip/mztools.h; sourceTree = "<group>"; };
|
C1E18A24C4A563BC4DDCA5EF6254C778 /* mztools.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mztools.h; path = Dependencies/minizip/mztools.h; sourceTree = "<group>"; };
|
||||||
C1EBD0BA39E3F8B25F16880B710E2C5B /* opensslconf-armv7s.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "opensslconf-armv7s.h"; path = "Dependencies/OpenSSL/ios/include/openssl/opensslconf-armv7s.h"; sourceTree = "<group>"; };
|
C1EBD0BA39E3F8B25F16880B710E2C5B /* opensslconf-armv7s.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "opensslconf-armv7s.h"; path = "Dependencies/OpenSSL/ios/include/openssl/opensslconf-armv7s.h"; sourceTree = "<group>"; };
|
||||||
C208E8E78D20910EAC3E2EF269C195EC /* SUAppcastItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcastItem.h; path = Sparkle.framework/Versions/A/Headers/SUAppcastItem.h; sourceTree = "<group>"; };
|
C208E8E78D20910EAC3E2EF269C195EC /* SUAppcastItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcastItem.h; path = Sparkle.framework/Versions/A/Headers/SUAppcastItem.h; sourceTree = "<group>"; };
|
||||||
@@ -804,11 +824,13 @@
|
|||||||
C4F3A4BFDFD12AB4EB01F4BCA312A94D /* crypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypt.h; path = Dependencies/minizip/crypt.h; sourceTree = "<group>"; };
|
C4F3A4BFDFD12AB4EB01F4BCA312A94D /* crypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypt.h; path = Dependencies/minizip/crypt.h; sourceTree = "<group>"; };
|
||||||
C50FB407DB2A72F5D827B19042A714F8 /* rc4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = rc4.h; path = Dependencies/OpenSSL/ios/include/openssl/rc4.h; sourceTree = "<group>"; };
|
C50FB407DB2A72F5D827B19042A714F8 /* rc4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = rc4.h; path = Dependencies/OpenSSL/ios/include/openssl/rc4.h; sourceTree = "<group>"; };
|
||||||
C556A67CD97EE39683D31C0B9F0918EB /* ccn.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccn.h; path = Dependencies/corecrypto/ccn.h; sourceTree = "<group>"; };
|
C556A67CD97EE39683D31C0B9F0918EB /* ccn.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccn.h; path = Dependencies/corecrypto/ccn.h; sourceTree = "<group>"; };
|
||||||
|
C63B22556372BD6A596092190AC874E3 /* Pods-AltServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltServer-dummy.m"; sourceTree = "<group>"; };
|
||||||
C65850A307D6D5D8B9CBB2C7795093CC /* ccdrbg_factory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdrbg_factory.h; path = Dependencies/corecrypto/ccdrbg_factory.h; sourceTree = "<group>"; };
|
C65850A307D6D5D8B9CBB2C7795093CC /* ccdrbg_factory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdrbg_factory.h; path = Dependencies/corecrypto/ccdrbg_factory.h; sourceTree = "<group>"; };
|
||||||
C72FC0FB6B8986A4FB1980229B73DDEE /* mztools.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mztools.c; path = Dependencies/minizip/mztools.c; sourceTree = "<group>"; };
|
C72FC0FB6B8986A4FB1980229B73DDEE /* mztools.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mztools.c; path = Dependencies/minizip/mztools.c; sourceTree = "<group>"; };
|
||||||
C7C523F13B0698E9E1E0C8BC56663CDD /* RSTCellContentDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentDataSource.m; path = Roxas/RSTCellContentDataSource.m; sourceTree = "<group>"; };
|
C7C523F13B0698E9E1E0C8BC56663CDD /* RSTCellContentDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentDataSource.m; path = Roxas/RSTCellContentDataSource.m; sourceTree = "<group>"; };
|
||||||
C8158E0DE7EA9639894587255DB9F03C /* fipspost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fipspost.h; path = Dependencies/corecrypto/fipspost.h; sourceTree = "<group>"; };
|
C8158E0DE7EA9639894587255DB9F03C /* fipspost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fipspost.h; path = Dependencies/corecrypto/fipspost.h; sourceTree = "<group>"; };
|
||||||
C906AF9E4AF1DA84489A450180EE84AE /* node.c */ = {isa = PBXFileReference; includeInIndex = 1; path = node.c; sourceTree = "<group>"; };
|
C906AF9E4AF1DA84489A450180EE84AE /* node.c */ = {isa = PBXFileReference; includeInIndex = 1; path = node.c; sourceTree = "<group>"; };
|
||||||
|
C9132C40CB4837DADEB046E727F867FB /* Pods-AltStore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltStore-dummy.m"; sourceTree = "<group>"; };
|
||||||
CA894C38E3874FEC9FCD1A4BC67184F7 /* RSTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTError.h; path = Roxas/RSTError.h; sourceTree = "<group>"; };
|
CA894C38E3874FEC9FCD1A4BC67184F7 /* RSTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTError.h; path = Roxas/RSTError.h; sourceTree = "<group>"; };
|
||||||
CB4FFC20503BA7993FDFB654063591EC /* cchkdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cchkdf.h; path = Dependencies/corecrypto/cchkdf.h; sourceTree = "<group>"; };
|
CB4FFC20503BA7993FDFB654063591EC /* cchkdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cchkdf.h; path = Dependencies/corecrypto/cchkdf.h; sourceTree = "<group>"; };
|
||||||
CB732A4A4314642DEF76FAB814B59DF8 /* SUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdater.h; path = Sparkle.framework/Versions/A/Headers/SUUpdater.h; sourceTree = "<group>"; };
|
CB732A4A4314642DEF76FAB814B59DF8 /* SUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdater.h; path = Sparkle.framework/Versions/A/Headers/SUUpdater.h; sourceTree = "<group>"; };
|
||||||
@@ -846,18 +868,17 @@
|
|||||||
E57351A0D30872C6AADDD2E5294EF95A /* ocsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = Dependencies/OpenSSL/ios/include/openssl/ocsp.h; sourceTree = "<group>"; };
|
E57351A0D30872C6AADDD2E5294EF95A /* ocsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ocsp.h; path = Dependencies/OpenSSL/ios/include/openssl/ocsp.h; sourceTree = "<group>"; };
|
||||||
E58E9ACAA603F0479C9159E248BDD542 /* bio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bio.h; path = Dependencies/OpenSSL/ios/include/openssl/bio.h; sourceTree = "<group>"; };
|
E58E9ACAA603F0479C9159E248BDD542 /* bio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bio.h; path = Dependencies/OpenSSL/ios/include/openssl/bio.h; sourceTree = "<group>"; };
|
||||||
E6064D2203D88A9ACE189177C3722660 /* NSPredicate+Search.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSPredicate+Search.h"; path = "Roxas/NSPredicate+Search.h"; sourceTree = "<group>"; };
|
E6064D2203D88A9ACE189177C3722660 /* NSPredicate+Search.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSPredicate+Search.h"; path = "Roxas/NSPredicate+Search.h"; sourceTree = "<group>"; };
|
||||||
|
E6C49955A91A9BF96052D43477EE8A79 /* Pods-AltServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltServer-umbrella.h"; sourceTree = "<group>"; };
|
||||||
E7223D60AEAF953DAF7871518753EBB9 /* RSTPersistentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPersistentContainer.m; path = Roxas/RSTPersistentContainer.m; sourceTree = "<group>"; };
|
E7223D60AEAF953DAF7871518753EBB9 /* RSTPersistentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPersistentContainer.m; path = Roxas/RSTPersistentContainer.m; sourceTree = "<group>"; };
|
||||||
E7709D93E2CB7C73F6D5FA5E3032EAC6 /* AltSign.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = AltSign.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
E7709D93E2CB7C73F6D5FA5E3032EAC6 /* AltSign.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = AltSign.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||||
E77CC6E8557F17BBC9A36A2847A51100 /* RSTArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTArrayDataSource.h; path = Roxas/RSTArrayDataSource.h; sourceTree = "<group>"; };
|
E77CC6E8557F17BBC9A36A2847A51100 /* RSTArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTArrayDataSource.h; path = Roxas/RSTArrayDataSource.h; sourceTree = "<group>"; };
|
||||||
E8196FCC04FA21317C838435B5F4FCA1 /* RSTTintedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTTintedImageView.h; path = Roxas/RSTTintedImageView.h; sourceTree = "<group>"; };
|
E8196FCC04FA21317C838435B5F4FCA1 /* RSTTintedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTTintedImageView.h; path = Roxas/RSTTintedImageView.h; sourceTree = "<group>"; };
|
||||||
E8434827ABB58D1C0275F5BDE3717F16 /* Pods-AltServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltServer-dummy.m"; sourceTree = "<group>"; };
|
|
||||||
E8EE7F078656FABB8F6821D10FF994BB /* libKeychainAccess.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libKeychainAccess.a; path = libKeychainAccess.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
E8EE7F078656FABB8F6821D10FF994BB /* libKeychainAccess.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libKeychainAccess.a; path = libKeychainAccess.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
E92A1B8716EB4DF6BF0A824E1662069E /* ccmode_siv_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmode_siv_priv.h; path = Dependencies/corecrypto/ccmode_siv_priv.h; sourceTree = "<group>"; };
|
E92A1B8716EB4DF6BF0A824E1662069E /* ccmode_siv_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccmode_siv_priv.h; path = Dependencies/corecrypto/ccmode_siv_priv.h; sourceTree = "<group>"; };
|
||||||
E9AB7E00EF57815340C28751AFAD3798 /* ptrarray.c */ = {isa = PBXFileReference; includeInIndex = 1; path = ptrarray.c; sourceTree = "<group>"; };
|
E9AB7E00EF57815340C28751AFAD3798 /* ptrarray.c */ = {isa = PBXFileReference; includeInIndex = 1; path = ptrarray.c; sourceTree = "<group>"; };
|
||||||
EA706258C6F1B1F2B19EF8197E8F4349 /* unzip.c */ = {isa = PBXFileReference; includeInIndex = 1; name = unzip.c; path = Dependencies/minizip/unzip.c; sourceTree = "<group>"; };
|
EA706258C6F1B1F2B19EF8197E8F4349 /* unzip.c */ = {isa = PBXFileReference; includeInIndex = 1; name = unzip.c; path = Dependencies/minizip/unzip.c; sourceTree = "<group>"; };
|
||||||
EB20FCA19FFC2313BFF8BBE3AA934288 /* RSTSearchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSearchController.h; path = Roxas/RSTSearchController.h; sourceTree = "<group>"; };
|
EB20FCA19FFC2313BFF8BBE3AA934288 /* RSTSearchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSearchController.h; path = Roxas/RSTSearchController.h; sourceTree = "<group>"; };
|
||||||
EB343A74480E905489EFD2CBA6F6339E /* ImagePipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipeline.swift; path = Sources/ImagePipeline.swift; sourceTree = "<group>"; };
|
EB343A74480E905489EFD2CBA6F6339E /* ImagePipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipeline.swift; path = Sources/ImagePipeline.swift; sourceTree = "<group>"; };
|
||||||
EC9F77AC7ECBA94225DE401B6A8004F2 /* Pods-AltStore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltStore-dummy.m"; sourceTree = "<group>"; };
|
|
||||||
ECB70FB9A0943AD3C24308D934E452AC /* ImageTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTaskMetrics.swift; path = Sources/ImageTaskMetrics.swift; sourceTree = "<group>"; };
|
ECB70FB9A0943AD3C24308D934E452AC /* ImageTaskMetrics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTaskMetrics.swift; path = Sources/ImageTaskMetrics.swift; sourceTree = "<group>"; };
|
||||||
ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = STPrivilegedTask.framework; path = STPrivilegedTask.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = STPrivilegedTask.framework; path = STPrivilegedTask.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
ED35088C8A16722DEF3F72976FF9CEA4 /* ccec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccec.h; path = Dependencies/corecrypto/ccec.h; sourceTree = "<group>"; };
|
ED35088C8A16722DEF3F72976FF9CEA4 /* ccec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccec.h; path = Dependencies/corecrypto/ccec.h; sourceTree = "<group>"; };
|
||||||
@@ -869,6 +890,7 @@
|
|||||||
F255B45E106FBFFFBF10D506992EC655 /* RSTDynamicDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTDynamicDataSource.m; path = Roxas/RSTDynamicDataSource.m; sourceTree = "<group>"; };
|
F255B45E106FBFFFBF10D506992EC655 /* RSTDynamicDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTDynamicDataSource.m; path = Roxas/RSTDynamicDataSource.m; sourceTree = "<group>"; };
|
||||||
F2CF961D1535400D1D9228FD823EE7D9 /* Real.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Real.h; sourceTree = "<group>"; };
|
F2CF961D1535400D1D9228FD823EE7D9 /* Real.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Real.h; sourceTree = "<group>"; };
|
||||||
F35FA9FBDE25A463886F53B66B39A748 /* NSError+ALTErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSError+ALTErrors.h"; sourceTree = "<group>"; };
|
F35FA9FBDE25A463886F53B66B39A748 /* NSError+ALTErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSError+ALTErrors.h"; sourceTree = "<group>"; };
|
||||||
|
F36150F4B2D5DD35C5AE24D34254DD5B /* Pods-AltServer-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||||
F3A77F6E48BAFA480142E4AA3CD6A301 /* UITableViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+CellContent.m"; path = "Roxas/UITableViewCell+CellContent.m"; sourceTree = "<group>"; };
|
F3A77F6E48BAFA480142E4AA3CD6A301 /* UITableViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+CellContent.m"; path = "Roxas/UITableViewCell+CellContent.m"; sourceTree = "<group>"; };
|
||||||
F41304FE31EBAE0769092641DA09FD04 /* ccz_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccz_priv.h; path = Dependencies/corecrypto/ccz_priv.h; sourceTree = "<group>"; };
|
F41304FE31EBAE0769092641DA09FD04 /* ccz_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccz_priv.h; path = Dependencies/corecrypto/ccz_priv.h; sourceTree = "<group>"; };
|
||||||
F456D30A7BC124649CB25DFC1B8C8D83 /* Sparkle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sparkle.h; path = Sparkle.framework/Versions/A/Headers/Sparkle.h; sourceTree = "<group>"; };
|
F456D30A7BC124649CB25DFC1B8C8D83 /* Sparkle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sparkle.h; path = Sparkle.framework/Versions/A/Headers/Sparkle.h; sourceTree = "<group>"; };
|
||||||
@@ -885,13 +907,13 @@
|
|||||||
F9E154EE6519BD64EF44E725EC3AFB89 /* UIImage+Manipulation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Manipulation.m"; path = "Roxas/UIImage+Manipulation.m"; sourceTree = "<group>"; };
|
F9E154EE6519BD64EF44E725EC3AFB89 /* UIImage+Manipulation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Manipulation.m"; path = "Roxas/UIImage+Manipulation.m"; sourceTree = "<group>"; };
|
||||||
FA30F634D3EEACD6C9E258E0551D357A /* STPrivilegedTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STPrivilegedTask.h; sourceTree = "<group>"; };
|
FA30F634D3EEACD6C9E258E0551D357A /* STPrivilegedTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STPrivilegedTask.h; sourceTree = "<group>"; };
|
||||||
FA31890BE5D6782EE2C66D17C3FA5F73 /* RSTOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperationQueue.m; path = Roxas/RSTOperationQueue.m; sourceTree = "<group>"; };
|
FA31890BE5D6782EE2C66D17C3FA5F73 /* RSTOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperationQueue.m; path = Roxas/RSTOperationQueue.m; sourceTree = "<group>"; };
|
||||||
FAED4B69775DE96F8861BCA8BF35E38B /* Pods-AltStore-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltStore-acknowledgements.plist"; sourceTree = "<group>"; };
|
|
||||||
FAFA796C2028D51219FED104E02BBA2E /* ldid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = ldid.cpp; sourceTree = "<group>"; };
|
FAFA796C2028D51219FED104E02BBA2E /* ldid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = ldid.cpp; sourceTree = "<group>"; };
|
||||||
FB0B4256965EEBCC93E6D0A895696520 /* ccdigest_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdigest_priv.h; path = Dependencies/corecrypto/ccdigest_priv.h; sourceTree = "<group>"; };
|
FB0B4256965EEBCC93E6D0A895696520 /* ccdigest_priv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccdigest_priv.h; path = Dependencies/corecrypto/ccdigest_priv.h; sourceTree = "<group>"; };
|
||||||
FB6237E2F93A403AB9147341A339398E /* asn1_mac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = asn1_mac.h; path = Dependencies/OpenSSL/ios/include/openssl/asn1_mac.h; sourceTree = "<group>"; };
|
FB6237E2F93A403AB9147341A339398E /* asn1_mac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = asn1_mac.h; path = Dependencies/OpenSSL/ios/include/openssl/asn1_mac.h; sourceTree = "<group>"; };
|
||||||
FC422EC5FAE52EEE9570A6C6CD463B9C /* UICollectionViewCell+Nibs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+Nibs.h"; path = "Roxas/UICollectionViewCell+Nibs.h"; sourceTree = "<group>"; };
|
FC422EC5FAE52EEE9570A6C6CD463B9C /* UICollectionViewCell+Nibs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+Nibs.h"; path = "Roxas/UICollectionViewCell+Nibs.h"; sourceTree = "<group>"; };
|
||||||
FC9139A28E7A28DDB6875A26A978DCBB /* UIKit+ActivityIndicating.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIKit+ActivityIndicating.m"; path = "Roxas/UIKit+ActivityIndicating.m"; sourceTree = "<group>"; };
|
FC9139A28E7A28DDB6875A26A978DCBB /* UIKit+ActivityIndicating.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIKit+ActivityIndicating.m"; path = "Roxas/UIKit+ActivityIndicating.m"; sourceTree = "<group>"; };
|
||||||
FCEACD7381B4CD496C8776BA4B4DDECD /* cccast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cccast.h; path = Dependencies/corecrypto/cccast.h; sourceTree = "<group>"; };
|
FCEACD7381B4CD496C8776BA4B4DDECD /* cccast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cccast.h; path = Dependencies/corecrypto/cccast.h; sourceTree = "<group>"; };
|
||||||
|
FD54352444A7AFFFB59DA62203AF58BE /* Pods-AltStore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltStore.modulemap"; sourceTree = "<group>"; };
|
||||||
FDBED95D85CFE5DE2E1A73C8BDE40AF8 /* node_list.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = node_list.h; sourceTree = "<group>"; };
|
FDBED95D85CFE5DE2E1A73C8BDE40AF8 /* node_list.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = node_list.h; sourceTree = "<group>"; };
|
||||||
FE3B0942ABD1EF218327EAFDB5930E8F /* ccz.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccz.h; path = Dependencies/corecrypto/ccz.h; sourceTree = "<group>"; };
|
FE3B0942ABD1EF218327EAFDB5930E8F /* ccz.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ccz.h; path = Dependencies/corecrypto/ccz.h; sourceTree = "<group>"; };
|
||||||
FF6A87F5B921A4731A72BAA58BC686B5 /* KeychainAccess-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-umbrella.h"; sourceTree = "<group>"; };
|
FF6A87F5B921A4731A72BAA58BC686B5 /* KeychainAccess-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-umbrella.h"; sourceTree = "<group>"; };
|
||||||
@@ -928,6 +950,13 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
C60D4971328D3B30E809D85DF9AC9C1C /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
DF55D5C41519A5A52DAE534296270AF5 /* Frameworks */ = {
|
DF55D5C41519A5A52DAE534296270AF5 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -1025,6 +1054,20 @@
|
|||||||
path = Sparkle;
|
path = Sparkle;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
21B07EE04CFA7F279AE8450F26AA35AD /* Pods-AltDaemon */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4773ABB518FBF6876DAC8F0AE260A54B /* Pods-AltDaemon-acknowledgements.markdown */,
|
||||||
|
83727454E3DD81F758E0BDADE642B5C9 /* Pods-AltDaemon-acknowledgements.plist */,
|
||||||
|
546B88CFC6EBED3C7F26035C1D82B8B7 /* Pods-AltDaemon-dummy.m */,
|
||||||
|
29D47FB44A4B93E67977EA7DA41FDBFE /* Pods-AltDaemon-resources.sh */,
|
||||||
|
79DC23F753EEAEA1F99B4F772AC87CEB /* Pods-AltDaemon.debug.xcconfig */,
|
||||||
|
38B25887E1C1D20811EEFC7E4F30E75E /* Pods-AltDaemon.release.xcconfig */,
|
||||||
|
);
|
||||||
|
name = "Pods-AltDaemon";
|
||||||
|
path = "Target Support Files/Pods-AltDaemon";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
27C9B3764A8EC89602B2168BCD3B0541 /* Nuke */ = {
|
27C9B3764A8EC89602B2168BCD3B0541 /* Nuke */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1056,22 +1099,6 @@
|
|||||||
path = AltSign/Model;
|
path = AltSign/Model;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
29BB281BA7D464B1749908A7D7B87093 /* Pods-AltStore */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
0D7CC1D321A7EFF4B480E5BAC0685CFC /* Pods-AltStore.modulemap */,
|
|
||||||
61DDF5B83CA12D93D7CBD4F0B3242860 /* Pods-AltStore-acknowledgements.markdown */,
|
|
||||||
FAED4B69775DE96F8861BCA8BF35E38B /* Pods-AltStore-acknowledgements.plist */,
|
|
||||||
EC9F77AC7ECBA94225DE401B6A8004F2 /* Pods-AltStore-dummy.m */,
|
|
||||||
C0D26B225AB108A39AD161E5C626DFCA /* Pods-AltStore-resources.sh */,
|
|
||||||
695286014335265E05C28AD7B887F02F /* Pods-AltStore-umbrella.h */,
|
|
||||||
A82A21359DA7189002E88491D87FB6BE /* Pods-AltStore.debug.xcconfig */,
|
|
||||||
8E59788A401232096F8BFE2CF38011B3 /* Pods-AltStore.release.xcconfig */,
|
|
||||||
);
|
|
||||||
name = "Pods-AltStore";
|
|
||||||
path = "Target Support Files/Pods-AltStore";
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
2ADBE40AD4FBCECB7EC3654624D470B5 /* src */ = {
|
2ADBE40AD4FBCECB7EC3654624D470B5 /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1100,6 +1127,31 @@
|
|||||||
path = Dependencies/ldid/libplist/src;
|
path = Dependencies/ldid/libplist/src;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
2C6DD3243036D912CFF08FC91260A033 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
97376E80213BC9E42F08C1C3E739327F /* libAltSign.a */,
|
||||||
|
E8EE7F078656FABB8F6821D10FF994BB /* libKeychainAccess.a */,
|
||||||
|
2DAD7D76FC007F48AE48F2FD15BF01BB /* libNuke.a */,
|
||||||
|
49B0F76928525434803E52E609201454 /* libPods-AltDaemon.a */,
|
||||||
|
676644EB1805E96CE47F7882733262B3 /* libPods-AltStore.a */,
|
||||||
|
4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */,
|
||||||
|
8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods_AltServer.framework */,
|
||||||
|
ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask.framework */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
30C5E295E48CEDE7497C55DE64DBC687 /* Targets Support Files */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
21B07EE04CFA7F279AE8450F26AA35AD /* Pods-AltDaemon */,
|
||||||
|
7F5AD92236E83BA3EB39205EBAB8A9B8 /* Pods-AltServer */,
|
||||||
|
843530E93DA12B817029E9018B03DD06 /* Pods-AltStore */,
|
||||||
|
);
|
||||||
|
name = "Targets Support Files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
3598F2B00D4321009D713747EEC1E46B /* Capabilities */ = {
|
3598F2B00D4321009D713747EEC1E46B /* Capabilities */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1178,20 +1230,6 @@
|
|||||||
path = "../Target Support Files/Sparkle";
|
path = "../Target Support Files/Sparkle";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
4E801E465E7C325D42C6ADBADF282456 /* Products */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
97376E80213BC9E42F08C1C3E739327F /* libAltSign.a */,
|
|
||||||
E8EE7F078656FABB8F6821D10FF994BB /* libKeychainAccess.a */,
|
|
||||||
2DAD7D76FC007F48AE48F2FD15BF01BB /* libNuke.a */,
|
|
||||||
676644EB1805E96CE47F7882733262B3 /* libPods-AltStore.a */,
|
|
||||||
4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */,
|
|
||||||
8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods_AltServer.framework */,
|
|
||||||
ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask.framework */,
|
|
||||||
);
|
|
||||||
name = Products;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
509C180E6A90B89D30B2070FD2CB5026 /* include */ = {
|
509C180E6A90B89D30B2070FD2CB5026 /* include */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1407,6 +1445,39 @@
|
|||||||
path = AltSign/Categories;
|
path = AltSign/Categories;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
7F5AD92236E83BA3EB39205EBAB8A9B8 /* Pods-AltServer */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
5835BCCA38BE408715F2124CE34EE05A /* Pods-AltServer.modulemap */,
|
||||||
|
9A5F712C8D5959F1E477A2D285AB9A07 /* Pods-AltServer-acknowledgements.markdown */,
|
||||||
|
F36150F4B2D5DD35C5AE24D34254DD5B /* Pods-AltServer-acknowledgements.plist */,
|
||||||
|
C63B22556372BD6A596092190AC874E3 /* Pods-AltServer-dummy.m */,
|
||||||
|
B8B4E51528ACF4ED0E62FD2946936A77 /* Pods-AltServer-frameworks.sh */,
|
||||||
|
702E803654797D70C915837AF7D76C6B /* Pods-AltServer-Info.plist */,
|
||||||
|
E6C49955A91A9BF96052D43477EE8A79 /* Pods-AltServer-umbrella.h */,
|
||||||
|
0100FAF2D9192354B5AD97C5ACA2892A /* Pods-AltServer.debug.xcconfig */,
|
||||||
|
A79744C0D952ADD34EC8CCD2D1501838 /* Pods-AltServer.release.xcconfig */,
|
||||||
|
);
|
||||||
|
name = "Pods-AltServer";
|
||||||
|
path = "Target Support Files/Pods-AltServer";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
843530E93DA12B817029E9018B03DD06 /* Pods-AltStore */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
FD54352444A7AFFFB59DA62203AF58BE /* Pods-AltStore.modulemap */,
|
||||||
|
09CBBA5767A1426DCF3A11FFFCCD6C9A /* Pods-AltStore-acknowledgements.markdown */,
|
||||||
|
1192029049EFACF019572AE1D7C92004 /* Pods-AltStore-acknowledgements.plist */,
|
||||||
|
C9132C40CB4837DADEB046E727F867FB /* Pods-AltStore-dummy.m */,
|
||||||
|
82392F6B02D2A2D62197B66C2056B9B9 /* Pods-AltStore-resources.sh */,
|
||||||
|
7B51BFE6F7A28BF6D5614373C24DB981 /* Pods-AltStore-umbrella.h */,
|
||||||
|
60B0985C122B155F5C155FCB90F30B94 /* Pods-AltStore.debug.xcconfig */,
|
||||||
|
415A2399B6A802A272A86233D7C9DA25 /* Pods-AltStore.release.xcconfig */,
|
||||||
|
);
|
||||||
|
name = "Pods-AltStore";
|
||||||
|
path = "Target Support Files/Pods-AltStore";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
9307E5FFD57ACBE2597611F16A6139DA /* Frameworks */ = {
|
9307E5FFD57ACBE2597611F16A6139DA /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1423,32 +1494,6 @@
|
|||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
A25CEE5A93D9C8F43DE9AB2C39CEE220 /* Targets Support Files */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
A623B766890FCB34E7F40129A4502B63 /* Pods-AltServer */,
|
|
||||||
29BB281BA7D464B1749908A7D7B87093 /* Pods-AltStore */,
|
|
||||||
);
|
|
||||||
name = "Targets Support Files";
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
A623B766890FCB34E7F40129A4502B63 /* Pods-AltServer */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
1FDDB64DD95C45BA9E30FFB7ECFB9C30 /* Pods-AltServer.modulemap */,
|
|
||||||
67F9C672B6F11F0BC41900AED4C10DE0 /* Pods-AltServer-acknowledgements.markdown */,
|
|
||||||
827E121948344EAD1A1BAD926CD89E2C /* Pods-AltServer-acknowledgements.plist */,
|
|
||||||
E8434827ABB58D1C0275F5BDE3717F16 /* Pods-AltServer-dummy.m */,
|
|
||||||
BC6F74406EF976ECC3669BD38B0ECED4 /* Pods-AltServer-frameworks.sh */,
|
|
||||||
91203FEFD09BD6533A223ACCB6D53735 /* Pods-AltServer-Info.plist */,
|
|
||||||
4A3F93787631B5439B1EA07C44C1097A /* Pods-AltServer-umbrella.h */,
|
|
||||||
3A44D4EBF7CD579B73B275F0F125F846 /* Pods-AltServer.debug.xcconfig */,
|
|
||||||
1215053FA027E4CE849DAF4D00697FF1 /* Pods-AltServer.release.xcconfig */,
|
|
||||||
);
|
|
||||||
name = "Pods-AltServer";
|
|
||||||
path = "Target Support Files/Pods-AltServer";
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
A8E8EC855E36F4AD2F328CCDAA64BFAB /* Pod */ = {
|
A8E8EC855E36F4AD2F328CCDAA64BFAB /* Pod */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -1689,8 +1734,8 @@
|
|||||||
AF69713775B03B86677F3D2E78371BDA /* Development Pods */,
|
AF69713775B03B86677F3D2E78371BDA /* Development Pods */,
|
||||||
C080C886C9E2F80D52E3E86A62E5B711 /* Frameworks */,
|
C080C886C9E2F80D52E3E86A62E5B711 /* Frameworks */,
|
||||||
C27EC5BB44921E86A3540A05A3E4DE34 /* Pods */,
|
C27EC5BB44921E86A3540A05A3E4DE34 /* Pods */,
|
||||||
4E801E465E7C325D42C6ADBADF282456 /* Products */,
|
2C6DD3243036D912CFF08FC91260A033 /* Products */,
|
||||||
A25CEE5A93D9C8F43DE9AB2C39CEE220 /* Targets Support Files */,
|
30C5E295E48CEDE7497C55DE64DBC687 /* Targets Support Files */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -1851,6 +1896,13 @@
|
|||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXHeadersBuildPhase section */
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
|
0C5FFA2756F2B38D09CD34ABD1FC2356 /* Headers */ = {
|
||||||
|
isa = PBXHeadersBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
5A0720C096941A3006070216308EE5E4 /* Headers */ = {
|
5A0720C096941A3006070216308EE5E4 /* Headers */ = {
|
||||||
isa = PBXHeadersBuildPhase;
|
isa = PBXHeadersBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -2275,6 +2327,25 @@
|
|||||||
productReference = 97376E80213BC9E42F08C1C3E739327F /* libAltSign.a */;
|
productReference = 97376E80213BC9E42F08C1C3E739327F /* libAltSign.a */;
|
||||||
productType = "com.apple.product-type.library.static";
|
productType = "com.apple.product-type.library.static";
|
||||||
};
|
};
|
||||||
|
A7A6DC28A6D60809855FE404C6A3EA29 /* Pods-AltDaemon */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 0D7F14884B35286EA8908CE5B7BE6DFC /* Build configuration list for PBXNativeTarget "Pods-AltDaemon" */;
|
||||||
|
buildPhases = (
|
||||||
|
0C5FFA2756F2B38D09CD34ABD1FC2356 /* Headers */,
|
||||||
|
1D0BC9C1B9B61E3D8F6D25D2B03BF8EF /* Sources */,
|
||||||
|
C60D4971328D3B30E809D85DF9AC9C1C /* Frameworks */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
654042244EF3A473B122D0548F1E7D5F /* PBXTargetDependency */,
|
||||||
|
4A8907B54AA4AE05FA8507388DF4C44F /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = "Pods-AltDaemon";
|
||||||
|
productName = "Pods-AltDaemon";
|
||||||
|
productReference = 49B0F76928525434803E52E609201454 /* libPods-AltDaemon.a */;
|
||||||
|
productType = "com.apple.product-type.library.static";
|
||||||
|
};
|
||||||
B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */ = {
|
B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 729F25285E2C7B6E2B1F4A22919FEC8C /* Build configuration list for PBXNativeTarget "Roxas" */;
|
buildConfigurationList = 729F25285E2C7B6E2B1F4A22919FEC8C /* Build configuration list for PBXNativeTarget "Roxas" */;
|
||||||
@@ -2310,7 +2381,7 @@
|
|||||||
Base,
|
Base,
|
||||||
);
|
);
|
||||||
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
|
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
|
||||||
productRefGroup = 4E801E465E7C325D42C6ADBADF282456 /* Products */;
|
productRefGroup = 2C6DD3243036D912CFF08FC91260A033 /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
targets = (
|
targets = (
|
||||||
@@ -2318,6 +2389,7 @@
|
|||||||
A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */,
|
A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */,
|
||||||
615C831BCE925ED486B225B87E44926D /* KeychainAccess */,
|
615C831BCE925ED486B225B87E44926D /* KeychainAccess */,
|
||||||
062A64896E847A6749F58B6BA9A931B1 /* Nuke */,
|
062A64896E847A6749F58B6BA9A931B1 /* Nuke */,
|
||||||
|
A7A6DC28A6D60809855FE404C6A3EA29 /* Pods-AltDaemon */,
|
||||||
89B529DD288896C2EFC49575065F70FB /* Pods-AltServer */,
|
89B529DD288896C2EFC49575065F70FB /* Pods-AltServer */,
|
||||||
7083360F3F274C756CA77375F9D2A2BD /* Pods-AltStore */,
|
7083360F3F274C756CA77375F9D2A2BD /* Pods-AltStore */,
|
||||||
B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */,
|
B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */,
|
||||||
@@ -2396,6 +2468,14 @@
|
|||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
1D0BC9C1B9B61E3D8F6D25D2B03BF8EF /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
D2517BDBD1ABC11CE0956092866DE325 /* Pods-AltDaemon-dummy.m in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
1D542A07EC16C65863169B12C3EFA1AE /* Sources */ = {
|
1D542A07EC16C65863169B12C3EFA1AE /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -2571,12 +2651,24 @@
|
|||||||
target = A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */;
|
target = A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */;
|
||||||
targetProxy = C24230D37E930D006BF95D0AD49EEC82 /* PBXContainerItemProxy */;
|
targetProxy = C24230D37E930D006BF95D0AD49EEC82 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
4A8907B54AA4AE05FA8507388DF4C44F /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = Roxas;
|
||||||
|
target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */;
|
||||||
|
targetProxy = B1324C39ACC0CCA590E2F6C1CEE2A8A0 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
5DC764A2079E6566B6F43A6E4DC9F4AF /* PBXTargetDependency */ = {
|
5DC764A2079E6566B6F43A6E4DC9F4AF /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = Roxas;
|
name = Roxas;
|
||||||
target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */;
|
target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */;
|
||||||
targetProxy = AEF8A1FC207CBD08591F3D9033C2F05B /* PBXContainerItemProxy */;
|
targetProxy = AEF8A1FC207CBD08591F3D9033C2F05B /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
654042244EF3A473B122D0548F1E7D5F /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = AltSign;
|
||||||
|
target = 951A9DDCF9D2F851D1EC2B8CCD08ADFA /* AltSign */;
|
||||||
|
targetProxy = EB92C48D1AC6614C7A547B50D0514BC5 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
6E8C33961EA95A1968B7F180F87A0A68 /* PBXTargetDependency */ = {
|
6E8C33961EA95A1968B7F180F87A0A68 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
name = STPrivilegedTask;
|
name = STPrivilegedTask;
|
||||||
@@ -2632,7 +2724,7 @@
|
|||||||
};
|
};
|
||||||
03A826C198089C15D11AC65F5BED730D /* Debug */ = {
|
03A826C198089C15D11AC65F5BED730D /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 3A44D4EBF7CD579B73B275F0F125F846 /* Pods-AltServer.debug.xcconfig */;
|
baseConfigurationReference = 0100FAF2D9192354B5AD97C5ACA2892A /* Pods-AltServer.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||||
@@ -2776,6 +2868,28 @@
|
|||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
1993FA6D3A63D76A42298DDD4D69750B /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 79DC23F753EEAEA1F99B4F772AC87CEB /* Pods-AltDaemon.debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
||||||
|
MACH_O_TYPE = staticlib;
|
||||||
|
OTHER_LDFLAGS = "";
|
||||||
|
OTHER_LIBTOOLFLAGS = "";
|
||||||
|
PODS_ROOT = "$(SRCROOT)";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
21221507EB6C5017FA40BD87C8A5AE87 /* Release */ = {
|
21221507EB6C5017FA40BD87C8A5AE87 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 98D79D75B1A90F9F6A3DDAF54FF3C81A /* Sparkle.xcconfig */;
|
baseConfigurationReference = 98D79D75B1A90F9F6A3DDAF54FF3C81A /* Sparkle.xcconfig */;
|
||||||
@@ -2891,7 +3005,7 @@
|
|||||||
};
|
};
|
||||||
81F1B766BA25BC1DF5BB72B95C79D4F4 /* Release */ = {
|
81F1B766BA25BC1DF5BB72B95C79D4F4 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 8E59788A401232096F8BFE2CF38011B3 /* Pods-AltStore.release.xcconfig */;
|
baseConfigurationReference = 415A2399B6A802A272A86233D7C9DA25 /* Pods-AltStore.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||||
@@ -3009,9 +3123,32 @@
|
|||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
C8E31C3BA27894CDC72F7EA65DE99EF0 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 38B25887E1C1D20811EEFC7E4F30E75E /* Pods-AltDaemon.release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
||||||
|
MACH_O_TYPE = staticlib;
|
||||||
|
OTHER_LDFLAGS = "";
|
||||||
|
OTHER_LIBTOOLFLAGS = "";
|
||||||
|
PODS_ROOT = "$(SRCROOT)";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
D2269E4D719DBA594A24DD1B71DB0AA0 /* Debug */ = {
|
D2269E4D719DBA594A24DD1B71DB0AA0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = A82A21359DA7189002E88491D87FB6BE /* Pods-AltStore.debug.xcconfig */;
|
baseConfigurationReference = 60B0985C122B155F5C155FCB90F30B94 /* Pods-AltStore.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||||
@@ -3137,7 +3274,7 @@
|
|||||||
};
|
};
|
||||||
E8921B3E2DFC77CDA00FEE1D9EA36AA0 /* Release */ = {
|
E8921B3E2DFC77CDA00FEE1D9EA36AA0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 1215053FA027E4CE849DAF4D00697FF1 /* Pods-AltServer.release.xcconfig */;
|
baseConfigurationReference = A79744C0D952ADD34EC8CCD2D1501838 /* Pods-AltServer.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||||
@@ -3217,6 +3354,15 @@
|
|||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
0D7F14884B35286EA8908CE5B7BE6DFC /* Build configuration list for PBXNativeTarget "Pods-AltDaemon" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
1993FA6D3A63D76A42298DDD4D69750B /* Debug */,
|
||||||
|
C8E31C3BA27894CDC72F7EA65DE99EF0 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */ = {
|
2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
|||||||
3
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-acknowledgements.markdown
generated
Normal file
3
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-acknowledgements.markdown
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Acknowledgements
|
||||||
|
This application makes use of the following third party libraries:
|
||||||
|
Generated by CocoaPods - https://cocoapods.org
|
||||||
29
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-acknowledgements.plist
generated
Normal file
29
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-acknowledgements.plist
generated
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>PreferenceSpecifiers</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>This application makes use of the following third party libraries:</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>Acknowledgements</string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>StringsTable</key>
|
||||||
|
<string>Acknowledgements</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>Acknowledgements</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
5
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-dummy.m
generated
Normal file
5
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-dummy.m
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
@interface PodsDummy_Pods_AltDaemon : NSObject
|
||||||
|
@end
|
||||||
|
@implementation PodsDummy_Pods_AltDaemon
|
||||||
|
@end
|
||||||
4
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Debug-input-files.xcfilelist
generated
Normal file
4
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Debug-input-files.xcfilelist
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
${PODS_ROOT}/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources.sh
|
||||||
|
${PODS_ROOT}/../Dependencies/AltSign/AltSign/Resources/apple.pem
|
||||||
|
${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib
|
||||||
|
${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib
|
||||||
3
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Debug-output-files.xcfilelist
generated
Normal file
3
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Debug-output-files.xcfilelist
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/apple.pem
|
||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib
|
||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib
|
||||||
4
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Release-input-files.xcfilelist
generated
Normal file
4
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources-Release-input-files.xcfilelist
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
${PODS_ROOT}/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources.sh
|
||||||
|
${PODS_ROOT}/../Dependencies/AltSign/AltSign/Resources/apple.pem
|
||||||
|
${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib
|
||||||
|
${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/apple.pem
|
||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib
|
||||||
|
${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib
|
||||||
133
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources.sh
generated
Executable file
133
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon-resources.sh
generated
Executable file
@@ -0,0 +1,133 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
function on_error {
|
||||||
|
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
|
||||||
|
}
|
||||||
|
trap 'on_error $LINENO' ERR
|
||||||
|
|
||||||
|
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
|
||||||
|
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||||
|
# resources to, so exit 0 (signalling the script phase was successful).
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
|
||||||
|
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||||
|
> "$RESOURCES_TO_COPY"
|
||||||
|
|
||||||
|
XCASSET_FILES=()
|
||||||
|
|
||||||
|
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||||
|
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||||
|
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||||
|
|
||||||
|
case "${TARGETED_DEVICE_FAMILY:-}" in
|
||||||
|
1,2)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device iphone"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device ipad"
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device tv"
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device watch"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
TARGET_DEVICE_ARGS="--target-device mac"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
install_resource()
|
||||||
|
{
|
||||||
|
if [[ "$1" = /* ]] ; then
|
||||||
|
RESOURCE_PATH="$1"
|
||||||
|
else
|
||||||
|
RESOURCE_PATH="${PODS_ROOT}/$1"
|
||||||
|
fi
|
||||||
|
if [[ ! -e "$RESOURCE_PATH" ]] ; then
|
||||||
|
cat << EOM
|
||||||
|
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
|
||||||
|
EOM
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
case $RESOURCE_PATH in
|
||||||
|
*.storyboard)
|
||||||
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||||
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
|
;;
|
||||||
|
*.xib)
|
||||||
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||||
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
|
;;
|
||||||
|
*.framework)
|
||||||
|
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||||
|
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||||
|
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||||
|
;;
|
||||||
|
*.xcdatamodel)
|
||||||
|
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
|
||||||
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
||||||
|
;;
|
||||||
|
*.xcdatamodeld)
|
||||||
|
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
|
||||||
|
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
||||||
|
;;
|
||||||
|
*.xcmappingmodel)
|
||||||
|
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
|
||||||
|
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
||||||
|
;;
|
||||||
|
*.xcassets)
|
||||||
|
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
|
||||||
|
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$RESOURCE_PATH" || true
|
||||||
|
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/AltSign/AltSign/Resources/apple.pem"
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib"
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib"
|
||||||
|
fi
|
||||||
|
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/AltSign/AltSign/Resources/apple.pem"
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib"
|
||||||
|
install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
||||||
|
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
fi
|
||||||
|
rm -f "$RESOURCES_TO_COPY"
|
||||||
|
|
||||||
|
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
||||||
|
then
|
||||||
|
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
||||||
|
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
||||||
|
while read line; do
|
||||||
|
if [[ $line != "${PODS_ROOT}*" ]]; then
|
||||||
|
XCASSET_FILES+=("$line")
|
||||||
|
fi
|
||||||
|
done <<<"$OTHER_XCASSETS"
|
||||||
|
|
||||||
|
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
|
||||||
|
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||||
|
else
|
||||||
|
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
11
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon.debug.xcconfig
generated
Normal file
11
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon.debug.xcconfig
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AltSign" "${PODS_ROOT}/Headers/Public/Roxas" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/include" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/src"
|
||||||
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AltSign" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_ROOT}/../Dependencies/AltSign/Dependencies/OpenSSL/ios/lib"
|
||||||
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign"
|
||||||
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"Roxas" -l"c++" -l"crypto" -l"ssl"
|
||||||
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
PODS_ROOT = ${SRCROOT}/Pods
|
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||||
11
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon.release.xcconfig
generated
Normal file
11
Pods/Target Support Files/Pods-AltDaemon/Pods-AltDaemon.release.xcconfig
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AltSign" "${PODS_ROOT}/Headers/Public/Roxas" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/include" "$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/src"
|
||||||
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AltSign" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_ROOT}/../Dependencies/AltSign/Dependencies/OpenSSL/ios/lib"
|
||||||
|
OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AltSign"
|
||||||
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"AltSign" -l"Roxas" -l"c++" -l"crypto" -l"ssl"
|
||||||
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AltSign/AltSign.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
PODS_ROOT = ${SRCROOT}/Pods
|
||||||
|
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||||
Reference in New Issue
Block a user