Skip to content
This repository has been archived by the owner on May 22, 2023. It is now read-only.

Commit

Permalink
Release: version 5.17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mopubservice committed May 11, 2021
1 parent 39336b1 commit c6694a4
Show file tree
Hide file tree
Showing 234 changed files with 9,404 additions and 7,225 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## Version 5.17.0 (May 11, 2021)
- **Features**
- SDK binary artifacts are uploaded to Maven Central Repository.
- Update AndroidX Media2 dependencies from version 1.1.1 to 1.1.3.
- Improve MoPub SDK modularization with 'mopub-sdk-networking' and 'mopub-sdk-util' libraries.
- Add ProGuard rules for AudioFocusHandler and MediaPlayer.

- **Bug Fixes**
- Fix rare audio focus handling issue when application is in the background.

## Version 5.16.4 (March 31, 2021)
- **Bug Fixes**
- Fix `InvalidStateException` when finishing VAST videos on some devices.
Expand Down
119 changes: 119 additions & 0 deletions Jenkinsauto
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#!/usr/bin/env groovy

pipeline {
agent any
environment {
ANDROID_HOME = '/Users/jenkins/Library/Android/sdk'
ANDROID_BUILD_TOOLS_VERSION = '30.0.3'
ANDROID_CONNECTED_TEST_RETRY_COUNT = 3

APK_INTERNAL_RELEASE_SIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-signed.apk'
APK_INTERNAL_RELEASE_UNSIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned.apk'
APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned-aligned.apk'

APK_EXTERNAL_RELEASE_SIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-signed.apk'
APK_EXTERNAL_RELEASE_UNSIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned.apk'
APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned-aligned.apk'

projectName = """${
sh(script: 'IFS="/" read -ra TOKENS <<< "${JOB_NAME}"; echo ${TOKENS[0]}', returnStdout: true).trim()
}"""
PARSED_JOB_NAME = URLDecoder.decode(env.JOB_NAME, 'UTF-8')
}

stages {
stage('Build AARs') {
steps {
echo "Building the MoPub SDK AARs"
sh '''
#!/bin/bash
./gradlew clean
./gradlew :mopub-sdk:build -x test
./gradlew :mopub-sdk:mopub-sdk-base:build -x test
./gradlew :mopub-sdk:mopub-sdk-banner:build -x test
./gradlew :mopub-sdk:mopub-sdk-fullscreen:build -x test
./gradlew :mopub-sdk:mopub-sdk-native-static:build -x test
./gradlew :mopub-sdk:mopub-sdk-networking:build -x test
./gradlew :mopub-sdk:mopub-sdk-util:build -x test
'''
}
}
stage('Build APKs') {
steps {
echo "Building the MoPub Sample App"
sh '''
#!/bin/bash
./gradlew :mopub-sample:build -x test
'''
}
}
stage('Internal automation tests') {
steps {
echo "Internal Automation Tests are running - ${PARSED_JOB_NAME}"
sh '''
#!/bin/bash
chmod +x scripts/private/androidRT.sh
scripts/private/androidRT.sh
'''
}
}
stage('External automation tests') {
steps {
echo "External Automation Tests are running - ${PARSED_JOB_NAME}"
sh '''
#!/bin/bash
chmod +x scripts/private/android.sh
scripts/private/android.sh
'''
}
}

stage('Sign apk Internal') {
steps {
// Remove old APKs generated by this step
sh 'rm -f $APK_INTERNAL_RELEASE_SIGNED'
sh 'rm -f $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Create unsigned and aligned APK from unsigned APK
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 $APK_INTERNAL_RELEASE_UNSIGNED $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Use credentials to create signed APK from unsigned and aligned APK
withCredentials([string(credentialsId: 'android_store_key_pass', variable: 'JKS_PASS')]) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out $APK_INTERNAL_RELEASE_SIGNED $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'
}
}
}
stage('Sign apk External') {
steps {
// Remove old APKs generated by this step
sh 'rm -f $APK_EXTERNAL_RELEASE_SIGNED'
sh 'rm -f $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Create unsigned and aligned APK from unsigned APK
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 $APK_EXTERNAL_RELEASE_UNSIGNED $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Use credentials to create signed APK from unsigned and aligned APK
withCredentials([string(credentialsId: 'android_store_key_pass', variable: 'JKS_PASS')]) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out $APK_EXTERNAL_RELEASE_SIGNED $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'
}
}
}

stage('Archive') {
steps {
archiveArtifacts artifacts: 'mopub-sample/build/outputs/**/*.apk', excludes: 'mopub-sample/build/outputs/**/*unsigned.apk, mopub-sample/build/outputs/**/*aligned.apk', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/mopub-sdk-*/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
}
}
}

post {
fixed {
slackSend color: 'GREEN', message: "<${env.BUILD_URL}|${PARSED_JOB_NAME} #${env.BUILD_NUMBER}> has succeeded."
}
failure {
slackSend color: 'RED', message: "Attention @here <${env.BUILD_URL}|${PARSED_JOB_NAME} #${env.BUILD_NUMBER}> has failed."
}
}
}
147 changes: 19 additions & 128 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,156 +1,47 @@
#!/usr/bin/env groovy
def androidAutomationProjectName = "mopub-android-automation"

pipeline {
agent any
environment {
ANDROID_HOME = '/Users/jenkins/Library/Android/sdk'
ANDROID_BUILD_TOOLS_VERSION = '30.0.2'

APK_INTERNAL_RELEASE_SIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-signed.apk'
APK_INTERNAL_RELEASE_UNSIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned.apk'
APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED = 'mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned-aligned.apk'

APK_EXTERNAL_RELEASE_SIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-signed.apk'
APK_EXTERNAL_RELEASE_UNSIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned.apk'
APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED = 'mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned-aligned.apk'

ANDROID_BUILD_TOOLS_VERSION = '30.0.3'
projectName = """${
sh(script: 'IFS="/" read -ra TOKENS <<< "${JOB_NAME}"; echo ${TOKENS[0]}', returnStdout: true).trim()
}"""
PARSED_JOB_NAME = URLDecoder.decode(env.JOB_NAME, 'UTF-8')
}
stages {
stage('Build AARs') {
stage('Unit Tests') {
steps {
echo "Building the MoPub SDK AARs"
echo "Smoke Tests are running - ${PARSED_JOB_NAME}"
sh '''
#!/bin/bash
./gradlew clean
./gradlew :mopub-sdk:build -x test
./gradlew :mopub-sdk:mopub-sdk-base:build -x test
./gradlew :mopub-sdk:mopub-sdk-banner:build -x test
./gradlew :mopub-sdk:mopub-sdk-fullscreen:build -x test
./gradlew :mopub-sdk:mopub-sdk-native-static:build -x test
'''
#!/bin/bash
./gradlew clean build
'''
}
}
stage('Build APKs') {
steps {
echo "Building the MoPub Sample App"
sh '''
#!/bin/bash
./gradlew :mopub-sample:build -x test
'''
}
}
stage('Test') {
parallel {
stage('Running the MoPub SDK Unit Tests') {
steps {
echo "Running the MoPub SDK Unit Tests"
sh '''
#!/bin/bash
./gradlew :mopub-sdk:test -x build
'''
}
}
stage('External Android automation tests') {
steps {
echo "External Automation Tests are running - ${PARSED_JOB_NAME}"
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh '''
#!/bin/bash
chmod +x scripts/private/android.sh
scripts/private/android.sh
'''
}
}
}
stage('Internal Android automation tests') {
steps {
echo "Internal Automation Tests are running - ${PARSED_JOB_NAME}"
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh '''
#!/bin/bash
chmod +x scripts/private/androidRT.sh
scripts/private/androidRT.sh
'''
}
}
}
}
}
stage('Publish Test Results') {

stage('Sign apk') {
steps {
script {
publishHTML (target : [allowMissing: true,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'mopub-sample/build/reports/androidTests/connected/flavors/EXTERNAL',
reportFiles: '**/*',
reportName: 'Android EXTERNAL Automation Test Results'])
publishHTML (target : [allowMissing: true,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: 'mopub-sample/build/reports/androidTests/connected/flavors/INTERNAL',
reportFiles: '**/*',
reportName: 'Android INTERNAL Automation Test Results'])
junit 'mopub-sdk/build/test-results/**/*.xml'
}
}
}
stage('Sign apk') {
parallel {
stage('Internal') {
steps {
script {
// Remove old APKs generated by this step
sh 'rm -f $APK_INTERNAL_RELEASE_SIGNED'
sh 'rm -f $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'

// If something in this step fails, allow the pipeline to continue
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
// Create unsigned and aligned APK from unsigned APK
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 $APK_INTERNAL_RELEASE_UNSIGNED $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Use credentials to create signed APK from unsigned and aligned APK
withCredentials([string(credentialsId: 'android_store_key_pass', variable: 'JKS_PASS')]) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out $APK_INTERNAL_RELEASE_SIGNED $APK_INTERNAL_RELEASE_UNSIGNED_ALIGNED'
}
}
}
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned.apk mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned-aligned.apk'
if (fileExists('mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned.apk')) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned.apk mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned-aligned.apk'
}
}
stage('External') {
steps {
script {
// Remove old APKs generated by this step
sh 'rm -f $APK_EXTERNAL_RELEASE_SIGNED'
sh 'rm -f $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'

// If something in this step fails, allow the pipeline to continue
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
// Create unsigned and aligned APK from unsigned APK
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/zipalign -v -p 4 $APK_EXTERNAL_RELEASE_UNSIGNED $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'

// Use credentials to create signed APK from unsigned and aligned APK
withCredentials([string(credentialsId: 'android_store_key_pass', variable: 'JKS_PASS')]) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out $APK_EXTERNAL_RELEASE_SIGNED $APK_EXTERNAL_RELEASE_UNSIGNED_ALIGNED'
}
}
withCredentials([string(credentialsId: 'android_store_key_pass', variable: 'JKS_PASS')]) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-signed.apk mopub-sample/build/outputs/apk/external/release/mopub-sample-external-release-unsigned-aligned.apk'
if (fileExists('mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned-aligned.apk')) {
sh '$ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS_VERSION/apksigner sign --ks ~/google_play_key.jks --ks-pass pass:$JKS_PASS --out mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-signed.apk mopub-sample/build/outputs/apk/internal/release/mopub-sample-internal-release-unsigned-aligned.apk'
}
}
}
}
}

stage('Archive') {
steps {
script {
archiveArtifacts artifacts: 'mopub-sample/build/outputs/**/*.apk', excludes: 'mopub-sample/build/outputs/**/*unsigned.apk, mopub-sample/build/outputs/**/*aligned.apk', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/mopub-sdk-*/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
}
archiveArtifacts artifacts: 'mopub-sample/build/outputs/**/*.apk', excludes: 'mopub-sample/build/outputs/**/*unsigned.apk, mopub-sample/build/outputs/**/*aligned.apk', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
archiveArtifacts artifacts: 'mopub-sdk/mopub-sdk-*/build/outputs/aar/mopub-sdk-*.aar', onlyIfSuccessful: true
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
The MoPub SDK License can be found at [http://www.mopub.com/legal/sdk-license-agreement/](http://www.mopub.com/legal/sdk-license-agreement/) and the Apache 2.0 License can be found at [http://www.apache.org/licenses/LICENSE-2.0] (http://www.apache.org/licenses/LICENSE-2.0).
The MoPub SDK License can be found at [http://www.mopub.com/legal/sdk-license-agreement/](http://www.mopub.com/legal/sdk-license-agreement/).

Please note that some of the resources in this package are licensed under The Apache 2.0 license, including Disk LRU Cache, Volley, and Exoplayer.
Please note that some of the resources in this package are licensed under The Apache 2.0 license (http://www.apache.org/licenses/LICENSE-2.0), including Disk LRU Cache, Volley, and Exoplayer.
Please note that some of the resources in this package are licensed under The MIT license (https://opensource.org/licenses/MIT), including mockito-kotlin.
Loading

0 comments on commit c6694a4

Please sign in to comment.