# การติดตั้ง ByteArk Player SDK for Android

# 1. แก้ไขไฟล์ setting.gradle

เพิ่ม maven repository ใน config pluginManagement

pluginManagement {
  repositories {
      ...
+   maven {
      url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
    }
    ...
  }
}
1
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)
      }
    }
  }
}
1
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()
  }
}
1
2
3
4
5
6
7
8
9
10

# 2. แก้ไขไฟล์ gradle.properties

เพิ่ม variable gitLabPrivateToken

gitLabPrivateToken=[YOUR_PRIVATE_TOKEN]
1

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
    ...
  }
  ...
}
1
2
3
4
5
6
7
8
9
10
11
12

Enable config viewBinding , buildConfig และ compose ใน buildFeatures

android {
  ...
+ buildFeatures {
    viewBinding true
    compose true
  }
  ...
}
1
2
3
4
5
6
7
8

เพิ่ม coreLibraryDesugaringEnabled ใน compileOptions

android {
  ...
+ compileOptions {
    coreLibraryDesugaringEnabled = true
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  ...
}
1
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")
}
1
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>
1
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>
1
2
3
4
5
6
7
8
9
10
11

ใน application เพิ่ม android:usesCleartextTraffic="true" เข้าไปเพื่อ allow http connection สำหรับ android version เก่า

  <application
    ...
    android:usesCleartextTraffic="true"
    ...
  >
1
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>
1
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>
1
2
3
4
5
6
7
8
9
10
11
12