Skip to content

SDKIntegration

xinbaicheng edited this page Jul 16, 2017 · 10 revisions

系统要求

  • 最低支持Android系统版本:2.3
  • 支持的体系结构:armv5/armv7a/arm64/x86/x86_64

体系结构选择

本SDK提供了对Android 5种体系架构的支持,但实际并不需要将其全部集成至APP, 徒增APP的size
当前手机主流为armeabi-v7aarm64-v8a, 且armeabi-v7a的库可在arm64-v8a的机器上运行, 建议集成armeabi-v7a的库即可

需要注意的是, 如若APP已经集成其它SDK某个体系结构的动态库时, 则必须集成播放SDK对应体系结构的动态库,例如:
APP已集成其它SDK的arm64-v8a的动态库,则也必须集成本播放SDK的arm64-v8a的动态库,否则在arm64-v8a的手机使用本播放SDK播放视频时会崩溃

使用Android Studio开发, 建议在build.gradle里配置abiFilters, 指定APP使用的ABI, 具体请见后续的示例

配置工程

推荐使用Google官方的Android IDE: Android Studio, 下载地址
下面以demo的 build.gradle为例, 介绍在集成SDK时的注意事项

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion '25.0.0'

    defaultConfig {
        applicationId "com.ksyun.player.demo"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        // 此处很重要,指定APP只使用 armeabi-v7a和arm64-v8a的库
        ndk {
            abiFilters 'armeabi-v7a','arm64-v8a'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets.main {
        jniLibs.srcDirs 'src/main/libs' // 动态库和jar的存放路径
        jni.srcDirs = [] // This prevents the auto generation of Android.mk
    }
}

//新版本直播库已支持jcenter
//dependencies {
//    compile files('src/main/libs/libksyplayer.jar')
//    compile files('src/main/libs/libksystat.jar')
//}
//引用jcenter
dependencies {
    ...
    compile 'com.ksyun.media:libksyplayer-java:1.9.2'
    compile 'com.ksyun.media:libksyplayer-armv7a:1.9.2'
    compile 'com.ksyun.media:libksyplayer-arm64:1.9.2'
    ...
}

新版本直播库已支持jcenter

混淆

请不要混淆SDK提供的jar包,在混淆配置中可添加如下语句

-keep class com.ksyun.media.player.**{ *; }
-keep class com.ksy.statlibrary.**{ *;}

系统权限

在您开始开发前,需要在您AndroidManifest.xml里添加如下权限,如若没有添加相应的权限,则会出现播放错误

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Clone this wiki locally