有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

Android release 包报错找不到某些方法,如何解决?

如果您在打 release 包时,启用了编译优化(把 minifyEnabled 设置为 true),会裁掉一些未在 java 层调用的代码,而这些代码有可能会被 native 层调用,从而引起 no xxx method 的异常。
如果您启用了这样的编译优化,那就要添加这些 keep 规则,防止 xmagic 的代码被裁掉:
-keep class com.tencent.xmagic.** { *;}
-keep class org.light.** { *;}
-keep class org.libpag.** { *;}
-keep class org.extra.** { *;}
-keep class com.gyailib.**{ *;}
-keep class com.tencent.cloud.iai.lib.** { *;}
-keep class com.tencent.beacon.** { *;}
-keep class com.tencent.qimei.** { *;}
-keep class androidx.exifinterface.** { *;}

Android SDK 集成到宿主工程报 gson 库冲突,如何解决?

在宿主工程 build.gradle 文件中添加如下代码:
Android{
configurations {
all*.exclude group: 'com.google.code.gson'
}
}

Android targetSdkVersion 为31或更高时,so 库没有加载成功?或者无法使用 GAN 类型特效(例如童话脸、童年泡泡糖等)?

Android targetSdkVersion 为31或更高版本时需要在 app 模块下找到 AndroidManifest.xml 文件,在 application 标签内加入如下标签:
<uses-native-library
android:name="libOpenCL.so"
android:required="true" />
//此处的true 表示如果没有此库,则应用将无法正常运行。系统不允许在没有此库的设备上安装应用。
//false表示应用可以使用此库(如果存在),但专门在没有此库的情况下运行(如果有必要)。系统允许安装应用,即使不存在此库也是如此。如果您使用 "false",则需要自行负责妥善处理库不存在的情况。
具体请参见 开发指引

使用美颜时传递的纹理是横向纹理,如何解决?

可以使用 demo 中工具类TextureConverter.java 的convert 方法对纹理进行旋转,转换为竖屏,然后再传递给美颜 SDK。
/**
* 此方法用于对rgba纹理进行旋转和镜像处理。处理过程为:先顺时针旋转rotation度(可取值0,90,180,270),再进行左右翻转(flipHorizontal)和 上下翻转(flipVertical)。
* 使用场景:某些推流SDK返回的纹理是横屏纹理或者画面中人物朝向不对,而腾讯特效SDK要求纹理中的人物是正向的,所以可以通过此方法对纹理进行转换。
*
* @param srcID rgba纹理
* @param width 纹理宽度
* @param height 纹理高度
* @param rotation 需要进行旋转的角度。
* @return 旋转后的纹理,注意:如果旋转90或者270度,那么宽度需要进行交换。
*/
public int convert(int srcID, int width, int height, @RotationDegreesValue int rotation, boolean flipVertical, boolean flipHorizontal)

使用美颜时传递的纹理是 oes 纹理,如何解决?

可以使用 demo 中工具类TextureConverter.java 的oes2Rgba 方法对纹理进行转换,转换为 RGBA 纹理,然后再传递给美颜 SDK。
/**
* 此方法用于将oes纹理转换为rgba纹理
*
* @param srcID oes 纹理
* @param width 纹理宽度
* @param height 纹理高度
* @return rgba纹理ID
*/
public int oes2Rgba(int srcID, int width, int height)

如果想使用别的版本的 pag 怎么办?V3.5.0支持

客户集成美颜 SDK 时:
如果是通过 Maven 集成,通过 implement TencentEffect 就能引入 pag。如果您不想用这个版本的 pag,可以通过 exclude 排除:
implementation ('com.tencent.mediacloud:TencentEffect_S1-04:版本号'){ exclude group: "com.tencent.tav", module: "libpag"
}
如果是下载美颜 SDK 手动集成,依赖 TencentEffect.aar,是不带 pag 的,您还需要在 app 的 build.gradle 加一句 implement pag 引入 pag 才能用。
implementation 'com.tencent.tav:libpag:4.3.33-noffavc'
如果想动态下载 so,需要从官网下载 pag 版本,提取出其中的 so,仅引入 aar。

iOS 导入资源运行后报错:Xcode 12.X 版本编译提示:“Building for iOS Simulator, but the linked and embedded framework '.framework'...”?

Build Settings > Build Options > Validate Workspace 改为 Yes,再单击运行
说明
Validate Workspace 改为 Yes 之后编译完成,再改回 No,也可以正常运行,所以这里有这个问题注意下即可。

滤镜设置没反应?

检查下设置的值是否正确,范围为 0~100,可能值太小了效果不明显。

iOS Demo 编译,生成 dSYM 时报错?

报错信息:
PhaseScriptExecution CMake\\ PostBuild\\ Rules build/XMagicDemo.build/Debug-iphoneos/XMagicDemo.build/Script-81731F743E244CF2B089C1BF.sh
cd /Users/zhenli/Downloads/xmagic_s106
/bin/sh -c /Users/zhenli/Downloads/xmagic_s106/build/XMagicDemo.build/Debug-iphoneos/XMagicDemo.build/Script-81731F743E244CF2B089C1BF.sh

Command /bin/sh failed with exit code 1
问题解析:原因是 libpag.frameworkMasonary.framework 重签名失败。
解决方法
1.1 打开 demo/copy_framework.sh
1.2 $(which cmake)改为本地 cmake 绝对路径。
1.3 签名 Apple Development: ...... 改为自己的账号。

iOS Demo,进入主页显示授权错误?

查看日志中打印的授权失败错误码。如果使用的是本地 License 文件,检查文件是否添加进工程。

iOS Demo 编译报错?

报错信息:
unexpected service error: build aborted due to an internal error: unable to write manifest to-xxxx-manifest.xcbuild': mkdir(/data, S_IRWXU | S_IRWXG | S_IRWXO): Read-only file system (30):
解决方法
1.1 File > Project settings > Build System 选择 Legacy Build System
1.2 Xcode 13.0++ 需要在 File > Workspace Settings 勾选 Do not show a diagnostic issue about build system deprecation

腾讯特效各个属性之间的生效关系?