客户端集成

更新时间:2020-08-27

LinkV秀场直播 SDK 为您提供搭建直播场景的全套功能,帮助您快速实现直播功能。

客户端目前支持 Maven 方式集成,SDK 支持 Android 5.0 或以上版本系统,Android Studio 建议使用 Android Studio 3.6 或以上版本,目前暂不支持模拟器运行。

环境准备

请确保满足以下开发环境:

  • Android Studio 3.6 或以上版本。
  • Android 版本不低于 5.0 且支持音视频的 Android 真机。
  • Android 设备已经连接到 Internet。

导入工程

gradle 集成方式

1. 添加 Maven 库

打开项目根目录下的 build.gradle 文件,在 buildscriptallprojectsrepositories 节点中添加如下代码:

maven {
    url 'http://maven.linkv.fun/repository/liveme-android/'
    credentials {
        username = 'linklivePublicUser'
        password = 'public'
    }
}

gradle_introduce_live1

2. gradle 引入 linkvui 依赖

在项目主模块的 build.gradle 文件中,dependencies 节点下添加如下库依赖:

dependencies {
    ...
    // 建议使用最新版本,x.x.x 为版本号.
    implementation 'com.app.live:linkvui:x.x.x'
}

gradle_introduce_live2

3. 添加 Java8 语言支持

在项目主模块的 build.gradle 文件中,android 节点下添加如下 Java8 语言的依赖:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

gradle_introduce_live3

4. 添加 dataBinding支持

在项目主模块的 build.gradle 文件中,android 节点下添加如下dataBinding的依赖:

android {
    ...
     dataBinding {
        enabled = true
    }
}

gradle_introduce_live4

添加权限

打开项目中的 app/src/main/AndroidManifest.xml 文件,添加如下代码。

<!--访问网络连接,可能产生GPRS流量-->
<uses-permission android:name="android.permission.INTERNET" />
<!--改变WiFi状态-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--访问电话状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

add_permission

允许使用http协议

由于Android 9.0以上版本默认禁止使用http域名,但sdk还需要使用到http域名,故需要做一些配置以支持Android 9.0以上的版本使用http域名

在项目路径android/app/src/main/res/xml文件夹中创建文件network_security_config.xml,并添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

image-http-xml

打开项目中的android/app/src/main/AndroidManifest.xml文件,在application标签中添加如下属性:

android:networkSecurityConfig="@xml/network_security_config"

FileProvider 冲突

FileProviderauthorities 冲突

当项目中使用了 FileProvider 需要注意此问题,如果没有使用 FileProvider 则忽略。 如果有类似提示:

java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority xxx.xxx.provider

则说明项目中使用的 FileProvidersdk 中使用的 FileProviderauthorities 冲突了,需要如下处理:

打开主应用中的 AndroidManifest.xml 文件,在 application 节点下添加代码:

<provider
    android:name="androidx.core.content.FileProvider"
    tools:replace="android:authorities"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/paths" />
</provider>

include_problem6

自定义 FileProviderresource路径冲突

当项目中使用了自定义 FileProvider 需要注意此问题,如果没有使用自定义 FileProvider 则忽略。

如果有类似提示:

Attribute meta-data#android. support. FILE* PROVIDER* PATHS@resource value=(@xml/file\_ paths)from AndroidManifest.xml:101:17-51
is also present at [com. app. live: linkvui:0.0. 60.57] AndroidManifest.xml:95:17-46 value=(@xml/paths) ,
Suggestion: add ' tools: replace="android: resourcel"' to <meta-data> element at AndroidManifest . xml:99:13-101:54 to override.

说明 FileProviderresource路径有冲突,SDK 中的 FileProviderresource 路径为:paths ,请修改主应用中的自定义 FileProviderresource 路径。 例如: resource 路径修改为:file_paths

示例代码如下:

<provider
    android:name=".XXXProvider"
    tools:replace="android:authorities"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths"
        tools:replace="android:resource"/>
</provider>

常见问题

AndroidManifest 文件中 allowBackup 属性冲突问题

如果有类似提示:

Manifest merger failed : Attribute application@allowBackup value=(true) from AndroidManifest.xml:7:9-35
is also present at [com.app.live:livemesdk:0.0.24-outerLenovoRelease] AndroidManifest.xml:34:9-36 value=(false).
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:6:5-21:19 to override.

则说明 AndroidManifest 文件中的 allowBackup 属性有冲突,需要如下处理:

  1. 打开主应用中的 AndroidManifest.xml 文件,在 manifest 节点下添加属性:
xmlns:tools="http://schemas.android.com/tools"

include_problem1

  1. 打开主应用中的 AndroidManifest.xml 文件,在 application 节点下添加属性:
tools:replace="android:allowBackup"

include_problem2

apk 方法数量大于 65536

如果有类似提示:

java Error: Cannot fit requested classes in a single dex file (# methods: 67667 > 65536)

则说明 apk 中的方法数量超出 65536 的限制了,需要进行如下配置:

  1. 打开主项目中的 app/build.gradle 文件,在 dependencies 节点下添加如下代码:
dependencies {
    ...
    implementation 'com.android.support:multidex:1.0.3'
}

include_problem3

  1. 打开主项目中的 app/build.gradle 文件,在 defaultConfig 节点下添加如下代码:
multiDexEnabled true

include_problem4

  1. 打开主项目中的自定义 Application 子类,在 onCreate 方法中添加如下代码:
MultiDex.install(this);

include_problem5

使用AndroidX的依赖报错

如果有类似提示:

This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled.

则说明使用了AndroidX的依赖,但是并没有在gradle.properties文件中进行配置true,需要在gradle.properties文件中进行如下配置

android.useAndroidX=true
android.enableJetifier=true

androidx

JDK版本问题

SDK 的环境变量配置使用的是JDK8,使用高于JDK8以上版本的会出现如下问题:javax/xml/bind/JAXBException,所以使用SDK时建议使用JDK8版本。