我正在使用 RMAppReceipt 来验证我的应用程序内的应用程序购买,这一切在更新到 XCode 9 之前都运行良好。我将 RMAppReceipt.h 、 RMAppReceipt.m 、 RMAppStoreReceiptVerifier.h 和 RMAppStoreReceiptVerifier.m 文件添加到我的项目中https://github.com/robotmedia/RMStore/wiki/Receipt-verification#adding-openssl 页面与“OpenSSL-Universal”窗格一起进行说明。
这一切在 XCode 8.3 中运行良好,但在将我的代码更新到 ProjectNameUITests 文件夹中的 Swift 4.0 后,我现在遇到以下错误:
Apple Mach-O 链接器 (Id) 错误:
Undefined symbols for architecture arm64:
"_X509_STORE_add_cert", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_ASN1_get_object", referenced from:
+[RMAppReceipt enumerateASN1Attributes:length:usingBlock:] in RMAppReceipt.o
_RMASN1ReadInteger in RMAppReceipt.o
_RMASN1ReadOctectString in RMAppReceipt.o
_RMASN1ReadString in RMAppReceipt.o
"_BIO_new", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_X509_free", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_d2i_X509", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_d2i_PKCS7_fp", referenced from:
+[RMAppReceipt dataFromPCKS7Path:] in RMAppReceipt.o
"_PKCS7_verify", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_X509_STORE_free", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_BIO_free", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_EVP_cleanup", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_X509_STORE_new", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_OBJ_obj2nid", referenced from:
+[RMAppReceipt dataFromPCKS7Path:] in RMAppReceipt.o
"_BIO_s_mem", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_OpenSSL_add_all_digests", referenced from:
+[RMAppReceipt verifyPCKS7:withCertificateData:] in RMAppReceipt.o
"_PKCS7_free", referenced from:
+[RMAppReceipt dataFromPCKS7Path:] in RMAppReceipt.o
"_SHA1", referenced from:
-[RMAppReceipt verifyReceiptHash] in RMAppReceipt.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
为我工作:
Project > Build Settings > Search: 'Header Search Paths'
删除:
$(PROJECT_DIR)/openssl-1.0.1e/include
$(PROJECT_DIR)/openssl-1.0.1e/lib
插入:
"${PODS_CONFIGURATION_BUILD_DIR}/RMStore/RMStore.framework/Headers"