CocoaPod openSSL-ios-Bitcode 不再安装



>我有一个项目,我一直在使用openssl-ios-bitcode。 正在对我的 pod 文件进行一些修改,并意外删除了该条目。 重新添加条目后,我发现 pod 不会重新安装。

有一个prepare_command,

s.prepare_command = <<-CMD
VERSION="1.0.2l"
SDKVERSION=`xcrun --sdk iphoneos --show-sdk-version 2> /dev/null`
MIN_SDKVERSION="7.0"
BASEPATH="${PWD}"
CURRENTPATH="${TMPDIR}/openssl"
ARCHS="i386 x86_64 armv7 arm64"
DEVELOPER=`xcode-select -print-path`
mkdir -p "${CURRENTPATH}"
mkdir -p "${CURRENTPATH}/bin"
cp "file.tgz" "${CURRENTPATH}/file.tgz"
cd "${CURRENTPATH}"
tar -xzf file.tgz
cd "openssl-${VERSION}"
for ARCH in ${ARCHS}
do
CONFIGURE_FOR="iphoneos-cross"
if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ] ;
then
PLATFORM="iPhoneSimulator"
if [ "${ARCH}" == "x86_64" ] ;
then
CONFIGURE_FOR="darwin64-x86_64-cc"
fi
else
sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
echo "Building openssl-${VERSION} for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please stand by..."
export CC="${DEVELOPER}/usr/bin/gcc -arch ${ARCH} -miphoneos-version-min=${MIN_SDKVERSION} -fembed-bitcode"
mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-openssl-${VERSION}.log"
LIPO_LIBSSL="${LIPO_LIBSSL} ${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/lib/libssl.a"
LIPO_LIBCRYPTO="${LIPO_LIBCRYPTO} ${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/lib/libcrypto.a"
./Configure ${CONFIGURE_FOR} --openssldir="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk" > "${LOG}" 2>&1
sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} !" "Makefile"
make >> "${LOG}" 2>&1
make all install_sw >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1
done
echo "Build library..."
rm -rf "${BASEPATH}/lib/"
mkdir -p "${BASEPATH}/lib/"
lipo -create ${LIPO_LIBSSL}    -output "${BASEPATH}/lib/libssl.a"
lipo -create ${LIPO_LIBCRYPTO} -output "${BASEPATH}/lib/libcrypto.a"
echo "Copying headers..."
rm -rf "${BASEPATH}/opensslIncludes/"
mkdir -p "${BASEPATH}/opensslIncludes/"
cp -RL "${CURRENTPATH}/openssl-${VERSION}/include/openssl" "${BASEPATH}/opensslIncludes/"
cd "${BASEPATH}"
echo "Building done."
echo "Cleaning up..."
rm -rf "${CURRENTPATH}"
echo "Done."
CMD

它会生成以下错误消息:cp:file.tgz:没有这样的文件或目录

认为以下行是失败的地方:cp "file.tgz" "${CURRENTPATH}/file.tgz">

我已经打开了 --verbose 运行,我可以看到文件正在下载,不确定在哪里,但 curl 命令似乎显示下载成功。

关于如何调试我的问题的任何想法?

感谢

想出了如何前进。 我一直使用的openssl-ios-bitcode pod有一个prepare_command语句,该语句假定从 OpenSSL.org 下载的文件在下载时将保持tar gz文件。

似乎在此过程中的某个地方,Cocoapods 的行为发生了变化,下载的 tar gz 文件会自动爆炸。 必须更新prepare_command声明以考虑到这一点。

在为自己解决这个问题的过程中,我创建了自己的 fork 和 pod。

我遇到的另一个附带问题是,在 iOS 上进行收据验证的示例依赖于帮助程序函数来获取pkcs7_st结构内部的联合。 我在某些博客中找到了一些关于如何纠正此问题的最新示例,并将这些示例复制到 GitHub 上的新存储库中。 曾尝试将这些辅助函数转换为单独的 pod - 但无法解决一些模块问题。

XCode 12.5 的解决方案

openSSL-ios-bitcode 尝试使用 xcrun -命令行工具 -以便您应该检查命令行工具是否从:

Xcode -> Preferences -> Locations -> Command Line Tools

最新更新