Migrate to AGP 3.5.0-beta04 and Studio 3.5 Beta 4

Fixes some errors caused by new lint checks

Ignores navigation tooling projects from doc generation, as the
docs project merges classpaths and ends up crashing as we end up with
XmlPullParser both from the SDK, and also the one we bundle separately
to allow the plugins to work.

Also fixes some plugin tests that broke because AGP changed output
directories.

Temporarily splits AGP versions between the root project, and Compose,
will merge once we have a 3.5* compatible build of Compose studio.

Bug: b/128209482
Bug: b/134764143
Test: ./gradlew bOS
Change-Id: I3a1e33435881e22c50354cc89003c482b63c36a4
diff --git a/buildSrc/build_dependencies.gradle b/buildSrc/build_dependencies.gradle
index da633e8..1c3c5ee 100644
--- a/buildSrc/build_dependencies.gradle
+++ b/buildSrc/build_dependencies.gradle
@@ -23,7 +23,7 @@
 } else {
     build_versions.kotlin = '1.3.31'
 }
-build_versions.lint = '26.4.0'
+build_versions.lint = '26.5.0-beta04'
 build_versions.dokka = '0.9.17-g002'
 
 build_versions.studio = new Properties()
diff --git a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
index 3ca5070..e3d7718 100644
--- a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
@@ -90,6 +90,8 @@
     prebuilts(LibraryGroups.MEDIA2, "1.0.0-beta02")
     prebuilts(LibraryGroups.MEDIAROUTER, "1.1.0-beta02")
     ignore(LibraryGroups.NAVIGATION.group, "navigation-testing")
+    ignore(LibraryGroups.NAVIGATION.group, "navigation-safe-args-generator")
+    ignore(LibraryGroups.NAVIGATION.group, "navigation-safe-args-gradle-plugin")
     prebuilts(LibraryGroups.NAVIGATION, "2.1.0-alpha05")
     prebuilts(LibraryGroups.PAGING, "2.1.0")
     prebuilts(LibraryGroups.PALETTE, "1.0.0")
@@ -105,7 +107,7 @@
     ignore(LibraryGroups.ROOM.group, "room-common-java8")
     prebuilts(LibraryGroups.ROOM, "2.1.0-rc01")
     prebuilts(LibraryGroups.SAVEDSTATE, "1.0.0-beta01")
-    // TODO: Remove this ignore once androidx.security:security-identity-credential:1.0.0-alph01 is released
+    // TODO: Remove this ignore once androidx.security:security-identity-credential:1.0.0-alpha01 is released
     ignore(LibraryGroups.SECURITY.group, "security-identity-credential")
     prebuilts(LibraryGroups.SECURITY, "1.0.0-alpha02")
     prebuilts(LibraryGroups.SHARETARGET, "1.0.0-alpha02")
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index 759ed6f..d32e9d4 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -63,9 +63,9 @@
 const val CANARY_INSTRUMENTATION =
         "com.squareup.canary:canary-android-instrumentation:1.6.2"
 const val LINT_API_MIN = "com.android.tools.lint:lint-api:26.3.0"
-const val LINT_API_LATEST = "com.android.tools.lint:lint-api:26.5.0-alpha10"
-const val LINT_CORE = "com.android.tools.lint:lint:26.5.0-alpha10"
-const val LINT_TESTS = "com.android.tools.lint:lint-tests:26.5.0-alpha10"
+const val LINT_API_LATEST = "com.android.tools.lint:lint-api:26.5.0-beta04"
+const val LINT_CORE = "com.android.tools.lint:lint:26.5.0-beta04"
+const val LINT_TESTS = "com.android.tools.lint:lint-tests:26.5.0-beta04"
 const val MATERIAL = "com.google.android.material:material:1.0.0"
 const val MOCKITO_CORE = "org.mockito:mockito-core:2.19.0"
 const val MOCKITO_KOTLIN = "com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0"
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/GitClient.kt b/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/GitClient.kt
index e2ac7b9c..7e57766 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/GitClient.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/GitClient.kt
@@ -16,7 +16,6 @@
 
 package androidx.build.dependencyTracker
 
-import com.android.annotations.VisibleForTesting
 import org.gradle.api.logging.Logger
 import java.io.File
 import java.util.concurrent.TimeUnit
@@ -110,9 +109,7 @@
     }
 
     companion object {
-        @VisibleForTesting
         internal const val PREV_MERGE_CMD = "git log -1 --merges --oneline"
-        @VisibleForTesting
         internal const val CHANGED_FILES_CMD_PREFIX = "git diff --name-only"
     }
-}
\ No newline at end of file
+}
diff --git a/buildSrc/studio_versions.properties b/buildSrc/studio_versions.properties
index a28682e..c09109a 100644
--- a/buildSrc/studio_versions.properties
+++ b/buildSrc/studio_versions.properties
@@ -3,8 +3,8 @@
 # This file specifies the version of the Android Gradle Plugin and Android Studio to use.
 
 # Android Gradle Plugin version
-agp=3.4.0
+agp=3.5.0-beta04
 # Version properties for ./studiow, which correspond to the version of AGP
-studio_version=3.4.0.18
-idea_major_version=183
-studio_build_number=5452501
+studio_version=3.5.0.16
+idea_major_version=191
+studio_build_number=5619324
diff --git a/camera/camera2/src/main/java/androidx/camera/camera2/impl/compat/params/OutputConfigurationCompatBaseImpl.java b/camera/camera2/src/main/java/androidx/camera/camera2/impl/compat/params/OutputConfigurationCompatBaseImpl.java
index 31597cb..7015f02 100644
--- a/camera/camera2/src/main/java/androidx/camera/camera2/impl/compat/params/OutputConfigurationCompatBaseImpl.java
+++ b/camera/camera2/src/main/java/androidx/camera/camera2/impl/compat/params/OutputConfigurationCompatBaseImpl.java
@@ -16,6 +16,7 @@
 
 package androidx.camera.camera2.impl.compat.params;
 
+import android.annotation.SuppressLint;
 import android.graphics.ImageFormat;
 import android.util.Log;
 import android.util.Size;
@@ -224,6 +225,7 @@
         // only valid up to API 24, and are not guaranteed to work on API levels greater than 23.
         //=========================================================================================
 
+        @SuppressLint("BlockedPrivateApi")
         private static Size getSurfaceSize(@NonNull Surface surface) {
             try {
                 Class<?> legacyCameraDeviceClass = Class.forName(LEGACY_CAMERA_DEVICE_CLASS);
@@ -240,6 +242,7 @@
             }
         }
 
+        @SuppressLint("BlockedPrivateApi")
         private static int getSurfaceFormat(@NonNull Surface surface) {
             try {
                 Class<?> legacyCameraDeviceClass = Class.forName(LEGACY_CAMERA_DEVICE_CLASS);
@@ -257,6 +260,7 @@
 
         }
 
+        @SuppressLint("SoonBlockedPrivateApi")
         private static int getSurfaceGenerationId(@NonNull Surface surface) {
             try {
                 Method getGenerationId = Surface.class.getDeclaredMethod(GET_GENERATION_ID_METHOD);
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b2215a7..fac4b3b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,6 @@
 #Tue Aug 16 10:43:36 PDT 2016
+# IMPORTANT: Also update ui/gradle/wrapper/gradle-wrapper.properties
+# when changing this file
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
index 438f17a..a0e7b5f 100644
--- a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
+++ b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
@@ -39,9 +39,8 @@
         private const val BUILD_DIR = "app/build"
         private const val SOURCE_DIR = "$MAIN_DIR/java/androidx/lifecycle/incap"
         private const val GENERATED_SOURCE_DIR = BUILD_DIR +
-                "/generated/source/apt/debug/androidx/lifecycle/incap"
-        private const val CLASSES_DIR = BUILD_DIR +
-                "/intermediates/javac/debug/compileDebugJavaWithJavac/classes"
+                "/generated/ap_generated_sources/debug/out/androidx/lifecycle/incap"
+        private const val CLASSES_DIR = "$BUILD_DIR/intermediates/javac/debug/classes"
         private const val GENERATED_PROGUARD_DIR = "$CLASSES_DIR/META-INF/proguard"
         private const val APP_CLASS_DIR = "$CLASSES_DIR/androidx/lifecycle/incap"
     }
@@ -350,4 +349,4 @@
                 supportRepo = properties.getProperty("supportRepo")
         }
     }
-}
\ No newline at end of file
+}
diff --git a/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt b/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
index 5687ced..e921567 100644
--- a/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
+++ b/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
@@ -40,10 +40,9 @@
         fun parameters() = listOf(true, false)
 
         private const val SRC_DIR = "src/main/java"
-        private const val GEN_SRC_DIR = "build/generated/source/apt/debug"
+        private const val GEN_SRC_DIR = "build/generated/ap_generated_sources/debug/out/"
         private const val GEN_RES_DIR = "build/generated/resources"
-        private const val CLASS_DIR =
-            "build/intermediates/javac/debug/compileDebugJavaWithJavac/classes"
+        private const val CLASS_DIR = "build/intermediates/javac/debug/classes"
 
         private const val CLEAN_TASK = ":clean"
         private const val COMPILE_TASK = ":compileDebugJavaWithJavac"
diff --git a/samples/BiometricDemos/lint-baseline.xml b/samples/BiometricDemos/lint-baseline.xml
index e631c46..2e8004c 100644
--- a/samples/BiometricDemos/lint-baseline.xml
+++ b/samples/BiometricDemos/lint-baseline.xml
@@ -1,13 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="5" by="lint 3.4.0" client="gradle" variant="all" version="3.4.0">
+<issues format="5" by="lint 3.5.0-beta04" client="gradle" variant="debug" version="3.5.0-beta04">
 
     <issue
-        id="ObsoleteLintCustomCheck"
-        message="Lint found an issue registry (`androidx.build.lint.AndroidXIssueRegistry`) which did not specify the Lint API version it was compiled with.&#xA;&#xA;**This means that the lint checks are likely not compatible.**&#xA;&#xA;If you are the author of this lint check, make your lint `IssueRegistry` class contain&#xA;  override val api: Int = com.android.tools.lint.detector.api.CURRENT_API&#xA;or from Java,&#xA;  @Override public int getApi() { return com.android.tools.lint.detector.api.ApiKt.CURRENT_API; }&#xA;&#xA;If you are just using lint checks from a third party library you have no control over, you can disable these lint checks (if they misbehave) like this:&#xA;&#xA;    android {&#xA;        lintOptions {&#xA;            disable &quot;BanKeepAnnotation&quot;,&#xA;                    &quot;BanParcelableUsage&quot;,&#xA;                    &quot;BanTargetApiAnnotation&quot;,&#xA;                    &quot;MissingTestSizeAnnotation&quot;,&#xA;                    &quot;ObsoleteBuildCompat&quot;&#xA;        }&#xA;    }&#xA;"
-        includedVariants="debug"
-        excludedVariants="release">
+        id="NewApi"
+        message="Exception requires API level 23 (current min is 23): `android.security.keystore.KeyPermanentlyInvalidatedException`, and having a surrounding/preceding version check **does** not help since prior to API level 19, just **loading** the class will cause a crash. Consider marking the surrounding class with `RequiresApi(19)` to ensure that the class is never loaded except when on API 19 or higher."
+        errorLine1="        } catch (KeyPermanentlyInvalidatedException e) {"
+        errorLine2="                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
-            file="../../../../out/buildSrc/lint-checks/build/libs/lint-checks.jar"/>
+            file="src/main/java/com/example/android/biometric/BiometricPromptDemo.java"
+            line="314"
+            column="18"/>
     </issue>
 
     <issue
diff --git a/slices/core/src/main/java/androidx/slice/compat/CompatPermissionManager.java b/slices/core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
index f7fc1f2..99fff44 100644
--- a/slices/core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
+++ b/slices/core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
@@ -19,6 +19,7 @@
 import static androidx.core.content.PermissionChecker.PERMISSION_DENIED;
 import static androidx.core.content.PermissionChecker.PERMISSION_GRANTED;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -61,6 +62,7 @@
         return mContext.getSharedPreferences(mPrefsName, Context.MODE_PRIVATE);
     }
 
+    @SuppressLint("WrongConstant")
     public int checkSlicePermission(Uri uri, int pid, int uid) {
         if (uid == mMyUid) {
             return PERMISSION_GRANTED;
diff --git a/transition/src/main/java/androidx/transition/CanvasUtils.java b/transition/src/main/java/androidx/transition/CanvasUtils.java
index e225b33..9268e63 100644
--- a/transition/src/main/java/androidx/transition/CanvasUtils.java
+++ b/transition/src/main/java/androidx/transition/CanvasUtils.java
@@ -16,6 +16,7 @@
 
 package androidx.transition;
 
+import android.annotation.SuppressLint;
 import android.graphics.Canvas;
 import android.os.Build;
 
@@ -35,6 +36,7 @@
      *
      * IMPORTANT: This method doesn't work on Pie! It will thrown an exception instead
      */
+    @SuppressLint("SoonBlockedPrivateApi")
     static void enableZ(@NonNull Canvas canvas, boolean enable) {
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
             // no shadows yet added into a platform
diff --git a/ui/gradle/wrapper/gradle-wrapper.properties b/ui/gradle/wrapper/gradle-wrapper.properties
index 12da04b..8e0fbb5 100644
--- a/ui/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/gradle/wrapper/gradle-wrapper.properties
@@ -5,4 +5,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=../../../../../tools/external/gradle/gradle-5.4-bin.zip
+distributionUrl=../../../../../tools/external/gradle/gradle-5.4.1-bin.zip
diff --git a/ui/gradlew b/ui/gradlew
index b0ee710..f1f54b1 100755
--- a/ui/gradlew
+++ b/ui/gradlew
@@ -9,6 +9,10 @@
 # Override Kotlin version needed for compose - see buildSrc/build_dependencies.gradle
 export KOTLIN_OVERRIDE="1.3.30-compose-20190503"
 
+# Override AGP version until we have a 3.5* compatible build of Compose Studio
+# TODO: Remove after b/132355581
+export GRADLE_PLUGIN_VERSION="3.4.0"
+
 # Path to the directory containing this script
 DIR="`dirname \"$0\"`/"
 
diff --git a/ui/studio_versions.properties b/ui/studio_versions.properties
index dfa9802..e6cd2b3 100644
--- a/ui/studio_versions.properties
+++ b/ui/studio_versions.properties
@@ -1,8 +1,5 @@
 # This file specifies the version of the Android Gradle Plugin and Android Studio to use
-# TODO: autogenerate this file based on the version of AGP
 
-# the version of the Android Gradle Plugin
-agp=3.4.0
 # version properties for studiow, which should correspond to the version of AGP
 studio_version=3.4.1.0
 idea_major_version=183
diff --git a/ui/studiow b/ui/studiow
index 3524983..c9aec90 100755
--- a/ui/studiow
+++ b/ui/studiow
@@ -174,18 +174,24 @@
 function runStudioLinux() {
   studioPath="${studioUnzippedPath}/android-studio/bin/studio.sh"
   echo "$studioPath &"
+  # Override AGP version until we have a 3.5* compatible build of Compose Studio
+  # TODO: Remove after b/132355581
   env STUDIO_PROPERTIES="${projectDir}/idea.properties" \
       STUDIO_VM_OPTIONS="${projectDir}/../development/studio/studio.vmoptions" \
       KOTLIN_OVERRIDE="1.3.30-compose-20190503" \
+      GRADLE_PLUGIN_VERSION="3.4.0" \
       "${studioPath}" "${projectDir}" &
 }
 
 function runStudioMac() {
   appPath="$(findStudioMacAppPath)"
   echo "open ${appPath}"
+  # Override AGP version until we have a 3.5* compatible build of Compose Studio
+  # TODO: Remove after b/132355581
   env STUDIO_PROPERTIES="${projectDir}/idea.properties" \
       STUDIO_VM_OPTIONS="${projectDir}/../development/studio/studio.vmoptions" \
       KOTLIN_OVERRIDE="1.3.30-compose-20190503" \
+      GRADLE_PLUGIN_VERSION="3.4.0" \
       open -a "${appPath}" "${projectDir}"
 }