From e7ef101f994e9897c0ea388ef1ef6f306ce987bf Mon Sep 17 00:00:00 2001 From: Charlie Cheever Date: Tue, 8 Oct 2019 01:28:16 -0700 Subject: [PATCH 1/8] Add missing step to build instructions for AltServer in README You need to run `carthage update` to build AltServer. Adding that information to the README. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4db9612f..f0155ca1 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,8 @@ AltStore and AltServer are both fairly straightforward to compile and run if you 3. Open `AltStore.xcworkspace` and select the AltStore project in the project navigator. On the `Signing & Capabilities` tab, change the team from `Yvette Testut` to your own account. 4. **(AltStore only)** Change the value for `ALTDeviceID` in the Info.plist to your device's UDID. Normally, AltServer embeds the device's UDID in AltStore's Info.plist during installation. When running through Xcode you'll need to set the value yourself or else AltStore won't resign (or even install) apps for the proper device. 5. **(AltStore only)** Change the value for `ALTServerID` in the Info.plist to your AltServer's serverID. This is embedded by AltServer during installation to help AltStore distinguish between multiple AltServers on the same network, and you can find this by using a Bonjour browsing application and noting the serverID advertised by AltServer. This isn't strictly necessary, because if AltStore can't find the AltServer with the embedded serverID it still falls back to trying another AltServer. However, this will help in cases where there are multiple AltServers running (plus the error messages are more helpful). -6. Build + run app! 🎉 +6. **(AltServer only)** Install Carthage (if you use Homebrew, you can do this with `brew install carthage`). Then run `carthage update` in the root directory of the repository. +7. Build + run app! 🎉 ## Licensing From a5950617f14e3716ac983e062599b1baa71404d0 Mon Sep 17 00:00:00 2001 From: Christian Oliff Date: Sat, 12 Oct 2019 14:50:43 +0900 Subject: [PATCH 2/8] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0155ca1..66af470b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Why iOS 12.2+ and macOS 10.14.4+? Doing so allows me to distribute all AltStore ## Project Overview ### AltStore -AltStore is a just regular, sandboxed iOS application. The AltStore app target contains the vast majority of AltStore's functionality, including all the logic for downloading and updating apps through AltStore. AltStore makes heavy use of standard iOS frameworks and technologies most iOS developers are familiar with, such as: +AltStore is just a regular, sandboxed iOS application. The AltStore app target contains the vast majority of AltStore's functionality, including all the logic for downloading and updating apps through AltStore. AltStore makes heavy use of standard iOS frameworks and technologies most iOS developers are familiar with, such as: * Core Data * Storyboards/Nibs * Auto Layout From 5c95f7727ad000443d854ccd29b20899b9d3eb71 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Fri, 18 Oct 2019 02:00:32 -0700 Subject: [PATCH 3/8] Create FUNDING.yml --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..3650ec29 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: rileytestut +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From f1e598b0b65bf8b38d170babd54aa32a5b870ed9 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Wed, 8 Jan 2020 13:05:22 -0800 Subject: [PATCH 4/8] Adds GitHub Action to post to Discord --- .github/workflows/main.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..92587e47 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,15 @@ +name: Post Commit to Discord + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - name: Discord notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + DISCORD_USERNAME: AltBot + uses: Ilshidur/action-discord@c7b60ec From ce9c2224021f85762f304b52ec39d379678f2acc Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Mon, 13 Jan 2020 10:14:05 -0800 Subject: [PATCH 5/8] Update main.yml --- .github/workflows/main.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 92587e47..675e77fc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,10 @@ name: Post Commit to Discord -on: [push] +on: + push: + branches: + - master + - develop jobs: build: From a69d15f1b1f4d414099c30ba27d1c0b6bcc22c8d Mon Sep 17 00:00:00 2001 From: Noah Keck Date: Fri, 22 May 2020 16:09:02 -0500 Subject: [PATCH 6/8] Create issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 35 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 14 +++++++++ 2 files changed, 49 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..1cfb22e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,35 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information if applicable):** + - OS: [Mac or Windows] + - Version: [e.g. Catalina] + +**iPhone (please complete the following information):** + - Device: [e.g. iPhone8] + - iOS: [e.g. 13.1] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..6665601b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,14 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. From 0bef37e91f2ee95c3e7882556420a79415ab7efa Mon Sep 17 00:00:00 2001 From: Noah Keck Date: Sat, 23 May 2020 12:21:30 -0500 Subject: [PATCH 7/8] Add logs to additional context --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1cfb22e2..289e4d62 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -31,5 +31,5 @@ If applicable, add screenshots to help explain your problem. - Device: [e.g. iPhone8] - iOS: [e.g. 13.1] -**Additional context** -Add any other context about the problem here. +**Additional context and logs** +Add any error logs or any other context about the problem here. From 43be34fd34749652507c985ff2a438c88c960f69 Mon Sep 17 00:00:00 2001 From: osy Date: Wed, 10 Jun 2020 14:58:25 -0700 Subject: [PATCH 8/8] Preserve device specific keys in Info.plist Apple's Info.plist support platform and device specific keys to augment existing keys. For example `UISupportedInterfaceOrientations~ipad` replaces `UISupportedInterfaceOrientations` when running on an iPad. By using Bundle.infoDictionary, Apple will pre-process the Info.plist and replace any key with its device specific variant. Since AltStore does not support iPad, this will strip out any iPad specific keys for the installing app. We add an extension Bundle.completeInfoDictionary that will return the original de-serialized dictionary including all the device specific keys. See: https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW9 --- AltKit/Bundle+AltStore.swift | 5 +++++ AltStore/Model/DatabaseManager.swift | 2 +- AltStore/Operations/ResignAppOperation.swift | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/AltKit/Bundle+AltStore.swift b/AltKit/Bundle+AltStore.swift index 110b20f5..0b62666f 100644 --- a/AltKit/Bundle+AltStore.swift +++ b/AltKit/Bundle+AltStore.swift @@ -38,4 +38,9 @@ public extension Bundle let infoPlistURL = self.bundleURL.appendingPathComponent("ALTCertificate.p12") return infoPlistURL } + + var completeInfoDictionary: [String : Any]? { + let infoPlistURL = self.infoPlistURL + return NSDictionary(contentsOf: infoPlistURL) as? [String : Any] + } } diff --git a/AltStore/Model/DatabaseManager.swift b/AltStore/Model/DatabaseManager.swift index 8a627651..908dbbc7 100644 --- a/AltStore/Model/DatabaseManager.swift +++ b/AltStore/Model/DatabaseManager.swift @@ -181,7 +181,7 @@ private extension DatabaseManager let infoPlistURL = temporaryFileURL.appendingPathComponent("Info.plist") - guard var infoDictionary = Bundle.main.infoDictionary else { throw ALTError(.missingInfoPlist) } + guard var infoDictionary = Bundle.main.completeInfoDictionary else { throw ALTError(.missingInfoPlist) } infoDictionary[kCFBundleIdentifierKey as String] = StoreApp.altstoreAppID try (infoDictionary as NSDictionary).write(to: infoPlistURL) diff --git a/AltStore/Operations/ResignAppOperation.swift b/AltStore/Operations/ResignAppOperation.swift index 3288d79e..869ef1b1 100644 --- a/AltStore/Operations/ResignAppOperation.swift +++ b/AltStore/Operations/ResignAppOperation.swift @@ -109,7 +109,7 @@ private extension ResignAppOperation { guard let identifier = bundle.bundleIdentifier else { throw ALTError(.missingAppBundle) } guard let profile = profiles[identifier] else { throw ALTError(.missingProvisioningProfile) } - guard var infoDictionary = bundle.infoDictionary else { throw ALTError(.missingInfoPlist) } + guard var infoDictionary = bundle.completeInfoDictionary else { throw ALTError(.missingInfoPlist) } infoDictionary[kCFBundleIdentifierKey as String] = profile.bundleIdentifier @@ -147,7 +147,7 @@ private extension ResignAppOperation progress.becomeCurrent(withPendingUnitCount: 1) guard let appBundle = Bundle(url: appBundleURL) else { throw ALTError(.missingAppBundle) } - guard let infoDictionary = appBundle.infoDictionary else { throw ALTError(.missingInfoPlist) } + guard let infoDictionary = appBundle.completeInfoDictionary else { throw ALTError(.missingInfoPlist) } var allURLSchemes = infoDictionary[Bundle.Info.urlTypes] as? [[String: Any]] ?? []