-
-
Notifications
You must be signed in to change notification settings - Fork 99
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f0d123b
commit 3824f5b
Showing
2 changed files
with
90 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
## FAQ | ||
|
||
Q: How does feather work? | ||
|
||
A: Feather allows you to import a `.p12` and a `.mobileprovision` pair to sign the application with (you will need a correct password to the p12 before importing). [Zsign](https://github.com/zhlynn/zsign) is used for the signing aspect, feather feeds it the certificates you have selected in its certificates tab and will sign the app on your device - after its finished it will now be added to your signed applications tab. When selected, it will take awhile as its compressing and will prompt you to install it. | ||
|
||
# | ||
|
||
**Q: What does Feather use for its server?** | ||
|
||
A: It uses the [localhost.direct](https://github.com/Upinel/localhost.direct) certificate and [Vapor](https://github.com/vapor/vapor) to self host a HTTPS server on your device - all itms services really needs is a valid certificate and a valid HTTPS server. Which allows iOS to accept the request and install the application. | ||
|
||
# | ||
|
||
**Q: Does Feather bundle its own certificate for the server?** | ||
|
||
A: Yes, to be able to install applications on device the server needs to be HTTPS. Which, we use a localhost.direct certificate for when turning on the server while attempting to install. | ||
|
||
We have an option to download a new certificate to make this server be able to run in the far future but no guarantees. It entirely depends on the owners of localhost.direct to be able to provide a certificate for use. If it does expire and theres a new one available, hopefully we'll be there to update the files in the background so Feather is able to retrieve those. | ||
|
||
# | ||
|
||
**Q: Notifications aren't working** | ||
|
||
A: This is because of a default setting applied when using Feather, read below. | ||
|
||
# | ||
|
||
**Q: Why does Feather append a random string on the bundle ID?** | ||
|
||
A: New ADP (Apple Developer Program) memberships created after June 6, 2021, require development and ad-hoc signed apps for iOS, iPadOS, and tvOS to check with a PPQ (Provisioning Profile Query Check) service when the app is first launched. The device must be connected to the internet to verify. | ||
|
||
PPQCheck checks for a similar bundle identifier on the App Store, if said identifier matches the app you're launching and is happened to be signed with a non-appstore certificate, your Apple ID may be flagged and even banned from using the program for any longer. | ||
|
||
This is why we prepend the random string before each identifier, its done as a safety meassure - however you can disable it if you *really* want to in Feathers settings page. | ||
|
||
# | ||
|
||
**Q: What is remove dylib inside of options?** | ||
|
||
A: There's a very specific reason its there, for those wanting to remove pre-existing injected dylibs inside but it really serves no other practical use other than that. Don't use this if you have no idea what you're doing. | ||
|
||
# | ||
|
||
**Q: What about free developer accounts?** | ||
|
||
A: Sadly Feather is unlikely to ever support those as there are plenty of alternatives that exist! Here's a few: [Altstore](https://altstore.io), [Sideloadly](https://sideloadly.io/) | ||
|
||
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,91 +1,57 @@ | ||
<div align="center"> | ||
<img width="100" height="100" src="Images/[email protected]" style="margin-right: -15px;"> | ||
</div> | ||
<h1>Feather</h1> | ||
<p> | ||
Feather is a free on-device iOS application manager/installer, using certificates part of the Apple Developer Program. | ||
</p> | ||
|
||
> [!WARNING] | ||
> Local installation is not working currently due to revocation of the bundled ssl certificate used for the https server, there will be an update to fix this issue momentarily. | ||
# Feather | ||
[](https://github.com/khcrysalis/feather/releases) | ||
[](https://github.com/khcrysalis/feather/releases) | ||
[](https://github.com/khcrysalis/feather/blob/main/LICENSE) | ||
|
||
## Features | ||
Feather allows you to use an Apple Developer Account to sign and install applications on device without needing a computer on stock iOS versions, while allowing easy management with its applications. | ||
|
||
- **Altstore repo support**. *Supporting Legacy and 2.0 repo structures* | ||
- **Import your own `.ipa`'s**. | ||
- **Inject tweaks when signing apps**. | ||
- **Install applications straight to your device seamlessly over the air**. | ||
- **Allows multiple certificate imports for easy switching**. | ||
- **Configurable signing options**. *(name, bundleid, version, other plist options)* | ||
- **Meant to be used with Apple Accounts that are apart of `ADP` (Apple Developer Program)**. *however other certificates can also work!* | ||
- **Easy resigning**! *If you have another certificate you would like to use on an app you may resign and reinstall that same app!* | ||
- **No tracking, analytics, or any of the sort**. *Your information such as UDID and certificates will never leave the device.* | ||
Due to limitations, it's hard to tell if the application is actually installed, so you will need to keep track of whats on your device. This is an entirely stock application and uses built-in features to be able to do this! | ||
|
||
> [!IMPORTANT] | ||
> **Tweak support is in beta**, make sure your tweaks work on the [Ellekit](https://theapplewiki.com/wiki/ElleKit) hooking platform, and built with the latest version of theos. | ||
> | ||
> **Some tweaks, not all, should work with Feather.** However, don't expect tweaks to work out of the box. As we will not change any dylib load command that isn't CydiaSubstrate. | ||
## Features | ||
|
||
## Links | ||
→ [Visit the Feather Wiki here!](https://github.com/khcrysalis/Feather/wiki)\ | ||
→ [Visit the roadmap here!](https://github.com/khcrysalis/Feather/issues/26) | ||
- Altstore repo support. | ||
- Import your own `.ipa`'s. | ||
- Inject tweaks when signing apps. | ||
- Install applications straight to your device seamlessly over the air. | ||
- Allows multiple certificate imports for easy switching. | ||
- Configurable signing options. | ||
- Meant to be used with Apple Accounts that are apart of `ADP` (Apple Developer Program). | ||
- No tracking, analytics, or any of the sort. | ||
|
||
## Screenshots | ||
## Preview | ||
|
||
| <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="Images/Repos.png"><source media="(prefers-color-scheme: light)" srcset="Images/Repos_L.png"><img alt="Pointercrate-pocket." src="Images/Repos_L.png" width="200"></picture></p> | <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="Images/Store.png"><source media="(prefers-color-scheme: light)" srcset="Images/Store_L.png"><img alt="Pointercrate-pocket." src="Images/Store_L.png" width="200"></picture></p> | <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="Images/Library.png"><source media="(prefers-color-scheme: light)" srcset="Images/Library_L.png"><img alt="Pointercrate-pocket." src="Images/Library_L.png" width="200"></picture></p> | <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="Images/Sign.png"><source media="(prefers-color-scheme: light)" srcset="Images/Sign_L.png"><img alt="Pointercrate-pocket." src="Images/Sign_L.png" width="200"></picture></p> | | ||
|:--:|:--:|:--:|:--:| | ||
| **Sources** | **Store** | **Library** | **Signing** | | ||
> [!Tip] | ||
> Go into lightmode to see lightmode screenshots! | ||
## How it Works | ||
|
||
Feather allows you to import a `.p12` and a `.mobileprovision` pair to sign the application with (you will need a correct password to the p12 before importing). [Zsign](https://github.com/zhlynn/zsign) is used for the signing aspect, feather feeds it the certificates you have selected in its certificates tab and will sign the app on your device - after its finished it will now be added to your signed applications tab. When selected, it will take awhile as its compressing and will prompt you to install it. | ||
|
||
## FAQ | ||
|
||
> What does Feather use for its server? | ||
It uses the [localhost.direct](https://github.com/Upinel/localhost.direct) certificate and [Vapor](https://github.com/vapor/vapor) to self host a HTTPS server on your device - all itms services really needs is a valid certificate and a valid HTTPS server. Which allows iOS to accept the request and install the application. | ||
|
||
> Does Feather bundle its own certificate for the server? | ||
Yes, to be able to install applications on device the server needs to be HTTPS. Which, we use a localhost.direct certificate for when turning on the server while attempting to install. | ||
|
||
We have an option to download a new certificate to make this server be able to run in the far future but no guarantees. It entirely depends on the owners of localhost.direct to be able to provide a certificate for use. If it does expire and theres a new one available, hopefully we'll be there to update the files in the background so Feather is able to retrieve those. | ||
|
||
> Notifications aren't working | ||
This is because of a default setting applied when using Feather, read below. | ||
|
||
> Why does Feather append a random string on the bundle ID? | ||
New ADP (Apple Developer Program) memberships created after June 6, 2021, require development and ad-hoc signed apps for iOS, iPadOS, and tvOS to check with a PPQ (Provisioning Profile Query Check) service when the app is first launched. The device must be connected to the internet to verify. | ||
|
||
PPQCheck checks for a similar bundle identifier on the App Store, if said identifier matches the app you're launching and is happened to be signed with a non-appstore certificate, your Apple ID may be flagged and even banned from using the program for any longer. | ||
|
||
This is why we prepend the random string before each identifier, its done as a safety meassure - however you can disable it if you *really* want to in Feathers settings page. | ||
## Building | ||
|
||
> [!WARNING] | ||
> If you want to keep application data through reinstalls, make sure you have the same bundleid. | ||
#### Minimum requirements | ||
|
||
> What is remove dylib inside of options? | ||
- Xcode 15 | ||
- Swift 5.9 | ||
- iOS 15 | ||
|
||
There's a very specific reason its there, for those wanting to remove pre-existing injected dylibs inside but it really serves no other practical use other than that. Don't use this if you have no idea what you're doing. | ||
Feather is not exactly as light as a feather as it needs to include an entire server framework so it can host it's server locally, totaling around 40mb~ when successfully compiled. While this is annoying to me, it doesn't really matter at the end as it does it's job. | ||
|
||
> What about free developer accounts? | ||
1. Clone repository | ||
```sh | ||
git clone https://github.com/khcrysalis/Feather | ||
``` | ||
|
||
Sadly Feather is unlikely to ever support those as there are plenty of alternatives that exist! Here's a few: [Altstore](https://altstore.io), [Sideloadly](https://sideloadly.io/) | ||
2. Compile | ||
```sh | ||
cd Feather | ||
gmake package SCHEME="'feather (Release)'" # Build, Use `SCHEME="'feather (Debug)'"` for debug build | ||
``` | ||
|
||
## Building | ||
3. Updating | ||
```sh | ||
git pull | ||
``` | ||
|
||
```sh | ||
git clone https://github.com/khcrysalis/feather # Clone | ||
cd feather | ||
make package SCHEME="'feather (Release)'" # Build | ||
``` | ||
> [!Tip] | ||
> Use `SCHEME="'feather (Debug)'"` for debug build | ||
Using the makefile will automatically create an unsigned ipa inside the packages directory, using this to debug or report issues is not recommend. When making a pull request or reporting issues, it's generally advised you've used Xcode to debug your changes properly. | ||
|
||
## Sponsors | ||
|
||
|
@@ -113,6 +79,9 @@ make package SCHEME="'feather (Release)'" # Build | |
- [Asspp](https://github.com/Lakr233/Asspp) - Some code for setting up the http server. | ||
- [plistserver](https://github.com/nekohaxx/plistserver) - Hosted on https://api.palera.in | ||
|
||
## Contributions | ||
## License | ||
|
||
This project is licensed under the GPL-3.0 license. You can see the full details of the license [here](https://github.com/khcrysalis/Feather/blob/main/LICENSE). It's under this specific license because I wanted to make a project that is transparent to the user thats related to Apple Developer Account sideloading, before this project there weren't any open source projects that filled in this gap. | ||
|
||
By contributing to this project, you agree to license your code under the GPL-3.0 license as well, ensuring that your work, like all other contributions, remains freely accessible and open. | ||
|
||
They are welcome! :) |