# การติดตั้ง ByteArk Player SDK for Android
# 1. แก้ไขไฟล์ setting.gradle
เพิ่ม maven repository ใน config pluginManagement
pluginManagement {
repositories {
...
+ maven {
url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
}
...
}
}
2
3
4
5
6
7
8
9
config dependencyResolutionManagement
สำหรับ ByteArk Player
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
+ maven {
url "https://gitlab.inox.co.th/api/v4/projects/1158/packages/maven"
credentials(HttpHeaderCredentials) {
name = "Private-Token"
value = "$gitLabPrivateToken"
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
config dependencyResolutionManagement
สำหรับ Nielsen SDK [กรณีมีการใช้งาน Feature Nielsen SDK]
+ dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven {
url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
}
google()
mavenCentral()
}
}
2
3
4
5
6
7
8
9
10
# 2. แก้ไขไฟล์ gradle.properties
เพิ่ม variable gitLabPrivateToken
gitLabPrivateToken=[YOUR_PRIVATE_TOKEN]
Note
โดย gitLabPrivateToken
จะถูกสร้างโดยทางทีม ByteArk หากต้องการใช้งานกรุณาติดต่อ sales@byteark.com
Note
แนะนำให้เพิ่ม gitLabPrivateToken
ใน local gradle.properties
# 3. แก้ไขไฟล์ build.gradle
Note
หากโปรเจคของท่านใช้ build.gradle.kts
กรุณาปรับ Syntax ตามวิธีที่ Setup Project
ปรับค่า compileSdk, minSdk, Target SDK ของโปรเจคดังนี้
- compileSdk
34
- minSdk
21
- targetSdk
34
android {
...
+ compileSdk 34
defaultConfig {
...
+ minSdk 21
+ targetSdk 34
...
}
...
}
2
3
4
5
6
7
8
9
10
11
12
Enable config viewBinding
, buildConfig
และ compose
ใน buildFeatures
android {
...
+ buildFeatures {
viewBinding true
compose true
}
...
}
2
3
4
5
6
7
8
เพิ่ม coreLibraryDesugaringEnabled
ใน compileOptions
android {
...
+ compileOptions {
coreLibraryDesugaringEnabled = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
2
3
4
5
6
7
8
9
10
set composeOptions
according to your kotlin version
Documentation https://developer.android.com/jetpack/androidx/releases/compose-kotlin (opens new window)
เพิ่ม dependency ใน dependencies
dependencies {
...
// ByteArk SDK
implementation("com.byteark.android:byteark-player-library:1.0.0-rc-3")
implementation("com.byteark.lighthouse:lighthouse-native-sdk:0.2.9")
// Lighthouse Dependency
implementation("io.ktor:ktor-client-core:2.1.0")
implementation("io.ktor:ktor-client-content-negotiation:2.1.0")
implementation("io.ktor:ktor-client-logging:2.1.0")
implementation("io.ktor:ktor-serialization-kotlinx-json:2.1.0")
implementation("io.ktor:ktor-client-okhttp:2.1.0")
implementation("io.github.aakira:napier:2.6.1")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
implementation("app.softwork:kotlinx-uuid-core:0.0.16")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.0")
// Glide
implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
// Nielsen
implementation "com.nielsenappsdk.global:ad:9.3.0.0"
// Ads Dependency
implementation "com.google.ads.interactivemedia.v3:interactivemedia:3.33.0"
implementation "com.google.android.gms:play-services-ads:23.0.0"
// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1"
// Media3
implementation "androidx.media3:media3-exoplayer:1.3.1"
implementation "androidx.media3:media3-exoplayer-dash:1.3.1"
implementation "androidx.media3:media3-exoplayer-hls:1.3.1"
implementation "androidx.media3:media3-exoplayer-rtsp:1.3.1"
implementation "androidx.media3:media3-exoplayer-smoothstreaming:1.3.1"
implementation "androidx.media3:media3-transformer:1.3.1"
implementation "androidx.media3:media3-cast:1.3.1"
implementation "androidx.media3:media3-ui:1.3.1"
implementation "androidx.media3:media3-session:1.3.1"
// Compose
implementation("androidx.activity:activity-compose:1.9.0")
implementation("androidx.compose.ui:ui:1.6.0-alpha02")
implementation("androidx.compose.ui:ui-tooling-preview:1.6.0-alpha02")
implementation("io.coil-kt:coil-compose:2.4.0")
implementation("androidx.navigation:navigation-compose:2.7.7")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation 'androidx.compose.ui:ui-tooling-preview'
debugImplementation 'androidx.compose.ui:ui-tooling'
// Desugar
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 4. แก้ไขไฟล์ AndroidManifest.xml
เพิ่ม Permissions ต่างๆ
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
...
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
...
</manifest>
2
3
4
5
6
7
8
9
10
11
12
เพิ่ม Uses Feature
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
...
<uses-feature android:name="android.software.leanback"
android:required="false" />
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
...
</manifest>
2
3
4
5
6
7
8
9
10
11
ใน application เพิ่ม android:usesCleartextTraffic="true"
เข้าไปเพื่อ allow http connection สำหรับ android version เก่า
<application
...
android:usesCleartextTraffic="true"
...
>
2
3
4
5
เพิ่ม android.adservices.AD_SERVICES_CONFIG
property ใน <application>
และ metadata สำหรับ Nielsens, Chromecast, และ IMA
<application
...
>
...
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />
...
<!--For Nielsen-->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
<!-- Add this for cast option -->
<meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.byteark.bytearkplayercore.handler.exoplayer.cast.ByteArkCastOptions"/>
</application>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
เพิ่ม service ByteArkPlayerService
เข้าไปสำหรับการใช้งาน ByteArkPlayer
<application
...
>
<service android:name="com.byteark.bytearkplayercore.handler.exoplayer.service.ByteArkPlayerService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="androidx.media3.session.MediaLibraryService"/>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
</application>
2
3
4
5
6
7
8
9
10
11
12