An alternative app store for non-jailbroken iOS devices

Overview

AltStore

AltStore is an alternative app store for non-jailbroken iOS devices.

Swift Version License: AGPL v3 PRs Welcome

AltStore is an iOS application that allows you to sideload other apps (.ipa files) onto your iOS device with just your Apple ID. AltStore resigns apps with your personal development certificate and sends them to a desktop app, AltServer, which installs the resigned apps back to your device using iTunes WiFi sync. To prevent apps from expiring, AltStore will also periodically refresh your apps in the background when on the same WiFi as AltServer.

For the initial release, I focused on building a solid foundation for distributing my own apps — primarily Delta, my all-in-one emulator for iOS. Now that Delta has been released, however, I'm beginning work on adding support for anyone to list and distribute their apps through AltStore (contributions welcome! 🙂 ).

Features

  • Resigns and installs any app with your Apple ID
  • Installs apps over WiFi using AltServer
  • Refreshes apps periodically in the background to prevent them from expiring (when on same WiFi as AltServer)
  • Handles app updates directly through AltStore

Requirements

  • Xcode 11
  • iOS 12.2+ (AltStore)
  • macOS 10.14.4+ (AltServer)
  • Swift 5+

Why iOS 12.2+ and macOS 10.14.4+? Doing so allows me to distribute all AltStore apps without embedding Swift libraries inside them. This helps me afford bandwidth costs by reducing download sizes by roughly 30%, but also noticeably improves how long it takes to install/refresh apps with AltStore. If you're compiling AltStore and/or AltServer yourself, however, you should be able to lower their deployment targets to iOS 12.0 and macOS 10.14.0, respectively, without any issues.

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:

  • Core Data
  • Storyboards/Nibs
  • Auto Layout
  • Background App Refresh
  • Network.framework (new in iOS 12)

AltServer

AltServer is also just a regular, sandboxed macOS application. AltServer is significantly less complex than AltStore though, and for that reason consists of only a handful of files.

AltKit

AltKit is a shared framework that includes common code between AltStore and AltServer.

AltSign

AltSign is my internal framework used by both AltStore and AltServer to communicate with Apple's servers and resign apps. For more info, check the AltSign repo.

Roxas

Roxas is my internal framework used across all my iOS projects, developed to simplify a variety of common tasks used in iOS development. For more info, check the Roxas repo.

Compilation Instructions

AltStore and AltServer are both fairly straightforward to compile and run if you're already an iOS or macOS developer. To compile AltStore and/or AltServer:

  1. Clone the repository
    git clone https://github.com/rileytestut/AltStore.git
    
  2. Update submodules:
    cd AltStore 
    git submodule update --init --recursive
    
  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! 🎉

Licensing

Due to the licensing of some dependencies used by AltStore, I have no choice but to distribute AltStore under the AGPLv3 license. That being said, my goal for AltStore is for it to be an open source project anyone can use without restrictions, so I explicitly give permission for anyone to use, modify, and distribute all my original code for this project in any form, with or without attribution, without fear of legal consequences (dependencies remain under their original licenses, however).

Contact Me

Questions about AltStore in general? Make sure to read the FAQ at https://altstore.io/faq/

You might also like...
Fast Multi-store Redux-like architecture for iOS/OSX applications

Highway Highway is implementation of Redux-like architecture pattern using Swift. If you were looking for a something like this: TEA (The Elm Architec

iCloud Drive is Apple's essential connection between all your devices, Mac, iPhone, iPad, even your Windows PC.
iCloud Drive is Apple's essential connection between all your devices, Mac, iPhone, iPad, even your Windows PC.

iCloud Drive is Apple's essential connection between all your devices, Mac, iPhone, iPad, even your Windows PC.While the cost of storage seems expensive in comparison to other online storage services, its advantage is that it works natively across all your devices.

Ready use service for Firebase. Included interface, recored devices and notifications.
Ready use service for Firebase. Included interface, recored devices and notifications.

SPProfiling Ready use service with using Firebase. Included interface, manage auth process, recored devices and profile data. Installation Ready for u

Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController.
Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController.

Todo Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController

In this mini app covered the concepts like basics of SwiftUI and Navigations and Animations and List with CRUD functions and MVVM and App Launch and App icons adding and also applied persistence using UserDefaults Concept.
In this mini app covered the concepts like basics of SwiftUI and Navigations and Animations and List with CRUD functions and MVVM and App Launch and App icons adding and also applied persistence using UserDefaults Concept.

TodoList In this application used the concepts from the beginner level project of SwiftUI_Evolve_1 The following concepts covered in this mini app Swi

NetFun-ios-app - iOS app using BFF service to display processed data.
NetFun-ios-app - iOS app using BFF service to display processed data.

NetFun-ios-app iOS app using BFF service to display processed data. The iOS demo developed in SwiftUI and it uses BFF service to show expected UI comp

Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.

SwiftUI example app: Koober We're porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI and we are sharing the cod

SwiftUI App to view the App Activity Record from iOS 15
SwiftUI App to view the App Activity Record from iOS 15

App Activity Viewer A viewer for the iOS 15 "Record App Activity" export. FAQ How do I create an App Activity Report? Go to the "Settings" app of your

iOS app for Ribbit, Broker API Reference App
iOS app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (iOS) The reference implementation for designing the iOS user interface of a broker-dealer trading application with th

Owner
null
Open source, non-custodial Terra Wallet focused on privacy iOS App

iOS Open source non-custodial Terra Wallet. We send your finance from the Earth to the Moon Running the project To run this project update / fetch the

Terra Planet 7 May 22, 2022
The alternative last.fm client for iOS made with SwiftUI

first.fm - The alternative last.fm client for iOS (it's actually not available on the App Store... yet) Features Your profile (top artists, tracks and

Stanislas 22 Aug 22, 2022
An alternative Tumblr client for iOS

BlogQuest An alternative Tumblr client for iOS. First prize winner, 2014 Tumblr Hack Day. Kinda like Facebook Paper but for Tumblr. We meant to finish

Bryan Irace 14 Feb 10, 2022
An alternative gym workouts tracker written in SwiftUI.

Gymspot Gymspot is an alternative workout tracker written in SwiftUI. I decided to start working on it because: I need an easy-to-use tracker for my w

Alessio Moiso 3 Nov 22, 2022
Basic calculator app for iOS devices using Swift 3 and Xcode

iOS Calculator App Basic calculator app for iOS devices using Swift 3 and Xcode. Created for learning purpose. How to use Just download source code an

null 1 Jan 12, 2022
Development of the TUM Campus App for iOS devices - for and from students at Technical University of Munich.

Development of the TUM Campus App for iOS devices - for and from students at Technical University of Munich.

TUM Developers 93 Dec 16, 2022
Poetic is a classic poetry reader. Recently released on the App Store.

Poetic is a classic poetry reader. Enjoy thousands of poems from the greatest English poets.

Dean Thompson 4 Nov 25, 2022
iAppStroe is an Apple Store tool app written in SwiftUI.

iAppStore 简介 iAppStroe 是一款使用 SwiftUI 打造的苹果商店工具类 App。 1、提供苹果实时榜单查询,包含 iOS 和 iPad 的热门免费榜、热门付费榜、畅销榜,还有新上架榜、新上架免费榜、新上架付费榜等。 2、提供查询 app 详细页面内容、搜索 app、订阅 ap

37iOSTeam 272 Dec 30, 2022
Pasta is clipboard application for ios devices.

pasta Pasta is clipboard application for ios devices. Starting Requirements Xcode 13 Runing Not requires any specific steps, clone and run. git clone

Kemal Sanlı 5 Sep 19, 2022
A To Do List application for iOS devices.

Todoey A To Do List application for iOS devices. Tools Used - Realm Database UIStoryBoard Swift Ruby How to run - Clone the repo to local storage. Ins

Kunal Bhandari 0 Nov 29, 2021