Skip to content

togettoyou/ipashare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信公众号:gopher云原生

go、云原生技术 ...... 来者不拒,欢迎关注

起源

每个客户端开发者都会想独立开发一款自己的 APP 。 但在开发过程中, iOS 不像 Android 那样可以自由的分享应用给其他人安装体验 (Android 只要把 .apk 发过去就行了)

对于 iOS 开发者来说, Apple 的个人开发者账号几乎是必备的, 而 Apple 公司允许我们添加 100 台设备绑定到账号上,这 100 台设备可以自由安装由该账号签名且使用 Ad Hoc 方式打包出的 .ipa

本项目就是利用这个官方的规则,来简化 iOS APP 的分享流程。当你开发一款 APP 的过程中,想要给身边的小伙伴体验一下,只需要部署本项目,然后上传你的个人开发者账号和 .ipa 就可以生成一个二维码,扫一扫即可全程自动绑定设备并签名安装 APP

原理

设备绑定账号调用 App Store Connect API 实现

.ipa 签名调用 zsign 实现

注意事项

本项目完全开源免费,纯技术分享,不提供任何平台支持,仅作为给个人开发者分享自己的测试 APP 使用,严禁使用本项目进行任何商业盈利、损害官方利益、分享任何违法违规的 APP 等行为

个人开发者账号

本项目添加开发者账号后会占用账号的一个 iOS Development certificate 名额(每个账号最多只能创建两个),所以你可能得预留一个

其中添加开发者账号所需的 iss(Issuer ID)、kid(密钥 ID)、P8 文件(API 密钥)需要在 https://appstoreconnect.apple.com/access/api 创建后获取

Railway 部署

使用 Railway 一键部署,每月有 5 美元的免费额度:

Deploy on Railway

Docker 部署

创建 docker-compose.yml ,内容如下:

version: '3'
services:
  server:
    image: togettoyou/ipashare:latest
    ports:
      - "8888:8888"
    volumes:
      - $PWD/data:/root/togettoyou/data
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
    environment:
      - SERVER_URL=https://example.com # 必须修改,域名
      - SERVER_HTTPPORT=8888 # 指定后端服务端口
      - SERVER_MAXJOB=10 # 签名任务并发量
      - SERVER_RUNMODE=release
      - LOG_LEVEL=info

执行:

# 前台运行服务
docker-compose up
# 后台运行服务
docker-compose up -d
# 查看服务日志
docker-compose logs -f --tail 100
# 停止服务
docker-compose stop
# 启动服务
docker-compose start
# 重启服务
docker-compose restart
# 删除服务
docker-compose down -v

启动成功后可通过 域名/admin 例如 https://example.com/admin 访问后台管理

项目启动后所有数据保存在 data 目录,请妥善保管

  • apple_developer : 苹果开发者账号相关证书
  • temporary_file_path : 临时文件存放路径(打包后的 IPA,1小时后会自动删除)
  • upload_file_path : 文件上传路径(上传的 IPA)
  • sqlite.db : 默认的sqlite数据库文件

数据库支持更换为 MySQL ,在 docker-compose.yml 加入以下环境变量即可:

- MYSQL_ENABLE=true
- MYSQL_DSN=root:123456@tcp(127.0.0.1:3306)/db_default?charset=utf8mb4&parseTime=True&loc=Local

更多环境变量可参考:server/conf/default.yaml ,变量层级使用 _ 连接,如 MYSQL_MAXIDLE 代表 mysql 配置中的空闲连接池中连接的最大数量

JetBrains 开源证书支持

本项目使用 GoLand 开发,感谢 JetBrains 提供的免费授权

部分效果预览

login developer
后台管理登录 开发者账号管理
ipalist keylist
应用管理 密钥管理
oss mobileconfig
阿里云 OSS 设置 描述文件签名
pw image
更改用户名密码 安装 APP