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

Mac搭建内网服务器无线安装ipa包_第1张图片
动图展示.gif

前言

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

本篇主要是概括总结,建议先看下这三篇文章
Mac配置本地Https服务
iOS通过OTA安装ipa包
Shell脚本解析ipa包

一、搭建内网 https 网络

请转阅这篇文章,这里不再累述
Mac配置本地Https服务

二、通过 OTA 安装 ipa 包

请转阅这篇文章,这里不再累述
iOS通过OTA安装ipa包

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

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

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

Mac搭建内网服务器无线安装ipa包_第2张图片
添加文件.png

2、修改 manifest.plist 文件

Mac搭建内网服务器无线安装ipa包_第3张图片
修改manifest.plist文件.png

software-package:https://10.73.20.15/common/app.ipa
display-image: https://10.73.20.15/common/appIcon_57x57.png
full-size-image:https://10.73.20.15/common/appIcon_512x512.png
其中 10.73.20.15 为本地IP地址

3、修改index.html





微信2048下载安装


微信2048下载安装

手机直接安装app

ssl 证书安装

安装包下载

修改对应的文件地址
手机直接安装:https://10.73.20.15/common/manifest.plist
ssl证书安装:https://10.73.20.15/common/ca.crt
安装包下载:https://10.73.20.15/common/app.ipa

访问地址:https://10.73.20.15/common/index.html

Mac搭建内网服务器无线安装ipa包_第4张图片
访问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}下载安装
Mac搭建内网服务器无线安装ipa包_第5张图片
开始执行脚本.png

Mac搭建内网服务器无线安装ipa包_第6张图片
执行脚本成功.png

执行脚本成功后,访问 https://10.73.20.15/user/index.html 即可下载安装。



参考链接:
一步一步实现无线安装iOS应用(内网OTA)

你可能感兴趣的:(Mac搭建内网服务器无线安装ipa包)