@@ -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