Skip to content

Commit 60a987b

Browse files
committed
Release 3.1.0
1 parent 9b8c951 commit 60a987b

29 files changed

+532
-138
lines changed

Diff for: Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ dismantle-adb-reverse:
4848
adb reverse --remove-all
4949

5050
javadoc:
51-
./gradlew :lib:generateReleaseJavadoc
51+
./gradlew :lib:javadoc
5252

5353
zip: release
5454
cp lib/build/outputs/aar/unity-ads-release.aar unity-ads.aar

Diff for: README.md

+22-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
1-
# Unity Ads 3 Android Release Repository
1+
# unity-ads-android
2+
Unity Ads Android Development Repository
23

3-
Welcome to the Unity Ads 3 Android release repository.
4+
### Execute unit tests
45

5-
## Binaries
6+
1. Connect Android device or simulator
7+
1. `make test`
8+
1. Coverage report available at `lib/build/reports/coverage/debug/index.html`
69

7-
Binaries can be found from the [releases tab](https://github.com/Unity-Technologies/unity-ads-android/releases).
10+
### Build example application
811

9-
## Integration Guide
12+
1. `./gradlew assemble`
13+
1. Find example app in the `app/build/outputs/apk/` subfolder
1014

11-
Integration guide can be found [here](https://github.com/Unity-Technologies/unity-ads-android/wiki/sdk_android_integration_guide). There is [integration tutorial video](https://www.youtube.com/watch?v=MNdJ0KWlYPw) on YouTube.
15+
### Releasing
1216

13-
## API Reference
17+
Step 1. Make a staged commit by removing ./publish_to_public.sh from the end of .travis.yml
1418

15-
API Reference can be found [here](https://github.com/Unity-Technologies/unity-ads-android/wiki/sdk_android_api_reference)
19+
Step 2. Tag the release, push tag to internal repository, Travis will automatically publish a release in internal repository under the releases tab
1620

17-
## Transition guide from Unity Ads 1.5
21+
Step 3. Final testing with QA
1822

19-
Transition guide from Unity Ads 1.5 can be found [here](https://github.com/Unity-Technologies/unity-ads-android/wiki/sdk_android_transition_guide)
23+
Step 4. Add ./publish_to_public.sh back to .travis.yml, re-tag the release and push tag
24+
25+
#### Updating staged binaries
26+
27+
If issues are found during testing or other changes need to be made before pushing the release to public repository, you need to update the staged binaries.
28+
29+
Step 1. Delete the release from internal repository
30+
31+
Step 2. Continue with release steps 2 and 3

Diff for: app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "com.unity3d.ads.example"
99
minSdkVersion 14
1010
targetSdkVersion 26
11-
versionCode = 3003
12-
versionName = "3.0.3"
11+
versionCode = 3100
12+
versionName = "3.1.0"
1313
}
1414

1515
flavorDimensions "arEnabled"

Diff for: app/src/main/java/com/unity3d/ads/example/UnityAdsExample.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ protected void onCreate(Bundle savedInstanceState) {
4444
WebView.setWebContentsDebuggingEnabled(true);
4545
}
4646

47-
UnityAds.setListener(unityAdsListener);
47+
UnityAds.addListener(unityAdsListener);
4848
UnityAds.setDebugMode(true);
4949

5050
MediationMetaData mediationMetaData = new MediationMetaData(this);

Diff for: app/src/main/java/com/unity3d/ads/example/UnityMonetizationExample.java

-4
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@
1212
import android.widget.CheckBox;
1313
import android.widget.EditText;
1414
import android.widget.LinearLayout;
15-
import android.widget.RelativeLayout;
16-
import android.widget.TextView;
1715
import android.widget.Toast;
1816

1917
import com.unity3d.ads.UnityAds;
2018
import com.unity3d.ads.metadata.MediationMetaData;
21-
import com.unity3d.ads.metadata.MetaData;
2219
import com.unity3d.ads.metadata.PlayerMetaData;
2320

2421
import com.unity3d.services.UnityServices;
@@ -30,7 +27,6 @@
3027
import com.unity3d.services.core.webview.WebView;
3128
import com.unity3d.services.monetization.IUnityMonetizationListener;
3229
import com.unity3d.services.monetization.UnityMonetization;
33-
import com.unity3d.services.monetization.placementcontent.ads.IShowAdListener;
3430
import com.unity3d.services.monetization.placementcontent.ads.ShowAdListenerAdapter;
3531
import com.unity3d.services.monetization.placementcontent.ads.ShowAdPlacementContent;
3632
import com.unity3d.services.monetization.placementcontent.core.PlacementContent;

Diff for: build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ buildscript {
99

1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files
12+
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
13+
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
1214
}
1315
}
1416

Diff for: lib/build.gradle

+106-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
apply plugin: 'com.android.library'
2+
apply plugin: 'com.jfrog.bintray'
3+
apply plugin: 'com.github.dcendents.android-maven'
4+
5+
ext {
6+
bintrayRepo = "UnityAds"
7+
bintrayName = "unityads"
8+
9+
publishedGroupId = 'com.unity3d.ads'
10+
libraryName = 'unity-ads'
11+
artifact = 'unity-ads'
12+
archivesBaseName = 'unity-ads'
13+
14+
libraryDescription = 'Monetize your entire player base and reach new audiences with video ads.'
15+
16+
siteUrl = 'https://github.com/Unity-Technologies/unity-ads-android'
17+
gitUrl = 'https://github.com/Unity-Technologies/unity-ads-android.git'
18+
19+
libraryVersion = '3.0.3'
20+
21+
developerId = 'sbankhead'
22+
developerName = 'Steven Bankhead'
23+
developerEmail = '[email protected]'
24+
25+
licenseName = 'The Apache Software License, Version 2.0'
26+
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
27+
allLicenses = ["Apache-2.0"]
28+
}
29+
30+
version = libraryVersion
231

332
android {
433
compileSdkVersion 26
@@ -21,14 +50,14 @@ android {
2150
All SDK with version numbers with last two digits >= 50 will be treated
2251
as China SDK for filtering in the backend.
2352
*/
24-
versionCode = 3003
25-
versionName = "3.0.3"
53+
versionCode = 3100
54+
versionName = "3.1.0"
2655

2756
setProperty("archivesBaseName", "unity-ads")
2857

2958
buildConfigField 'String', 'WEBVIEW_BRANCH', getPropertyStringWithDefaultValue('WEBVIEW_BRANCH', '"' + versionName + '"')
3059

31-
testBuildType "coverage"
60+
testBuildType "debug"
3261

3362
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
3463
testInstrumentationRunnerArguments disableAnalytics: 'true' // Won't work yet, see: https://code.google.com/p/android/issues/detail?id=188241
@@ -57,6 +86,14 @@ android {
5786
buildConfigField 'String', 'WEBVIEW_BRANCH', getPropertyStringWithDefaultValue('WEBVIEW_BRANCH', '"development"')
5887
}
5988
}
89+
90+
libraryVariants.all { variant ->
91+
variant.outputs.all { output ->
92+
if (outputFile != null && outputFileName.endsWith('.aar')) {
93+
outputFileName = "${archivesBaseName}-release.aar"
94+
}
95+
}
96+
}
6097
}
6198

6299
dependencies {
@@ -74,21 +111,74 @@ android.testVariants.all { variant ->
74111
}
75112
}
76113

77-
android.libraryVariants.all { variant ->
78-
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
79-
description "Generates Javadoc for $variant.name."
80-
source = variant.javaCompiler.source
114+
task javadoc(type: Javadoc, overwrite: true) {
115+
description "Generates Javadoc for Release"
116+
source = android.sourceSets.main.java.srcDirs
81117
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
82118
doFirst {
83-
classpath = files(variant.javaCompiler.classpath.files) + files(ext.androidJar)
119+
classpath = project.files(android.getBootClasspath().join(File.pathSeparator)) + files(ext.androidJar)
84120
}
85-
options {
86-
links "http://docs.oracle.com/javase/7/docs/api/"
87-
linksOffline "http://developer.android.com/reference","${android.sdkDirectory}/docs/reference"
121+
options {
122+
links "http://docs.oracle.com/javase/7/docs/api/"
123+
linksOffline "http://developer.android.com/reference","${android.sdkDirectory}/docs/reference"
88124
}
89125
exclude '**/R.java'
90126
exclude 'com/unity3d/services/ar/view/GLSurfaceView.java'
91-
destinationDir = file("../javadoc/")
127+
exclude 'com/unity3d/services/ar/api/AR.java'
128+
exclude 'com/unity3d/services/ar/view/ARView.java'
129+
exclude 'com/unity3d/services/ar/view/ARViewHandler.java'
130+
destinationDir = file("../javadoc/")
131+
}
132+
133+
task androidJavadocsJar(type: Jar, dependsOn: javadoc) {
134+
classifier = "javadoc"
135+
baseName = "${archivesBaseName}"
136+
from javadoc.destinationDir
137+
}
138+
139+
task androidSourcesJar(type: Jar) {
140+
classifier = "sources"
141+
baseName = "${archivesBaseName}"
142+
from android.sourceSets.main.java.srcDirs
143+
}
144+
145+
artifacts {
146+
archives androidJavadocsJar
147+
archives androidSourcesJar
148+
}
149+
150+
task localProperties {
151+
if (!file("$rootDir/local.properties").exists()) {
152+
file("$rootDir/local.properties").withWriterAppend { w -> "" }
153+
}
154+
}
155+
156+
// Bintray
157+
bintray {
158+
Properties properties = new Properties()
159+
properties.load(project.rootProject.file('local.properties').newDataInputStream())
160+
161+
user = properties.getProperty("bintray.user")
162+
key = properties.getProperty("bintray.apikey")
163+
164+
configurations = ['archives']
165+
pkg {
166+
repo = bintrayRepo
167+
name = bintrayName
168+
desc = libraryDescription
169+
websiteUrl = siteUrl
170+
vcsUrl = gitUrl
171+
licenses = allLicenses
172+
publish = true
173+
publicDownloadNumbers = false
174+
version {
175+
desc = libraryDescription
176+
gpg {
177+
sign = true //Determines whether to GPG sign the files. The default is false
178+
passphrase = properties.getProperty("bintray.gpg.password")
179+
//Optional. The passphrase for GPG signing'
180+
}
181+
}
92182
}
93183
}
94184

@@ -101,3 +191,7 @@ def getPropertyStringWithDefaultValue(String key, String defaultValue) {
101191
}
102192
return value != null ? value : defaultValue
103193
}
194+
195+
if (project.rootProject.file('local.properties').exists()) {
196+
apply from: 'mavenPomBintrayUpload.gradle'
197+
}
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,49 @@
11
package com.unity3d.ads.test;
22

33
import com.unity3d.ads.test.unit.*;
4+
import com.unity3d.services.ads.properties.AdsPropertiesTests;
5+
import com.unity3d.services.analytics.UnityAnalyticsTest;
46

57
import org.junit.runner.RunWith;
68
import org.junit.runners.Suite;
79

810
@RunWith(Suite.class)
911
@Suite.SuiteClasses({
10-
AdUnitActivityTest.class,
11-
AdvertisingIdentifierTest.class,
12-
BroadcastTest.class,
13-
CacheTest.class,
14-
ClientPropertiesTest.class,
15-
ConnectivityTest.class,
16-
DeviceTest.class,
17-
EventIdTest.class,
18-
EnvironmentCheckTest.class,
19-
EventIdTest.class,
20-
InitializeThreadTest.class,
21-
InvocationTest.class,
22-
MetaDataTest.class,
23-
NativeCallbackTest.class,
24-
PackageManagerTest.class,
25-
PlacementTest.class,
26-
PublicApiTest.class,
27-
RequestTest.class,
28-
SdkPropertiesTest.class,
29-
StorageDiskTest.class,
30-
StorageGeneralTest.class,
31-
StorageMemoryTest.class,
32-
VideoViewTest.class,
33-
WebViewAppTest.class,
34-
WebViewBridgeInterfaceTest.class,
35-
WebViewBridgeTest.class,
36-
WebViewCallbackTest.class,
37-
LifecycleListenerTest.class,
38-
VolumeChangeTest.class,
39-
UtilitiesTest.class,
40-
WebPlayerTest.class,
41-
PreferencesTest.class,
42-
WebRequestThreadPoolTest.class
12+
AdUnitActivityTest.class,
13+
AdvertisingIdentifierTest.class,
14+
BroadcastTest.class,
15+
CacheTest.class,
16+
ClientPropertiesTest.class,
17+
ConnectivityTest.class,
18+
DeviceTest.class,
19+
EventIdTest.class,
20+
EnvironmentCheckTest.class,
21+
EventIdTest.class,
22+
InitializeThreadTest.class,
23+
InvocationTest.class,
24+
MetaDataTest.class,
25+
NativeCallbackTest.class,
26+
PackageManagerTest.class,
27+
PlacementTest.class,
28+
PublicApiTest.class,
29+
RequestTest.class,
30+
SdkPropertiesTest.class,
31+
StorageDiskTest.class,
32+
StorageGeneralTest.class,
33+
StorageMemoryTest.class,
34+
VideoViewTest.class,
35+
WebViewAppTest.class,
36+
WebViewBridgeInterfaceTest.class,
37+
WebViewBridgeTest.class,
38+
WebViewCallbackTest.class,
39+
LifecycleListenerTest.class,
40+
VolumeChangeTest.class,
41+
UtilitiesTest.class,
42+
WebPlayerTest.class,
43+
PreferencesTest.class,
44+
WebRequestThreadPoolTest.class,
45+
UnityAnalyticsTest.class,
46+
AdsPropertiesTests.class
4347
})
4448

4549
public class UnitTestSuite {}

Diff for: lib/src/androidTest/java/com/unity3d/ads/test/unit/ClientPropertiesTest.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
import org.junit.Test;
1818
import org.junit.runner.RunWith;
1919

20+
import java.util.Arrays;
21+
import java.util.HashSet;
22+
import java.util.Set;
23+
2024
import static org.junit.Assert.*;
2125

2226
@RunWith(AndroidJUnit4.class)
@@ -32,7 +36,13 @@ public void resetTests () {
3236
ClientProperties.setApplicationContext(null);
3337
ClientProperties.setActivity(null);
3438
ClientProperties.setGameId(null);
35-
AdsProperties.setListener(null);
39+
this.removeListeners();
40+
}
41+
42+
private void removeListeners() {
43+
for (IUnityAdsListener listener : AdsProperties.getListeners()) {
44+
AdsProperties.removeListener(listener);
45+
}
3646
}
3747

3848
@Test
@@ -88,8 +98,8 @@ public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
8898
}
8999
};
90100

91-
AdsProperties.setListener(listener);
92-
assertEquals("Listener was not the same as expected", listener, AdsProperties.getListener());
101+
AdsProperties.addListener(listener);
102+
assertEquals("Listener was not the same as expected", new HashSet<>(Arrays.asList(listener)), AdsProperties.getListeners());
93103
}
94104

95105
public class MockActivity extends Activity {

Diff for: lib/src/androidTest/java/com/unity3d/ads/test/unit/DeviceTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ public void testNetworkOperatorName () {
9494
assertNotNull("Expected network operator name to be something else than null", Device.getNetworkOperatorName());
9595
}
9696

97+
@Test
98+
public void testNetworkCountryISO () {
99+
assertNotNull("Expected network operator name to be something else than null", Device.getNetworkCountryISO());
100+
}
101+
97102
@Test
98103
public void testGetFreeSpace () {
99104
assertTrue("There should be space left in the SDK cache directory", Device.getFreeSpace(SdkProperties.getCacheDirectory()) > 0);

0 commit comments

Comments
 (0)