linux中ipa服务器搭建,Mac搭建内网服务器无线安装ipa包

c4937f312e48

动图展示.gif

前言

iOS项目开发中,会将ipa包提供测试人员测试使用,一般会将ipa上传到蒲公英或fir平台,但这些三方平台有安装次数的限制,也许实名认证才能使用,为了解决三方平台的诸多限制和不稳定的情况,所以研究了一下用自己的服务器搭建本地服务,实现内网安装ipa的功能。PS:fir居然把我的账号给封了!!!

一、搭建内网 https 网络

请转阅这篇文章,这里不再累述

Mac配置本地Https服务

二、通过 OTA 安装 ipa 包

请转阅这篇文章,这里不再累述

iOS通过OTA安装ipa包

三、内网服务器无线安装ipa包

1、将ipa包及资源文件上传到本地web工作目录

在本地web工作路径:/Users/zjh48/CustomWeb,新建文件夹 common,用来存放通用文件

文件命名如下

c4937f312e48

添加文件.png

2、修改 manifest.plist 文件

c4937f312e48

修改manifest.plist文件.png

3、修改index.html

微信2048下载安装

微信2048下载安装

手机直接安装app

ssl 证书安装

安装包下载

c4937f312e48

访问index.html.png

四、Shell脚本自动解析ipa包

为了方便自动解析ipa,这里写了一个脚本,可能自动读取info.plist的中内容,并修改manifest.plist、index.html等文件内容,脚本内容如下

#!/bin/sh

echo " "

echo "##################### 内网OTA安装包处理 #####################"

echo " "

# 使用方法

# sh disposeIpa.sh user wechat_dev

# ${1} 操作用户

# ${2} 包名,可不填

# 当前脚本的目录定义为基础目录

# basePath=$(dirname $0)

basePath=$(cd "$(dirname "$0")";pwd)

echo "基础目录地址 basePath : $basePath"

userName=${1}

packageName=${2}

# 当前ipa路径

ipaFileName="app.ipa"

ipaFilePath="${basePath}/${ipaFileName}"

if [ ! -f "$ipaFilePath" ]; then

echo "未找到ipa包 $ipaFilePath"

exit 2

fi

#当前ipa解压路径

temIpaDirName="TempPayload"

temIpaDirPath="${basePath}/${temIpaDirName}"

echo "当前ipa解压路径 temIpaDirPath : $temIpaDirPath"

#删除临时解包目录

if [ -d "$temIpaDirPath" ]; then

echo "删除临时解包目录 rm ${temIpaDirPath}"

rm -rf "${temIpaDirPath}"

fi

#解包IPA

if [[ -f "$ipaFilePath" ]]; then

echo "unzip $ipaFileName begin ..."

unzip "$ipaFilePath" -d "$temIpaDirPath"

fi

# 定位到*.app目录及info.plist

appDir="$temIpaDirPath/Payload/`ls "$temIpaDirPath/"Payload`"

lcmInfoPlist="${appDir}/Info.plist"

echo "info.plist文件路径 lcmInfoPlist : $lcmInfoPlist"

# 获取app的名称、版本号、build号

appName=`/usr/libexec/PlistBuddy -c "Print :CFBundleName" $lcmInfoPlist`

echo "appName : $appName"

appVersion=`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" $lcmInfoPlist`

echo "appVersion : $appVersion"

appBuild=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" $lcmInfoPlist`

echo "appBuild : $appBuild"

appBundleId=`/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" $lcmInfoPlist`

echo "appBundleId : $appBundleId"

if [ ! $packageName ]; then

packageName=$appName

fi

# 拼接文件全名称

timeStr=`date +%Y%m%d%H%M`

appFullName="${packageName}_${appVersion}_${appBuild}_${timeStr}"

echo "appFullName : $appFullName"

# 获取ip地址

ipStrArr=`ifconfig | grep inet | grep -v inet6 | grep -v 127 | cut -d ' ' -f2`

ipArr=(${ipStrArr//\n/ })

ipStr=${ipArr[0]}

echo "获取ip地址 ipStr : $ipStr"

# 拼接操作用户路径

otherPath="${basePath%/*}/$userName"

echo "操作用户路径 otherPath : $otherPath"

if [ ! -d "$otherPath" ]; then

mkdir $otherPath

fi

#操作用户ipa存储路径

otherIpaName="ipas"

oherIpasDir="${otherPath}/${otherIpaName}"

echo "操作用户ipa存储路径 oherIpasDir : $oherIpasDir"

if [ ! -d "$oherIpasDir" ]; then

mkdir $oherIpasDir

fi

#拼接ipa文件地址

ipaUrl="https://${ipStr}/${userName}/${otherIpaName}/${appFullName}.ipa"

echo "ipa文件地址 ipaUrl : $ipaUrl"

# installplist信息

installPlist="${basePath}/manifest.plist"

echo "installPlist文件路径 installPlist : $installPlist"

# 修改installplist ipaurl信息

oldIpaUrl=`/usr/libexec/PlistBuddy -c "Print :items:0:assets:0:url" $installPlist`

if [[ -n $oldIpaUrl ]]; then

`/usr/libexec/PlistBuddy -c "Set :items:0:assets:0:url $ipaUrl" $installPlist`

echo "ipaUrl 修改完成 : $ipaUrl"

fi

# 修改installplist版本等信息

function changeMetaData {

value=`/usr/libexec/PlistBuddy -c "Print :items:0:metadata:${1}" $installPlist`

if [[ -n $value ]]; then

`/usr/libexec/PlistBuddy -c "Set :items:0:metadata:${1} ${2}" $installPlist`

echo "${1} 修改完成 : ${2}"

fi

}

changeMetaData "bundle-identifier" $appBundleId

changeMetaData "bundle-version" $appVersion

changeMetaData "title" $appName

# 修改index.html

indexPath="${basePath}/index.html"

indexPath2="${basePath}/index2.html"

now_path=${basePath##*/}

function changeHtml {

sed ${1} $indexPath > $indexPath2

cp $indexPath2 $indexPath

rm $indexPath2

}

#html修改标题

changeHtml "s/>.*下载安装>${appName}下载安装

#html修改manifest.plist地址

changeHtml "s/https:\/\/.*.plist/https:\/\/${ipStr}\/${userName}\/manifest.plist/g"

#html修改ca证书地址

changeHtml "s/https:\/\/.*.ca.crt/https:\/\/${ipStr}\/${now_path}\/ca.crt/g"

#html修改ipa下载地址

changeHtml "s/https:\/\/.*.ipa/https:\/\/${ipStr}\/${userName}\/${otherIpaName}\/${appFullName}.ipa/g"

echo "##################### index.html #####################"

cat $indexPath

echo "##################### index.html #####################"

# 拷贝文件

cp $ipaFilePath "${oherIpasDir}/${appFullName}.ipa"

echo "拷贝 ${appFullName}.ipa 成功"

cp $installPlist "${otherPath}"

echo "拷贝 $installPlist 成功"

cp $indexPath "${otherPath}"

echo "拷贝 $indexPath 成功"

# 删除ipa包

rm $ipaFilePath

echo "ipa下载安装请访问:https://${ipStr}/${userName}/index.html"

echo "恭喜操作成功!!!"

c4937f312e48

开始执行脚本.png

c4937f312e48

执行脚本成功.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值