常见问题
常见编译问题
allowBackup 冲突
TMF或者三方SDK组件在声明allowBackup属性时出现了不一致的情况,编译阶段会报Manifest merger failded。如下图所示:
解决方法:
在您app的AndroidManifest.xml application标签中设置您自己的allowBackup值,并使用tools:replace覆盖TMF的冲突值。
X5私有化版与Lisence版本冲突
如果您同时引入X5的私有化版和Lisence版本,编译阶段会出现重复类冲突,请只保留其中一个即可。
错误示例:
解决方法:
在您的依赖配置中只保留私有化版、Lisence版其中之一
私有化版本依赖项
implementation 'com.tencent.tmf.android:tbscore:xxx' implementation 'com.tencent.tmf.android:x5docpreview:xxx'
Lisence版本依赖项
implementation 'com.tencent.tmf.androidlic:tbscore:xxx' implementation 'com.tencent.tmf.androidlic:x5docpreview:xxx'
libc++_shared.so冲突问题
TMF内部组件使用了libc++_shared.so,可能会与其他三方库造成冲突。
错误示例:
解决方法:
在app/build.gradle中增加如下配置:
android{
...
packagingOptions {
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/armeabi/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}
...
}
Java版本兼容问题
TMF组件使用到了部分Java8的语言特性和API,因此需要在您模块的 build.gradle
设置compileOptions,否则可能会遇到编译与运行时问题。
android {
...
// Configure only for each module that uses Java 8
// language features (either in its source code or
// through dependencies).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "1.8"
}
}
此外,如果您的compileSdkVersion在30以上时,需要将Android Studio的Gradle Jdk配置设置为 Java 11。