由于多种场景下,包括接入测试的过程中需要多次对sample进行调试和看效果,本文档专门针对这一调试场景进行常见问题的总结和梳理。
注意
该场景是指单纯使用sample跑测试/交付素材来复现、验证、查看效果的场景,客户接入请参考快速接入文档以及接口说明。
本节主要指导如何将sample中的许可替换为自己的许可。
1.修改Config.h中的LICENSE_NAME
路径
// 修改为自己的许可文件的文件名称 #define LICENSE_NAME ((const char *)"labcv_test_20220715_20221231_com.effectsar.labcv.demo_4.4.0.licbag")
2.关闭授权下发
(1)SDK版本为v4.2.1的情况,需要将BEEffectLicenseHelper.mm中的LICENSE_MODE
修改为OFFLINE_LICENSE
(2)SDK为v4.2.3及以上的情况,需要将BELicenseHelper.mm中的LICENSE_MODE
修改为OFFLINE_LICENSE
(3)SDK为421之前版本的无需查看此条。
3.修改app设置中的Signing&Capabilities中的bundle ID,修改为许可授权中给到的自己开发者的bundle ID
1.修改Config.java中的LICENSE_NAME
路径
// 修改为自己的许可文件的文件名称 public static final String LICENSE_NAME = "labcv_test_20220715_20221231_com.effectsar.labcv.demo_4.4.0.licbag";
2.关闭授权下发
(1)SDK版本为v4.2.1及以上的情况,需要将EffectLicenseHelper.java中的_licenseMode
设置为LICENSE_MODE_ENUM.OFFLINE_LICENSE
(2)SDK为421之前版本的无需查看此条。
3.修改app下的build.gradle,将application Id修改为许可授权中给到的自己开发者的application Id
由于从V4.4.3开始,sample中的算法模型默认为服务器下发,因此在本地调试客户交付素材时会出现一些误解。本章节就sample默认算法模型下发的情况下如何进行本地素材调试进行说明。
IS_ONLINE_MODEL
,至为NO,关闭模型下发#define IS_ONLINE_MODEL NO
如果是低版本升级到V4.4.3及以上,并且拷贝了BEEffectResourceHelper.m
以及其他core的文件。
//注释掉新版本其中的这段代码 // - (const char *)modelDirPath // { // NSString *documentDir = [[[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil] path]; // return [[documentDir stringByAppendingString:@"/BDCV_ModelResource"] UTF8String]; // } //在注释掉后添加以下代码 - (const char *)modelDirPath { return [[[NSBundle mainBundle] pathForResource:@"ModelResource" ofType:BUNDLE] UTF8String]; }
IS_ONLINE_MODEL
,至为NO,关闭模型下发#define IS_ONLINE_MODEL NO
public static final boolean IS_ONLINE_MODEL = false;
如果是低版本升级到V4.4.3及以上,并且拷贝了AlgorithmResourceHelper.java
以及其他core的文件。
//将新版本中的如下代码注释掉 // public String getModelPath(){ // return new File(getResourcePath(), "model").getAbsolutePath(); // } // private String getModelPath(String modelName) { // return new File(getModelPath(), modelName).getAbsolutePath(); // } //添加一行如下代码 private String getModelPath(String modelName) { return new File(new File(getResourcePath(), "ModelResource.bundle"), modelName).getAbsolutePath(); }
public static final boolean IS_ONLINE_MODEL = false;
由于从V4.2.3开始,sample中的贴纸素材默认为服务器下发,因此在本地调试客户交付素材时会出现一些误解。本章节就sample默认贴纸素材下发的情况下如何进行本地素材调试进行说明。
将贴纸放在StickerResource.bundle/stickers/local_stickers 文件夹下,如果无该文件夹,可以在bundle中新建一个
在BEStickerVC.m
下的viewDidLoad
中放开测试本地素材注释,素材下发的代码注释掉。
- (void)viewDidLoad { [super viewDidLoad]; self.transformBool = NO; self.msgcapBool = NO; // {zh} 测试本地素材请放开此行代码,屏蔽下方代码 {en} To test the local material, please release this line of code and mask the code below [self.stickerBoardView setGroups:[self loadLocalStickerResource: self.effectConfig.title]]; // NSString *documentDir = [[[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil] path]; // documentDir = [documentDir stringByAppendingString:@"/BDCV_Resource/local_stickers/"]; // // if (![[NSFileManager defaultManager] fileExistsAtPath:documentDir]) { // // {zh} 素材下发代码 {en} Material delivery code // NSString *categoryKey = self.effectConfig.title; // self.dataManager.delegate = self; // [self.dataManager effectDataManagerWithCategoryKey:categoryKey]; // } // else { // [self.stickerBoardView setGroups:[self loadLocalStickerResource: self.effectConfig.title]]; // } }
BEStickerVC.m
下的viewDidLoad
中放开测试本地素材注释,素材下发的代码注释掉。- (void)viewDidLoad { [super viewDidLoad]; self.transformBool = NO; self.msgcapBool = NO; // 测试本地素材请放开此行代码,屏蔽下方的下发代码 [self.stickerBoardView setGroups:[self loadLocalStickerResource]]; // 素材下发代码 // NSString *categoryKey = self.effectConfig.title; // self.dataManager.delegate = self; // [self.dataManager effectDataManagerWithCategoryKey:categoryKey]; }
StickerResource.bundle/stickers
文件夹下// BEStickerVC.m - (void)viewDidLoad { [super viewDidLoad]; //本地贴纸的代码,测试本地贴纸时需要把注释去掉 [self.stickerBoardView setGroups:[self stickerPageWithLocalResource:@[ @"test", @"../sticker/stickername" ]].tabs]; //下发贴纸的代码,测试本地贴纸需要注释掉 // [_stickerFetch fetchPageWithType:self.effectConfig.stickerConfig.type]; }
Config.java
,修改ENABLE_ASSETS_SYNC
为falseStickerResource.bundle/local
目录下,如果没有local目录,在bundle下新建一个local文件夹。将需要测试的贴纸包,放置在StickerResource.bundle/stickers/local
目录下,如果没有local目录,在stickers这层下新建一个local文件夹。
在StickerActivity.java中搜索并找到如下代码,添加需要调试的单个贴纸。
// com.bytedance.labcv.effect.activity.StickerActivity.java List<String> info = new ArrayList<String>(){ { // 在此设置本地测试贴纸。每个贴纸依次添加"标题"、"路径"两个字符串即可 String stickerRootPath = "/storage/emulated/0/Android/data/com.bytedance.labcv.demo/files/Documents/resource/"; add(mContext.getString(R.string.sticker_landiaoxueying)); add(stickerRootPath+"stickers_landiaoxueying"); add(mContext.getString(R.string.sticker_weilandongrizhuang)); add(stickerRootPath+"stickers_weilandongrizhuang"); add(mContext.getString(R.string.sticker_tiaowuhuoji)); add(stickerRootPath+"stickers_tiaowuhuoji"); } };