You need to enable JavaScript to run this app.
导航
sample本地调试设置
最近更新时间:2025.03.26 16:43:35首次发布时间:2025.03.18 12:29:24
我的收藏
有用
有用
无用
无用
sample本地调试常见设置及问题

由于多种场景下,包括接入测试的过程中需要多次对sample进行调试和看效果,本文档专门针对这一调试场景进行常见问题的总结和梳理。
注意
该场景是指单纯使用sample跑测试/交付素材来复现、验证、查看效果的场景,客户接入请参考快速接入文档以及接口说明。

授权在sample中的替换

本节主要指导如何将sample中的许可替换为自己的许可。

iOS端

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

Android端

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默认算法模型下发的情况下如何进行本地素材调试进行说明。

ios端

仅简单测试sample

  1. 搜索app.h中的IS_ONLINE_MODEL,至为NO,关闭模型下发
#define IS_ONLINE_MODEL NO
  1. 模型放到modelResource/online_model的目录下,编译运行即可。
    Image

版本升级的情况

如果是低版本升级到V4.4.3及以上,并且拷贝了BEEffectResourceHelper.m以及其他core的文件。

  1. 需要将其中的读取算法模型的代码修改下:
//注释掉新版本其中的这段代码
// - (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];
}
  1. 搜索app.h中的IS_ONLINE_MODEL,至为NO,关闭模型下发
#define IS_ONLINE_MODEL NO

Android端

仅简单测试sample

  1. 在Config.java文件中存在宏IS_ONLINE_MODEL。置为false,关闭下发。
public static final boolean IS_ONLINE_MODEL = false;
  1. 模型放到modelResource/online_model的目录下,编译运行即可。
    Image

版本升级的情况

如果是低版本升级到V4.4.3及以上,并且拷贝了AlgorithmResourceHelper.java以及其他core的文件。

  1. 需要将其中的读取算法模型的代码修改下:
//将新版本中的如下代码注释掉
// 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();
    }
  1. 在Config.java文件中存在宏IS_ONLINE_MODEL。置为false,关闭下发。
public static final boolean IS_ONLINE_MODEL = false;

贴纸本地sample测试效果

由于从V4.2.3开始,sample中的贴纸素材默认为服务器下发,因此在本地调试客户交付素材时会出现一些误解。本章节就sample默认贴纸素材下发的情况下如何进行本地素材调试进行说明。

iOS端

V4.6.2及之后

  1. 将贴纸放在StickerResource.bundle/stickers/local_stickers 文件夹下,如果无该文件夹,可以在bundle中新建一个

  2. 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]];
//    }
}

V4.4.3版本至4.6.1

  1. 将贴纸放在StickerResource.bundle/stickers 文件夹下,如果无该文件夹,可以在bundle中新建一个
  2. 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];
}

V4.2.3版本至4.4.2

  1. 将贴纸放在StickerResource.bundle/stickers文件夹下
  2. 注释掉下发的代码,添加单个贴纸的路径。
// BEStickerVC.m
- (void)viewDidLoad {
  [super viewDidLoad];
   //本地贴纸的代码,测试本地贴纸时需要把注释去掉
  [self.stickerBoardView setGroups:[self stickerPageWithLocalResource:@[
    @"test", @"../sticker/stickername"
  ]].tabs];
  //下发贴纸的代码,测试本地贴纸需要注释掉
//  [_stickerFetch fetchPageWithType:self.effectConfig.stickerConfig.type];
}

Android端

V4.5.0及之后

  1. 找到Config.java,修改ENABLE_ASSETS_SYNC为false
  2. 将需要测试的贴纸包,放置在StickerResource.bundle/local目录下,如果没有local目录,在bundle下新建一个local文件夹。
    如图:
    Image

V4.3.1版本至V4.4.3版本

将需要测试的贴纸包,放置在StickerResource.bundle/stickers/local目录下,如果没有local目录,在stickers这层下新建一个local文件夹。
Image

V4.2.3及4.3.0版本

在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");
    }
};