这个问题一直让我发疯,我无法解决如何修复它...
Undefined symbols for architecture armv7:
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_OBJC_CLASS_$_ASIDataDecompressor", referenced from:
objc-class-ref in ASIHTTPRequest.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
Run Code Online (Sandbox Code Playgroud)
我认为这与:
ld: symbol(s) not found for architecture armv7
Run Code Online (Sandbox Code Playgroud)
但我补充道:libz.1.2.3.dylib它没有帮助,任何人都有任何想法?
在Xcode 4之前,构建曾经在我的项目的根文件夹中创建.我再也找不到了.
我在哪里可以找到构建文件夹?
我想在调试时启用NSLog,否则禁用它.一个非常简单的事情是:
#ifdef DEBUG
NSLog(@"My log");
#endif
Run Code Online (Sandbox Code Playgroud)
但所有这一切#ifdef并且#endif是无聊的...... :(所以我尝试其他的东西:( .pch是放的好地方)
#ifdef DEBUG
# define NSLog(text) NSLog(text);
#else
# define NSLog(text)
#endif
Run Code Online (Sandbox Code Playgroud)
这项工作非常好(不是递归的).但问题是NSLog有无限的论据.
void NSLog(NSString *format, ...)
Run Code Online (Sandbox Code Playgroud)
我如何解决这个问题才能在预处理器模式下工作?
- 编辑 -
此代码使您的NSLog更好:
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
Run Code Online (Sandbox Code Playgroud) 我们正在iOS 8 SDK上使用Xcode 6 beta 5 + Swift创建一个应用程序.我们也想部署到iOS 7.那可能吗?当我们将项目的部署目标设置为7.0时,我们得到如下编译时错误:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_WKPreferences", referenced from:
__TMaCSo13WKPreferences in WebViewController.o
"_OBJC_CLASS_$_WKWebView", referenced from:
__TMaCSo9WKWebView in WebViewController.o
"_OBJC_CLASS_$_WKWebViewConfiguration", referenced from:
__TMaCSo22WKWebViewConfiguration in WebViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我相信这是因为我们正在使用WKWebKit,仅由iOS 8+支持.我们可以使用UIWebKitiOS 7但WKWebKit适用于iOS 8.我们如何定义它?
我们的类定义看起来像这样......
import WebKit
class WebViewController: UIViewController, WKNavigationDelegate {
...
}
Run Code Online (Sandbox Code Playgroud)
它被称为:
let mainStoryboard = UIStoryboard(name: "Main", bundle: …Run Code Online (Sandbox Code Playgroud) 在iOS App中添加额外安全性的最佳做法是什么,因此攻击者/黑客无法在代码中轻松找到安全私钥,常量字符串.
PS:我发现了一些其他相关的问题,这些问题已得到部分解答或遗漏了这个问题的某些方面,所以我在下面添加了一些详细的问题和一些调查结果,这样任何人都可以在以后从这个帖子中获益.
任何应用程序的100%安全性是不可能的,但我们可以尝试通过实现更高的安全性来尽可能地使攻击/破解iOS应用程序,以便无法轻松破解/攻击应用程序.
以下是一些应该更安全的数据
我已经在KeyChain上存储了所有用户凭据,
1.是否有任何加密.ipa文件的方法,因此iOS二进制应用程序的反编译/逆向工程变得更难?
.
2.如何存储任何Constant HardCoded API Key/Token,即使应用程序被破解者成功反编译/破解; Constant API密钥/令牌应该很难检索.(假设我们已经对密钥进行了编码/加密,我们在使用前每次都对其进行解码)
以下是我目前的一些发现,但我不确定哪种方法更好,或者如果有任何其他标准方法,那么请提出建议:
main(int argc, char * argv[])如果有人试图使用一些反编译/调试工具调试它,则添加以下代码行以终止应用程序.(不确定Apple是否会因此而拒绝该应用)
disable_gdb();
期待任何建议或最佳实践,以使iOS App更安全.
经过大量测试,我的应用程序无法在iOS上运行。
我有这个错误:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_RCTImageLoader", referenced from:
objc-class-ref in libRCTImageResizer.a(RCTImageResizer.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我用 :
react: 16.12.0
react-native: 0.60.6
Run Code Online (Sandbox Code Playgroud) ios ×5
xcode ×4
armv7 ×1
build ×1
cocoa ×1
decompiling ×1
encryption ×1
gdb ×1
ios7 ×1
ios8 ×1
nslog ×1
objective-c ×1
react-native ×1
security ×1
swift ×1
xcode4.5 ×1