因公司要求使用虹软人脸识别,所以发现虹软人脸识别的文档和demo并不是很友好,本人一边跳坑一边查了很多资料,现在记录下配置流程,希望能给大家一些帮助。
首先先去虹软的官网下载SDK,这里不做赘述。
配置流程如下:
1.有个libstdc++.6.0.9.tbd库是缺失的,需要先去下载:链接: https://pan.baidu.com/s/14ArFzkBQzuXmwLw1DEBHpQ 提取码: w99r。
下载完后保存到如下路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib下(这是真机调试)
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib(模拟器位置)
2.创建一个新的工程,导入framework,必须在如下路径导入:
图1:
3.添加如下库:
图2:
4.由于SDK采用了Objective-C++实现,需要保证工程中至少有一个.mm 后缀的源文件(可以将任意一个.m后缀的文件改名为.mm);或者在工程属性中指定编译方式,即如图5箭头2所示,选中顶部菜单“Build Setting”,在过滤框中输入“Compile Sources As”,找到 Compile Sources As,并将其设置为"Objective-C++”;
5.选择项目中的Info.plist文件,新增一个属性App Transport Security Settings,在该属性下添加Allow Arbitrary Loads类型Boolean,值设为YES,如下图红框所示:
图3:
6.配置相机相册:
原demo里面info.list 标注的是 Privacy -Photo Library Additions Usage Description, 正确的是: Privacy - Photo Library Usage Description 值为:“App需要访问您的相册”
配置访问相机权限:添加“Privacy - Camera Usage Description”
值设为“cameraDesciption”如下图:
图4:
7.上述配置修改好之后,将Demo中ViewController.mm文件中的appid、sdkkey替换为从官网申请的APP_ID、SDK_KEY;
Assets.xcassets添加图片,导入头文件(拷贝viewcontroller、AppDelegate和其他的代码),注:mainstoreyboard里新建的viewcontroller直接拷贝到新项目里就行,如下图:
图5:
8.运行程序。会报错,需要手动创建.xcdatamodeld表,先删除拷贝的代码,然后按如下方法创建:https://blog.csdn.net/sundaysme/article/details/81916098
然后按照如下方法生成新的文件:
https://blog.csdn.net/feng512275/article/details/72829580,并导出,其中四个重复的.m文件重复引用需要删除。需要注意的是kAFRModelName要与xxx.xcdatamodeld的名字一致,最好创建coredata的时候起名就叫“FSDKFR.xcdatamodeld”。
9.appdelegate里面需要添加如下代码:
AppDelegate.h:
#import <CoreData/CoreData.h>
添加属性和方法:
@property (readonly, strong) NSPersistentContainer *persistentContainer; -(void)saveContext;
AppDelegate.m:
#pragma mark - Core Data stack
@synthesize persistentContainer = _persistentContainer; - (NSPersistentContainer *)persistentContainer {
@synchronized (self) {
if (_persistentContainer == nil) {
_persistentContainer = [[NSPersistentContainer alloc] initWithName:@"FaceTest3"];
[_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription *storeDescription, NSError *error) {
if (error != nil) {
NSLog(@"Unresolved error %@, %@", error, error.userInfo);
abort();
}
}];
}
}
return _persistentContainer;
}
#pragma mark - Core Data Saving support
- (void)saveContext {
NSManagedObjectContext *context = self.persistentContainer.viewContext;
NSError *error = nil;
if ([context hasChanges] && ![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, error.userInfo);
abort();
}
}
10.报错以下问题:
图6:
需要再添加3个静态库:
图7:
11.报错以下问题:
图8:
需要把bitcode设为NO,如下图:
图9: