Skip to content

Commit 7a7e3be

Browse files
vimanyuGerrit Code Review
authored and
Gerrit Code Review
committed
Merge "Supporting gradle properties in android integration tests."
2 parents 48bd630 + df6fb56 commit 7a7e3be

File tree

5 files changed

+233
-10
lines changed

5 files changed

+233
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
2+
org.gradle.parallel=true
3+
**ADDITIONAL_PROPERTIES**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
2+
org.gradle.parallel=true
3+
# Android Resolver Properties Start
4+
android.useAndroidX=true
5+
android.enableJetifier=true
6+
# Android Resolver Properties End
7+
**ADDITIONAL_PROPERTIES**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
2+
3+
buildscript {
4+
repositories {
5+
jcenter()
6+
google()
7+
}
8+
9+
dependencies {
10+
classpath 'com.android.tools.build:gradle:3.0.1'
11+
}
12+
}
13+
14+
allprojects {
15+
repositories {
16+
flatDir {
17+
dirs 'libs'
18+
}
19+
}
20+
}
21+
22+
// Android Resolver Repos Start
23+
([rootProject] + (rootProject.subprojects as List)).each { project ->
24+
project.repositories {
25+
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
26+
maven {
27+
url "https://maven.google.com"
28+
}
29+
maven {
30+
url "file:///my/nonexistant/test/repo" // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:17
31+
}
32+
maven {
33+
url (unityProjectPath + "/project_relative_path/repo") // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:17
34+
}
35+
maven {
36+
url (unityProjectPath + "/Assets/GeneratedLocalRepo/Firebase/m2repository") // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:10
37+
}
38+
mavenLocal()
39+
jcenter()
40+
mavenCentral()
41+
}
42+
}
43+
// Android Resolver Repos End
44+
apply plugin: 'com.android.application'
45+
46+
dependencies {
47+
implementation fileTree(dir: 'libs', include: ['*.jar'])
48+
// Android Resolver Dependencies Start
49+
compile 'com.android.support:support-annotations:26.1.0' // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:4
50+
compile 'com.google.firebase:firebase-app-unity:5.1.1' // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:10
51+
compile 'com.google.firebase:firebase-common:16.0.0' // Google.AndroidResolverIntegrationTests.SetupDependencies
52+
compile 'org.test.psr:classifier:1.0.1:foo@aar' // Assets/ExternalDependencyManager/Editor/TestDependencies.xml:12
53+
// Android Resolver Dependencies End
54+
**DEPS**}
55+
56+
// Android Resolver Exclusions Start
57+
android {
58+
packagingOptions {
59+
exclude ('lib/unsupported/libFirebaseCppApp-5.1.1.so')
60+
}
61+
}
62+
// Android Resolver Exclusions End
63+
android {
64+
compileSdkVersion **APIVERSION**
65+
buildToolsVersion '**BUILDTOOLS**'
66+
67+
defaultConfig {
68+
minSdkVersion **MINSDKVERSION**
69+
targetSdkVersion **TARGETSDKVERSION**
70+
applicationId '**APPLICATIONID**'
71+
ndk {
72+
abiFilters **ABIFILTERS**
73+
}
74+
versionCode **VERSIONCODE**
75+
versionName '**VERSIONNAME**'
76+
}
77+
78+
lintOptions {
79+
abortOnError false
80+
}
81+
82+
aaptOptions {
83+
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
84+
}**SIGN**
85+
86+
buildTypes {
87+
debug {
88+
minifyEnabled **MINIFY_DEBUG**
89+
useProguard **PROGUARD_DEBUG**
90+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
91+
jniDebuggable true
92+
}
93+
release {
94+
minifyEnabled **MINIFY_RELEASE**
95+
useProguard **PROGUARD_RELEASE**
96+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
97+
}
98+
}**PACKAGING_OPTIONS****SPLITS**
99+
**BUILT_APK_LOCATION**
100+
}**SPLITS_VERSION_CODE****SOURCE_BUILD_SETUP**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
2+
3+
buildscript {
4+
repositories {
5+
jcenter()
6+
google()
7+
}
8+
9+
dependencies {
10+
classpath 'com.android.tools.build:gradle:3.0.1'
11+
}
12+
}
13+
14+
allprojects {
15+
repositories {
16+
flatDir {
17+
dirs 'libs'
18+
}
19+
}
20+
}
21+
22+
apply plugin: 'com.android.application'
23+
24+
dependencies {
25+
implementation fileTree(dir: 'libs', include: ['*.jar'])
26+
**DEPS**}
27+
28+
android {
29+
compileSdkVersion **APIVERSION**
30+
buildToolsVersion '**BUILDTOOLS**'
31+
32+
defaultConfig {
33+
minSdkVersion **MINSDKVERSION**
34+
targetSdkVersion **TARGETSDKVERSION**
35+
applicationId '**APPLICATIONID**'
36+
ndk {
37+
abiFilters **ABIFILTERS**
38+
}
39+
versionCode **VERSIONCODE**
40+
versionName '**VERSIONNAME**'
41+
}
42+
43+
lintOptions {
44+
abortOnError false
45+
}
46+
47+
aaptOptions {
48+
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
49+
}**SIGN**
50+
51+
buildTypes {
52+
debug {
53+
minifyEnabled **MINIFY_DEBUG**
54+
useProguard **PROGUARD_DEBUG**
55+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
56+
jniDebuggable true
57+
}
58+
release {
59+
minifyEnabled **MINIFY_RELEASE**
60+
useProguard **PROGUARD_RELEASE**
61+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
62+
}
63+
}**PACKAGING_OPTIONS****SPLITS**
64+
**BUILT_APK_LOCATION**
65+
}**SPLITS_VERSION_CODE****SOURCE_BUILD_SETUP**

source/AndroidResolver/test/src/AndroidResolverIntegrationTests.cs

Lines changed: 58 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,24 @@ public class AndroidResolverIntegrationTests {
5656
private const string GRADLE_TEMPLATE_LIBRARY_DISABLED =
5757
"Assets/Plugins/Android/mainTemplateLibraryDISABLED.gradle";
5858

59+
/// <summary>
60+
/// Disabled Gradle properties template file.
61+
/// </summary>
62+
private const string GRADLE_TEMPLATE_PROPERTIES_DISABLED =
63+
"Assets/Plugins/Android/gradleTemplateDISABLED.properties";
64+
65+
/// <summary>
5966
/// <summary>
6067
/// Enabled Gradle template file.
6168
/// </summary>
6269
private const string GRADLE_TEMPLATE_ENABLED = "Assets/Plugins/Android/mainTemplate.gradle";
6370

71+
/// <summary>
72+
/// <summary>
73+
/// Enabled Gradle template properties file.
74+
/// </summary>
75+
private const string GRADLE_TEMPLATE_PROPERTIES_ENABLED = "Assets/Plugins/Android/gradleTemplate.properties";
76+
6477
/// <summary>
6578
/// Configure tests to run.
6679
/// </summary>
@@ -75,7 +88,8 @@ public static void ConfigureTestCases() {
7588
// that do not use the Gradle template.
7689
var nonGradleTemplateFilesToIgnore = new HashSet<string>() {
7790
Path.GetFileName(GRADLE_TEMPLATE_DISABLED),
78-
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED)
91+
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED),
92+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED)
7993
};
8094

8195
UnityEngine.Debug.Log("Setting up test cases for execution.");
@@ -110,7 +124,8 @@ public static void ConfigureTestCases() {
110124
"Assets/GeneratedLocalRepo/Firebase/m2repository/com/google/" +
111125
"firebase/firebase-app-unity/5.1.1/firebase-app-unity-5.1.1.aar" },
112126
filesToIgnore: new HashSet<string> {
113-
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED)
127+
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED),
128+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED)
114129
});
115130
}
116131
},
@@ -120,17 +135,28 @@ public static void ConfigureTestCases() {
120135
ClearAllDependencies();
121136
SetupDependencies();
122137
GooglePlayServices.SettingsDialog.UseJetifier = true;
138+
var expectedAssetsDir = "ExpectedArtifacts/NoExport/GradleTemplateJetifier";
139+
string gradleTemplateProperties = null;
140+
// For Unity >= 2019.3f, Jetifier is enabled for the build
141+
// via gradle properties.
142+
if (GradleTemplatePropertiesSupported) {
143+
expectedAssetsDir = "ExpectedArtifacts/NoExport/GradleTemplatePropertiesJetifier";
144+
gradleTemplateProperties = GRADLE_TEMPLATE_PROPERTIES_DISABLED;
145+
}
123146

124147
ResolveWithGradleTemplate(
125148
GRADLE_TEMPLATE_DISABLED,
126-
"ExpectedArtifacts/NoExport/GradleTemplateJetifier",
149+
expectedAssetsDir,
127150
testCase, testCaseComplete,
128151
otherExpectedFiles: new [] {
129152
"Assets/GeneratedLocalRepo/Firebase/m2repository/com/google/" +
130153
"firebase/firebase-app-unity/5.1.1/firebase-app-unity-5.1.1.aar" },
131154
filesToIgnore: new HashSet<string> {
132-
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED)
133-
});
155+
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED),
156+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED)},
157+
deleteGradleTemplateProperties: true,
158+
gradleTemplateProperties: gradleTemplateProperties
159+
);
134160
}
135161
},
136162
new IntegrationTester.TestCase {
@@ -147,7 +173,8 @@ public static void ConfigureTestCases() {
147173
"Assets/GeneratedLocalRepo/Firebase/m2repository/com/google/" +
148174
"firebase/firebase-app-unity/5.1.1/firebase-app-unity-5.1.1.aar" },
149175
filesToIgnore: new HashSet<string> {
150-
Path.GetFileName(GRADLE_TEMPLATE_DISABLED)
176+
Path.GetFileName(GRADLE_TEMPLATE_DISABLED),
177+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED)
151178
});
152179
}
153180
},
@@ -180,7 +207,8 @@ public static void ConfigureTestCases() {
180207
testCaseComplete(testCaseResult);
181208
},
182209
filesToIgnore: new HashSet<string> {
183-
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED)
210+
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED),
211+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED),
184212
});
185213
} finally {
186214
enableDependencies();
@@ -267,7 +295,8 @@ public static void ConfigureTestCases() {
267295
ClearAllDependencies();
268296
SetupDependencies();
269297
var filesToIgnore = new HashSet<string> {
270-
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED)
298+
Path.GetFileName(GRADLE_TEMPLATE_LIBRARY_DISABLED),
299+
Path.GetFileName(GRADLE_TEMPLATE_PROPERTIES_DISABLED)
271300
};
272301

273302
ResolveWithGradleTemplate(
@@ -349,6 +378,13 @@ public static void ConfigureTestCases() {
349378
}
350379
}
351380

381+
/// <summary>
382+
/// Whether Gradle Template properties are supported by the current version of Unity.
383+
/// </summary>
384+
private static bool GradleTemplatePropertiesSupported {
385+
get { return IntegrationTester.Runner.UnityVersion >= 2019.3f; }
386+
}
387+
352388
/// <summary>
353389
/// Whether the Gradle builds are supported by the current version of Unity.
354390
/// </summary>
@@ -435,6 +471,7 @@ private static void ValidateAndroidTargetSelected(
435471
private static void ClearAllDependencies() {
436472
UnityEngine.Debug.Log("Clear all loaded dependencies");
437473
GooglePlayServices.SettingsDialog.UseJetifier = false;
474+
GooglePlayServices.SettingsDialog.PatchPropertiesTemplateGradle = false;
438475

439476
PlayServicesSupport.ResetDependencies();
440477
UpdateAdditionalDependenciesFile(false);
@@ -641,26 +678,37 @@ private static void Resolve(string androidBuildSystem, bool exportProject,
641678
/// <param name="deleteGradleTemplate">Whether to delete the gradle template before
642679
/// testCaseComplete is called.</param>
643680
/// <param name="filesToIgnore">Set of files to relative to the generatedAssetsDir.</param>
681+
/// <param name="gradleTemplateProperties">Gradle template properties to use.</param>
682+
/// <param name="deleteGradleTemplateProperties">Whether to delete the gradle template
683+
/// properties before testCaseComplete is called.</param>
644684
private static void ResolveWithGradleTemplate(
645685
string gradleTemplate,
646686
string expectedAssetsDir,
647687
IntegrationTester.TestCase testCase,
648688
Action<IntegrationTester.TestCaseResult> testCaseComplete,
649689
IEnumerable<string> otherExpectedFiles = null,
690+
bool deleteGradleTemplateProperties = false,
691+
ICollection<string> filesToIgnore = null,
650692
bool deleteGradleTemplate = true,
651-
ICollection<string> filesToIgnore = null) {
693+
string gradleTemplateProperties = null) {
652694
var cleanUpFiles = new List<string>();
653695
if (deleteGradleTemplate) cleanUpFiles.Add(GRADLE_TEMPLATE_ENABLED);
696+
if (deleteGradleTemplateProperties) cleanUpFiles.Add(GRADLE_TEMPLATE_PROPERTIES_ENABLED);
654697
if (otherExpectedFiles != null) cleanUpFiles.AddRange(otherExpectedFiles);
655698
Action cleanUpTestCase = () => {
656699
GooglePlayServices.SettingsDialog.PatchMainTemplateGradle = false;
700+
GooglePlayServices.SettingsDialog.PatchPropertiesTemplateGradle = false;
657701
foreach (var filename in cleanUpFiles) {
658702
if (File.Exists(filename)) File.Delete(filename);
659703
}
660704
};
661705
try {
662706
GooglePlayServices.SettingsDialog.PatchMainTemplateGradle = true;
663707
File.Copy(gradleTemplate, GRADLE_TEMPLATE_ENABLED);
708+
if (gradleTemplateProperties != null) {
709+
GooglePlayServices.SettingsDialog.PatchPropertiesTemplateGradle = true;
710+
File.Copy(gradleTemplateProperties, GRADLE_TEMPLATE_PROPERTIES_ENABLED);
711+
}
664712
Resolve("Gradle", false, expectedAssetsDir, null, filesToIgnore, testCase,
665713
(IntegrationTester.TestCaseResult testCaseResult) => {
666714
if (otherExpectedFiles != null) {
@@ -818,7 +866,7 @@ private static List<string> CompareDirectoryContents(string expectedAssetsDir,
818866
string expectedContentsAsString = "(binary)";
819867
string resolvedContentsAsString = expectedContentsAsString;
820868
string resolvedExtension = Path.GetExtension(resolvedFile).ToLower();
821-
foreach (var extension in new[] { ".xml", ".txt", ".gradle" }) {
869+
foreach (var extension in new[] { ".xml", ".txt", ".gradle", ".properties" }) {
822870
if (resolvedExtension == extension) {
823871
displayContents = true;
824872
break;

0 commit comments

Comments
 (0)