Difference between revisions of "Digital Measurement Android Artifactory Guide"

From Engineering Client Portal

(Version Control)
(grade prior to 4.x)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|DCR & DTVR}} {{CurrentBreadcrumb}}
+
{{Breadcrumb|}} {{Breadcrumb|Digital}} {{Breadcrumb|Digital Downloads}} {{CurrentBreadcrumb}}
 
[[Category:Digital]]
 
[[Category:Digital]]
 
 
__NOTOC__
 
__NOTOC__
 
The Nielsen AppSDK can either be downloaded directly from the [http://engineeringportal.nielsen.com Engineering Portal], or can be integrated directly within an application through the use of a CocoaPod or Gradle.
 
The Nielsen AppSDK can either be downloaded directly from the [http://engineeringportal.nielsen.com Engineering Portal], or can be integrated directly within an application through the use of a CocoaPod or Gradle.
Line 7: Line 6:
 
= How to install the Nielsen AppSDK using Gradle for Android =
 
= How to install the Nielsen AppSDK using Gradle for Android =
 
Below are the steps which need to be performed by app developers to integrate the Nielsen App SDK within an Android application.
 
Below are the steps which need to be performed by app developers to integrate the Nielsen App SDK within an Android application.
 
== Update grade.properties ==
 
The first step is to add the credentials received from Nielsen into your '''gradle.properties''' file, typically near the end of the file.  We recommend using the version in your home folder (Global Properties).  Gradle looks for  '''gradle.properties''' files in this sequence:
 
* <code>gradle.properties</code> in project root directory.
 
* <code>gradle.properties</code> in GRADLE_USER_HOME directory.
 
* system properties, e.g. when <code>-Dgradle.user.home</code> is set on the command line.
 
 
Properties from one file will override the properties from the previous ones (so file in gradle user home has precedence over the others, and file in sub-project has precedence over the one in project root).
 
 
Reference: https://gradle.org/docs/current/userguide/build_environment.html
 
 
<source lang="java">machine raw.githubusercontent.com
 
nielsen_user=<Nielsen App SDK client>
 
nielsen_authCode=<Auth token></source>
 
<br>
 
<blockquote>
 
[[Image:AlertIcon.png|left|60px|link=|class=smallIcon]] Please do not upload any file to github or bitbucket containing the credentials above.
 
This will automatically lock your access.
 
</blockquote>
 
 
== Credentials ==
 
Obtain credentials '''[[Digital Downloads| → here ←]]'''
 
  
 
== Add Nielsen Maven Repository ==
 
== Add Nielsen Maven Repository ==
  
 
Please add the Nielsen maven repository inside the repositories section of your app's module build.gradle file like below:
 
Please add the Nielsen maven repository inside the repositories section of your app's module build.gradle file like below:
 
+
<br>
<source lang="java">android{
+
<source lang="android">
 
repositories {
 
repositories {
 
   //Copy below code inside repository section of app’s build.gradle file
 
   //Copy below code inside repository section of app’s build.gradle file
 
maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
 
maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
  credentials {
+
            }
      //Make sure you add nielsen_user and nielsen_passwd with respective nielsen provided
+
</source>
    // values to global gradle.properties file
+
<br>
      username = project.property("nielsen_user")
+
<blockquote>
      password = project.property("nielsen_authCode")
+
[[Image:AlertIcon.png|left|60px|link=|class=smallIcon]] Starting on Sept 21, 2021 the Nielsen SDK has moved to a public repository. Credentials are no longer required.
  }
+
</blockquote>
  authentication {
+
<br>
      basic(BasicAuthentication)
 
  }
 
}
 
}
 
 
 
}</source>
 
  
 
== Add gradle dependency ==
 
== Add gradle dependency ==
Line 56: Line 27:
 
Please add Nielsen app SDK as compile time dependency inside build.gradle file as below
 
Please add Nielsen app SDK as compile time dependency inside build.gradle file as below
 
=== grade 4.x and above ===
 
=== grade 4.x and above ===
For gradle version starting with 4.x add the following line inside dependencies section of build.gradle file.
+
For gradle version starting with 4.x add the following line inside dependencies section of build.gradle file.<br>
 
+
<source lang="html">implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'</source>
<source lang="java">implementation 'com.nielsenappsdk:${flavour}:${version}'</source>
 
 
 
=== grade prior to 4.x ===
 
For gradle version previous to 4.x add below line inside dependencies section of build.gradle file.
 
 
 
<source lang="java">compile 'com.nielsenappsdk:${flavour}:${version}'</source>
 
 
 
== Version Control ==
 
It is recommended to use <code> + </code> to ensure you receive the most recent version of the NielsenSDK.
 
<source lang="java">compile 'com.nielsenappsdk:${flavour}:${version}'</source>
 
 
<br>
 
<br>
and a sample is:
+
<source lang="html">
<source lang="java">
 
 
dependencies { ....
 
dependencies { ....
implementation 'com.nielsenappsdk:globalx:+'
+
implementation 'com.nielsenappsdk.global:ad:+' // Using + will provide the latest version
 
}
 
}
 
</source>
 
</source>
 +
 +
=== grade prior to 4.x ===
 +
For gradle version previous to 4.x add below line inside dependencies section of build.gradle file.
 +
<source lang="html">compile 'com.nielsenappsdk.${market}:${flavor}:${version}'</source>
 
<br>
 
<br>
However a specific version can also be requested.  To specify a version, please replace <code>${version}</code> with required Nielsen App SDK release.
+
<source lang="html">
<source lang="java">
 
 
dependencies { ....
 
dependencies { ....
implementation 'com.nielsenappsdk:globalx:8.1.0.0'
+
compile 'com.nielsenappsdk.global:ad:+' // Using + will provide the latest version
 
}
 
}
 
</source>
 
</source>
<br>
 
<blockquote>If using version control, a warning message will be displayed within the console trace during the build of your app,
 
and it will show all sdk versions released to-date, allowing a developer to select a more recent build if desired.</blockquote>
 
  
== Flavor Control ==
+
== Version and Flavor Control ==
To specify a specific flavor of the Nielsen SDK, please replace <code>${flavor}</code> with one of below flavor types:
+
With version 8.1.0.0+ of the Nielsen appSDK, it is possible to request a specific '''${flavor}''' that reads the '''Google Ad ID''', '''Android ID''', or is '''Kid app''' friendly (noID).  For example:<br>
{| class="wikitable"
+
<source lang="html">implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'</source>
 +
* if the flavor selected is equal to <code>ad</code> the Nielsen SDK will try to obtain the googleAdID if the user has not opted out.
 +
* If the flavor is <code>noad</code> then the Nielsen SDK will attempt to obtain the AndroidID.
 +
* If the flavor selected is <code>noid</code> then the Nielsen SDK will not request any identifier which is required for many kid apps.
 +
<blockquote>To ensure backward compatability, <code> implementation 'com.nielsenappsdk:${market}:${version}'</code> will continue to be supported.</blockquote>
 +
{| class="wikitable"  
 
|-
 
|-
!App Flavor Name !! Description !!
+
! SDK  Version
 +
! ${market}
 +
! ${flavor}
 +
! ${version}
 +
! Examples
 
|-
 
|-
|com.nielsenappsdk:globalx||GLOBAL flavor of appsdk for androidx apps|| Recommended
+
| Appsdk 8.1.0.0+
 +
|<code>global</code><br /><code>agf</code>
 +
|<code>ad</code><br /><code>noad</code><br /><code>noid</code>
 +
| + is most recent version<br /><code>8.1.0.0</code>
 +
|<code>'com.nielsenappsdk.global:ad:+'<br />'com.nielsenappsdk.global:noad:+'<br />'com.nielsenappsdk.global:noad:8.1.0.0'</code>
 
|-
 
|-
|com.nielsenappsdk:global||GLOBAL flavor of appsdk for non androidx apps||
+
| AppSDK 7 to 8.0.0.0
|-
+
|<code>globalx</code><br /><code>global</code><br /><code>agf</code><br /><code>agfx</code>
|com.nielsenappsdk:agfx||AGF flavor of appsdk for androidx apps|| Recommended
+
|not used
|-
+
| + is most recent version<br /><code>7.1.0.0</code><br /><code>8.0.0.0</code>
|com.nielsenappsdk:agf||AGF flavor of appsdk for non androidx apps||
+
|<code>'com.nielsenappsdk:globalx:+'<br />'com.nielsenappsdk:global:8.0.0.0'<br />'com.nielsenappsdk:agf:8.0.0.0'</code><br /><br />
 
 
 
|}
 
|}
 +
<blockquote>If using version control, a warning message will be displayed within the console trace during the build of your app,
 +
and it will show all sdk versions released to-date, allowing a developer to select a more recent build if desired. </blockquote> Starting with Version 8.x, the Nielsen SDK will only support Androidx.
  
<blockquote>Starting with Version 8.x, the Nielsen SDK will only support Androidx. If <code>com.nielsenappsdk:global</code> is requested, you will be provided with <code>com.nielsenappsdk:globalx </code>. It is recommended to use Androidx version whenever possible. </blockquote>
+
== Ensuring you have the latest release information ==
<br>
+
It is recommended to use <code>+</code> for <code>${version}</code> to ensure you receive the most recent version of the NielsenSDK; however, if you are specifying the exact version of the SDK, please use only the first 3 digits.  EG: 8.1.0<br>
Below is an example for dependency
 
  
<source lang="java">
+
A sample if using AppSDK 8.1.0.0 + would be:
 +
<source lang="html">
 
dependencies { ....
 
dependencies { ....
implementation 'com.nielsenappsdk:globalx:+'
+
implementation 'com.nielsenappsdk.global:ad:+'
 
}
 
}
 
</source>
 
</source>
 
+
<br>
== Ensuring you have the latest release information ==
+
If using AppSDK 7 to 8.0.0.0
It is recommended to use the most recent version of the NielsenSDK by using the following:
+
<source lang="html">
<source lang="java">
 
 
dependencies { ....
 
dependencies { ....
implementation 'com.nielsenappsdk:globalx:+'
+
implementation 'com.nielsenappsdk:globalx:8.0.0'
 
}
 
}
 
</source>
 
</source>
Line 126: Line 99:
  
 
<source lang="java">task NielsenSdkReleaseCheck {
 
<source lang="java">task NielsenSdkReleaseCheck {
  def login_details = project.property("nielsen_user")+":"+project.property("nielsen_authCode")
+
    def p = ['curl',"https://raw.githubusercontent.com/NielsenDigitalSDK/" +
  def p = ['curl', '-u',login_details ,"https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/com/nielsenappsdk/global/NielsenAppSdk-ReadMe.md"].execute().text
+
            "nielsenappsdk-android/master/com/nielsenappsdk/global/" +
  project.logger.log(LogLevel.ERROR,p)
+
            "NielsenAppSdk-ReadMe.md"].execute().text
 +
    project.logger.log(LogLevel.ERROR,p)
 
}
 
}
preBuild.dependsOn('NielsenSdkReleaseCheck')</source>
+
preBuild.dependsOn('NielsenSdkReleaseCheck')
 +
</source>
  
 
=== App Suffix Reference ===
 
=== App Suffix Reference ===
Line 142: Line 117:
 
The below is an example of a very basic app build.gradle file
 
The below is an example of a very basic app build.gradle file
 
<syntaxhighlight lang=Java>
 
<syntaxhighlight lang=Java>
apply plugin: 'com.android.application'
+
plugins {
 +
    id 'com.android.application'
 +
}
  
 
android {
 
android {
     compileSdkVersion 29
+
     compileSdkVersion 30
 +
    buildToolsVersion "30.0.3"
  
 
     defaultConfig {
 
     defaultConfig {
         applicationId "com.nielsen.android_bsdk_app"
+
         applicationId "com.nielsen.simplestandardandroidart"
 
         minSdkVersion 23
 
         minSdkVersion 23
         targetSdkVersion 29
+
         targetSdkVersion 30
 
         versionCode 1
 
         versionCode 1
 
         versionName "1.0"
 
         versionName "1.0"
Line 166: Line 144:
 
         //Copy below code inside repository section of app’s build.gradle file
 
         //Copy below code inside repository section of app’s build.gradle file
 
         maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
 
         maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
            credentials {
 
                //Make sure you add nielsen_user and nielsen_passwd with respective nielsen provided
 
                // values to global gradle.properties file
 
                username = project.property("nielsen_user")
 
                password = project.property("nielsen_authCode")
 
            }
 
            authentication {
 
                basic(BasicAuthentication)
 
            }
 
 
         }
 
         }
 +
    }
 +
    compileOptions {
 +
        sourceCompatibility JavaVersion.VERSION_1_8
 +
        targetCompatibility JavaVersion.VERSION_1_8
 
     }
 
     }
 +
}
 +
 +
dependencies {
 +
 +
    implementation 'androidx.appcompat:appcompat:1.2.0'
 +
    implementation 'com.google.android.material:material:1.1.0'
 +
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
 +
    testImplementation 'junit:junit:4.+'
 +
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
 +
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
 +
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
 +
    implementation 'com.google.android.gms:play-services-ads:20.3.0'
 +
    implementation 'com.nielsenappsdk.global:ad:+'
 
}
 
}
  
 
task NielsenSdkReleaseCheck {
 
task NielsenSdkReleaseCheck {
    def login_details = project.property("nielsen_user")+":"+project.property("nielsen_authCode")
+
     def p = ['curl',"https://raw.githubusercontent.com/NielsenDigitalSDK/" +
     def p = ['curl', '-u',login_details ,"https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-
+
            "nielsenappsdk-android/master/com/nielsenappsdk/global/" +
android/master/com/nielsenappsdk/global/NielsenAppSdk-ReadMe.md"].execute().text
+
            "NielsenAppSdk-ReadMe.md"].execute().text
 
     project.logger.log(LogLevel.ERROR,p)
 
     project.logger.log(LogLevel.ERROR,p)
 
}
 
}
 
preBuild.dependsOn('NielsenSdkReleaseCheck')
 
preBuild.dependsOn('NielsenSdkReleaseCheck')
 
dependencies {
 
    implementation fileTree(include: ['*.jar'], dir: 'libs')
 
    implementation 'com.nielsenappsdk:globalx:7.2.0.0'
 
    implementation 'androidx.appcompat:appcompat:1.1.0'
 
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
 
    testImplementation 'junit:junit:4.12'
 
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
 
    implementation 'com.google.android.gms:play-services:+'
 
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
 
    implementation 'com.android.support:multidex:1.0.3'
 
    testImplementation 'junit:junit:4.12'
 
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
 
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 17:36, 13 October 2021

Engineering Portal breadcrumbArrow.png Digital breadcrumbArrow.png Digital Downloads breadcrumbArrow.png Digital Measurement Android Artifactory Guide

The Nielsen AppSDK can either be downloaded directly from the Engineering Portal, or can be integrated directly within an application through the use of a CocoaPod or Gradle.

How to install the Nielsen AppSDK using Gradle for Android

Below are the steps which need to be performed by app developers to integrate the Nielsen App SDK within an Android application.

Add Nielsen Maven Repository

Please add the Nielsen maven repository inside the repositories section of your app's module build.gradle file like below:

repositories {
   //Copy below code inside repository section of app’s build.gradle file
maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
            }


AlertIcon.png

Starting on Sept 21, 2021 the Nielsen SDK has moved to a public repository. Credentials are no longer required.


Add gradle dependency

Please add Nielsen app SDK as compile time dependency inside build.gradle file as below

grade 4.x and above

For gradle version starting with 4.x add the following line inside dependencies section of build.gradle file.

implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'


dependencies { ....
implementation 'com.nielsenappsdk.global:ad:+'  // Using + will provide the latest version
}

grade prior to 4.x

For gradle version previous to 4.x add below line inside dependencies section of build.gradle file.

compile 'com.nielsenappsdk.${market}:${flavor}:${version}'


dependencies { ....
compile 'com.nielsenappsdk.global:ad:+'  // Using + will provide the latest version
}

Version and Flavor Control

With version 8.1.0.0+ of the Nielsen appSDK, it is possible to request a specific ${flavor} that reads the Google Ad ID, Android ID, or is Kid app friendly (noID). For example:

implementation 'com.nielsenappsdk.${market}:${flavor}:${version}'
  • if the flavor selected is equal to ad the Nielsen SDK will try to obtain the googleAdID if the user has not opted out.
  • If the flavor is noad then the Nielsen SDK will attempt to obtain the AndroidID.
  • If the flavor selected is noid then the Nielsen SDK will not request any identifier which is required for many kid apps.

To ensure backward compatability, implementation 'com.nielsenappsdk:${market}:${version}' will continue to be supported.

SDK Version ${market} ${flavor} ${version} Examples
Appsdk 8.1.0.0+ global
agf
ad
noad
noid
+ is most recent version
8.1.0.0
'com.nielsenappsdk.global:ad:+'
'com.nielsenappsdk.global:noad:+'
'com.nielsenappsdk.global:noad:8.1.0.0'
AppSDK 7 to 8.0.0.0 globalx
global
agf
agfx
not used + is most recent version
7.1.0.0
8.0.0.0
'com.nielsenappsdk:globalx:+'
'com.nielsenappsdk:global:8.0.0.0'
'com.nielsenappsdk:agf:8.0.0.0'


If using version control, a warning message will be displayed within the console trace during the build of your app, and it will show all sdk versions released to-date, allowing a developer to select a more recent build if desired.

Starting with Version 8.x, the Nielsen SDK will only support Androidx.

Ensuring you have the latest release information

It is recommended to use + for ${version} to ensure you receive the most recent version of the NielsenSDK; however, if you are specifying the exact version of the SDK, please use only the first 3 digits. EG: 8.1.0

A sample if using AppSDK 8.1.0.0 + would be:

dependencies { ....
implementation 'com.nielsenappsdk.global:ad:+'
}


If using AppSDK 7 to 8.0.0.0

dependencies { ....
implementation 'com.nielsenappsdk:globalx:8.0.0'
}


In addition, please add below gradle task inside your build.gradle (Module:app) or build.gradle(Project:My-app) file to fetch latest release details of nielsen app sdk as below:

Please note: The build.gradle (Module:app) can overwrite the build.gradle(Project:My-app).

task NielsenSdkReleaseCheck {
    def p = ['curl',"https://raw.githubusercontent.com/NielsenDigitalSDK/" +
            "nielsenappsdk-android/master/com/nielsenappsdk/global/" +
            "NielsenAppSdk-ReadMe.md"].execute().text
    project.logger.log(LogLevel.ERROR,p)
}
preBuild.dependsOn('NielsenSdkReleaseCheck')

App Suffix Reference

The Nielsen AppSDK has various configurations per market and distribution type, which can be determined by reviewing the sdk suffix. The first part will be the SDK version: 3 digits for the major SDK version and 1 digit for the minor SDK version. EG: aa.8.1.0.0_abc

Sync

If you are finished with all previous steps then you can sync your build.gradle and after successful build you are ready to use Nielsen App SDK library in your code.

Sample file

The below is an example of a very basic app build.gradle file

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.nielsen.simplestandardandroidart"
        minSdkVersion 23
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    repositories {
        //Copy below code inside repository section of app’s build.gradle file
        maven { url 'https://raw.githubusercontent.com/NielsenDigitalSDK/nielsenappsdk-android/master/'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'com.google.android.gms:play-services-ads:20.3.0'
    implementation 'com.nielsenappsdk.global:ad:+'
}

task NielsenSdkReleaseCheck {
    def p = ['curl',"https://raw.githubusercontent.com/NielsenDigitalSDK/" +
            "nielsenappsdk-android/master/com/nielsenappsdk/global/" +
            "NielsenAppSdk-ReadMe.md"].execute().text
    project.logger.log(LogLevel.ERROR,p)
}
preBuild.dependsOn('NielsenSdkReleaseCheck')