)]}'
{
  "log": [
    {
      "commit": "842b999a53535bc2e2618a367a4af4a13a395669",
      "tree": "c27edb446b12bd5959db88836cf866855eca5a94",
      "parents": [
        "7870d329a5c21132adc16a5974f66839c1422c16"
      ],
      "author": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Thu Feb 08 01:41:51 2024 +0000"
      },
      "committer": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Mon Feb 12 21:12:58 2024 +0000"
      },
      "message": "Add environment variable UNBUNDLED_BUILD_TARGET_SDK_WITH_DESSERT_SHA\n\nUNBUNDLED_BUILD_TARGET_SDK_WITH_DESSERT_SHA enables user to specify\n${codename}.${sha} as min_sdk_version and target_sdk_version in order to\nsupport mainline train building into android build.\n\nTest: TH\nBug: 295905124\nChange-Id: I032d464aaa7314520f98b8eafa53d962940075ce\n"
    },
    {
      "commit": "96ea8845c56518e0f8d39c254464cc690b00e0c5",
      "tree": "466298a3c1b3e396ce9f827e7cc3e184a4286ef4",
      "parents": [
        "786c44f9f37808dc1cc9edd3a19cd6d422e885d3"
      ],
      "author": {
        "name": "Alix",
        "email": "agespino@google.com",
        "time": "Thu Aug 31 15:48:23 2023 +0000"
      },
      "committer": {
        "name": "Alix",
        "email": "agespino@google.com",
        "time": "Mon Oct 23 18:26:53 2023 +0000"
      },
      "message": "add manifest_values application id property to soong\n\nBug:278905106\nTest: go test ./java --run TestManifestValuesApplicationIdSetsPackageName\n\tand locally built a module and checked manifest pacakge_name\nChange-Id: I5c8fd27c177b9e255dce197706f62580894008cb\n"
    },
    {
      "commit": "f7a1027c6bf0c661f8f89b6a84e8fe22f2fc44fe",
      "tree": "9b6ad234349e61480b15e3908a41c42c7c514865",
      "parents": [
        "3fb5c15adf5bca630f6d90df071e5fcfad00acf9"
      ],
      "author": {
        "name": "Alix",
        "email": "agespino@google.com",
        "time": "Wed Sep 27 16:47:56 2023 +0000"
      },
      "committer": {
        "name": "Alix",
        "email": "agespino@google.com",
        "time": "Tue Oct 10 14:31:03 2023 +0000"
      },
      "message": "Use an option struct in aapt.buildActions \u0026 manifestMerger\n\nChange-Id: Ia056ab321e1fd146ed0cdb98fc2d4455601f648c\nTest: Treehugger\n"
    },
    {
      "commit": "fb6a1ee68bd7b17d1a8632082de88504dddc3540",
      "tree": "41b1262c1d6018cd377d537b7c4f196eeb8a3a1c",
      "parents": [
        "d7b50181d9642a6a4e690e17732638fe3da252b3"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Apr 27 16:08:26 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Fri Apr 28 16:23:53 2023 +0000"
      },
      "message": "target_sdk_version replacement should respect REL branches\n\nCurrently, target_sdk_version of MTS tests were being set to 10000 even\nin release branches. This should only happen in active branches.\n\nTest: Unit test\nTest: aapt2 on CtsContentTestCases in udc-dev and verified\ntargetSdkVersion is 34\nBug: 279507428\n\nChange-Id: Ib79318febc0f6e771b3679c0281a97357930ec56\n"
    },
    {
      "commit": "ca70fc40bd5d7bf3b24c25de0a06c2a6df17f7ea",
      "tree": "8c21f8c82f722a14a4a63ce19b96ab84aa0081e1",
      "parents": [
        "ddfab6001487ee655552555ccf8130a09510e7e9"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Mar 01 23:38:49 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Mar 23 19:31:17 2023 +0000"
      },
      "message": "Update target_sdk_version from SdkSpec to ApiLevel\n\ntarget_sdk_version signifies device version and does not need an sdkKind to\ndescribe it fully. Update the type and cleanup existing usages. As a\nside benefit, we also get better error handling since users can no\nlonger enter something like `public_30` as a valid target_sdk_version in bp\nfiles\n\nTest: m nothing\nTest: no change in ninja files (this should be a no-op)\nBug: 208456999\n\nChange-Id: I3c19245e29184bd9e5660ad8981966f64dfa9424\n"
    },
    {
      "commit": "aa2aad6d0fdf0487e93169fa8476f37bdd70d649",
      "tree": "ad452d7232f8d0970ee03869e4537b1c0a3a89f7",
      "parents": [
        "6cf5e0d9cb89b909b5087d4057e6f09e4d093f85"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 31 23:13:45 2023 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Feb 01 00:03:09 2023 +0000"
      },
      "message": "Stop ignoring the targetSdkVersion when it includes the API fingerprint SHA\n\nChange https://r.android.com/1959021 introduced a regression in the\nhandling of the `targetSdkVersion` when using the API fingerprint.\nPrior to that change, when `UseApiFingerprint(ctx)` returned true that\nwould cause all APKs (apart from `framework-res`) that were built to\nuse a `targetSdkVersion` that included the API fingerprint SHA. After\nthat change the `UseApiFingerprint(ctx)` had no effect on the setting\nof `targetSdkVersion`.\n\nThis change corrects that.\n\nBug: 266899206\nTest: UNBUNDLED_BUILD_SDKS_FROM_SOURCE\u003dtrue UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue TARGET_BUILD_APPS\u003d\"NetworkStack\" m\n      aapt2 dump badging out/target/product/generic/system/priv-app/NetworkStack/NetworkStack.apk\n      # Run above before and after this change and see that the targetSdkVersion\n      # has changed to `UpsideDownCake.\u003cSHA\u003e`.\nChange-Id: Ic6e1da552c565cc4bd75cc734b3acb7faec67981\n"
    },
    {
      "commit": "5b8b730cdd4e6c9ffeb971616510ab3bea490954",
      "tree": "5170b300dfde52e948112cb1a8e6a479cc26377d",
      "parents": [
        "7113b19be803d54abca058b9d9384bee0625b206"
      ],
      "author": {
        "name": "Harshit Mahajan",
        "email": "harshitmahajan@google.com",
        "time": "Fri Jun 10 11:24:05 2022 +0000"
      },
      "committer": {
        "name": "Harshit Mahajan",
        "email": "harshitmahajan@google.com",
        "time": "Wed Sep 21 19:09:38 2022 +0000"
      },
      "message": "Enforce mainline modules to have latest target sdk version by default.\n\nDue to GMS target SDK requirements (https://docs.partner.android.com/gms/policies/preview/mba#min-target-sdk)\nwe need to ensure all the  mainline packages to target latest API\nlevel. Currently, the team chases each module to bump their target\nAPI level.\n\nUpdating the build code to make sure that mainline modules\n(i.e updatable modules) target the latest sdk version by default.\nIt would be by default set to 10000 before SDK finalization and updated to the new API level after finalization.\n\nEffectively it would mean:\n1. \u002710000\u0027 in aosp and internal master\n2. Finalized number in development branches like \"33\" in \"tm-dev\"\n3. As sdk hasn\u0027t been finalised in \"udc-dev\", it would be \"10000\"\nwhich would be automatically updated to finalized version after sdk finalization.\n\nFor local development if the target sdk version is required to be set,\nusers would need to set Updatable flag to false.\nEnforce_default_target_sdk_version flag needs to be used in bp file,\nif this feature needs to be tested locally when updatable: false.\n\nBug: b/227460469\nTest: m nothing\nChange-Id: I05e0ae74ae44fd73df75e91b926bcc924446253f\n"
    },
    {
      "commit": "9f7ae7f565928af0f9867d826d4539852123fce2",
      "tree": "a97a333ef7ce9a18113cbbe05d5f3e46d81d9ccd",
      "parents": [
        "3a0355f99c60dca76817c1eb9e8c7b61ae3481f6"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Mon Jul 25 00:34:18 2022 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Aug 04 21:23:14 2022 +0000"
      },
      "message": "Set targetSdkVersion to 10000 for MTS tests targeting current\n\nMTS tests built on unstable branches (e.g. git_master) should be testable on\nold system images (e.g. S). However, they run into an error during installation\non older images:\n`Requires development platform $\u003ccurrent_codename\u003e, but this is a\nrelease platform`\n\nThis CL fixes this issue by updating the target_sdk_version of MTS test apps\ntargeting current to the magical sdk_version 10000\n\nBug: 227473065\nTest: go build ./java\nTest: TH\nChange-Id: Ic0358a48a19dc239defbb4ee8ec99225cce75584\n"
    },
    {
      "commit": "69cf0f375687f936c1832bc7c049e8b105304abb",
      "tree": "fcbaaa3321d663576df87006282e6616404a1759",
      "parents": [
        "950f28abe243ec7092face27681508480cc92293"
      ],
      "author": {
        "name": "Alexei Nicoara",
        "email": "ancr@google.com",
        "time": "Wed Jul 27 14:59:18 2022 +0100"
      },
      "committer": {
        "name": "Alexei Nicoara",
        "email": "ancr@google.com",
        "time": "Wed Aug 03 12:05:14 2022 +0100"
      },
      "message": "Overriding placeholder version in updatable apks\n\nTest: presubmit, checked the app version after build locally\nBug: 231691162\nChange-Id: Icd242432540ea424235b226a45aac839dbc995be\n"
    },
    {
      "commit": "5a082f9a3310a425115061578ed8955ff342ef56",
      "tree": "ca0ed9c72c744035e289b862697798a2f46ffac9",
      "parents": [
        "78ce8c23def25e30fba5e2cdb124ad3f0409751c"
      ],
      "author": {
        "name": "William Loh",
        "email": "wloh@google.com",
        "time": "Tue May 17 20:21:50 2022 +0000"
      },
      "committer": {
        "name": "William Loh",
        "email": "wloh@google.com",
        "time": "Tue Jun 28 22:07:23 2022 +0000"
      },
      "message": "Propagate max_sdk_version to manifest_fixer\n\nIf max_sdk_version is included in Android.bp that value will now be\npropagated to manifest_fixer.py. This value will then be used to\noverride any maxSdkVersion attribute set on permission or\nuses-permission tags in the android manifest if maxSdkVersion\u003d\"-1\".\n\nBug: 223902327\nTest: add max_sdk_version to Android.bp for test app\nTest: create permission in test app manifest with maxSdkVersion\u003d\"-1\"\nTest: run test to check maxSdkVersion\u003dmax_sdk_version\nChange-Id: Ic533ef2a41b9ecc9ee68c69399026df47ee945b7\n"
    },
    {
      "commit": "f5d91bb3b4cb907a4fbcd1ea6cf36b9d1a3094ed",
      "tree": "544fd78c34bf5119e468668f3236a343e208621d",
      "parents": [
        "91f015e73e6260b10f055972dd9f6bca9ca30f9d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed May 04 12:00:02 2022 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed May 04 12:10:06 2022 +0100"
      },
      "message": "Revert \"Don\u0027t add `uses_libs`/`optional_uses_libs` to the manifest_fixer.\"\n\nThis reverts commit 0b1c70efbcbb0c8408f44964923f5b156d025936.\n\nThe reverted commit was based on the idea that uses-libraries that are\nexplicitly specified in build files should not be implicitly added to\nthe manifest, as that would mean that anything added to the build files\nwill flow to the manifest.\n\nAlthough this logic is correct, it prevents propagation of\nuses-libraries from dependencies, which is wrong: if a library has an\nexplicit uses-library property in Android.bp, this property is expected\nto be propagated to the library\u0027s dependencies. Failing to do so would\nmean that every user of that library has to add uses-library property to\ntheir build files, which doesn\u0027t scale (see b/214255490 for example).\n\nBug: 214255490\nTest: lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m \u0026\u0026 launch_cvd \\\n    \u0026\u0026 adb wait-for-device \u0026\u0026 adb root \\\n    \u0026\u0026 adb logcat | grep -E \u0027ClassLoaderContext [a-z ]+ mismatch\u0027\n    # empty output, no errors at boot\nChange-Id: I6f420e76a89aa2f37be99f877711736640f2c361\n"
    },
    {
      "commit": "ea2f5eff5eadc14740c72b476cda3ed4448f53a9",
      "tree": "fc416c978e9745ecd5859010e47bf6b7ac3f3c15",
      "parents": [
        "26ef058655ed983c3eba7232dece6cb87460bd33"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Fri Apr 22 13:53:16 2022 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Fri Apr 22 13:53:16 2022 +0000"
      },
      "message": "Fix error message formatting\n\nTest: m nothing\n\nFixes: 230086179\nChange-Id: Ieb6a7de9dcf0c12184c868b5af9af52c7b4bfa5e\n"
    },
    {
      "commit": "7deabfacd0a877bd1e4dec31f1ff40e472ab5f14",
      "tree": "b1fc7252397bd0a43f47150906e02817f9c50819",
      "parents": [
        "db07f002b8dae61878ed34b62c039da52df6f346"
      ],
      "author": {
        "name": "Gurpreet Singh",
        "email": "gurpreetgs@google.com",
        "time": "Thu Feb 10 13:28:35 2022 +0000"
      },
      "committer": {
        "name": "Gurpreet Singh",
        "email": "gurpreetgs@google.com",
        "time": "Thu Feb 10 13:37:50 2022 +0000"
      },
      "message": "Manifest Fixer Params code refactor\n\nThis CL refactors the code related to ManifestFixer parameters.\nThe required parameters android.ModuleContext, manifest android.Path are\npassed separately as the parameters and the optional parameters are\nkept as part of the ManifestFixerParams struct.\n\nBy default, the member variable of struct have the zero (nil, false,\nempty string) values. Hence, it is only required to pass the\nparameters of interest at the time of function call to\nManifestFixer.\n\nManual testing done to check the working of the code.\n\nTest: m nothing \u0026\u0026 m test_com.android.sdkext\nTest: manually tested the generation of AndroidManifest in the out\ndirectory with the testOnly attribute\nTest: atest manifest_fixer_test --host\nTo test the existing unittests are not breaking.\n\nChange-Id: I20cb6c06c57f8fe7811050288bcb03945dc0425b\n"
    },
    {
      "commit": "75d65f360c18806e683aed87679ce5bcc52823d4",
      "tree": "12fc747a1cc501f24995891bc91ccd84893cea24",
      "parents": [
        "2d305010af8f36a6b5d45560f5304094a3e0a765"
      ],
      "author": {
        "name": "Gurpreet Singh",
        "email": "gurpreetgs@google.com",
        "time": "Mon Jan 24 17:44:05 2022 +0000"
      },
      "committer": {
        "name": "Gurpreet Singh",
        "email": "gurpreetgs@google.com",
        "time": "Tue Feb 01 12:03:48 2022 +0000"
      },
      "message": "Add testOnly attribute to AndroidManifest file of apex_test\n\nIf the build file contains the apex_test module, add the\ntestOnly attribute to the application element of the\ncorresponding AndroidManifest file and set its value to true.\nIf the testOnly attribute is already present and has value\nfalse, then do nothing.\n\nTests added in manifest_fixer_test.py to check if the updated\nAndroidManifest file has the testOnly attribute set to true or not.\n\nBug: 213310150\nTest: atest --host manifest_fixer_test\nTest: m nothing\nTest: manually checked the AndroidManifest file generated\nChange-Id: I36247dbe0261c342d451a4422c314fd8fe0c2369\n"
    },
    {
      "commit": "c8cb0c3eb5fe924e17b51d7860e0cde31c748fe8",
      "tree": "e14ade7c00072c9034d4e9bd892aba72e901d69d",
      "parents": [
        "ab9f3a2bc59a3f7caad8d1f5db11149ef64d455b"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Dec 08 17:00:38 2021 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Dec 09 18:08:28 2021 +0000"
      },
      "message": "Set targetSdkVersion to 10000 iff a module is targeting an unreleased\nsdk\n\nPreviously in aosp/1907152, targetSdkVersion for all modules would be\n10000 in release builds. This would cause sdk compatibility errors like\nb/209301265#3 for modules that were targeting a released SDK\n\nThis CL adds an additional check to set targetSdkVersion to 10000 only\nif a module\u0027s apilevel is in preview (i.e. unreleased SDK)\n\nBug: 209301265\n\nTest: Built various apk combinations locally, and used aapt2 to check\ntargetSdkVersion\nTest: TARGET_BUILD_APPS\u003dxyz m CaptivePortalLoginTests #\ntargetSdkVersion: 30\nTest: m CaptivePortalLoginTests #targetSdkVersion: 30\nTest: (internal) TARGET_BUILD_APPS\u003dxyz m MediaProviderGoogle #\ntargetSdkVersion: 10000\nTest: (internal) m MediaProviderGoogle #targetSdkVersion: Tiramisu\n\nChange-Id: Id2901f23d4e1b436f8906940e47edd606a93657d\n"
    },
    {
      "commit": "131a5a13fef16a0f4e5568adcd6998b8a0075d57",
      "tree": "5057d19b13d996b4f3ba83f3823c60975b5d4fa7",
      "parents": [
        "e33e25b4a5260994e05afb381e7da1eb09e6dbf2"
      ],
      "author": {
        "name": "Kun Niu",
        "email": "kunniu@google.com",
        "time": "Tue Dec 07 19:27:34 2021 +0000"
      },
      "committer": {
        "name": "Kun Niu",
        "email": "kunniu@google.com",
        "time": "Wed Dec 08 00:44:07 2021 +0000"
      },
      "message": "Revert \"Set targetsdkversion to future level if TARGET_BUILD_APPS is not empty\"\n\nThis reverts commit e33e25b4a5260994e05afb381e7da1eb09e6dbf2.\n\nReason for revert: may causing b/209301265,\nTest: https://android-build.googleplex.com/builds/abtd/run/L66400000952203490\nChange-Id: Ifcccdcfbfc014d4172f4d9488ea699380d3f3ebe\n"
    },
    {
      "commit": "e33e25b4a5260994e05afb381e7da1eb09e6dbf2",
      "tree": "758c22843abba50d9e47ec7f2ef73fca555061a7",
      "parents": [
        "413da0418956a86c7d0d3d81179a89facdfa8781"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Tue Nov 30 20:22:55 2021 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Dec 02 19:55:25 2021 +0000"
      },
      "message": "Set targetsdkversion to future level if TARGET_BUILD_APPS is not empty\n\nmanifest_fixer transforms an AndroidManifest.xml file for use in aapt2.\nFor TARGET_BUILD_APPS builds, set targetSdkVersion to a FutureApiLevel\n\nTest: In build/soong, go test ./java\nTest: TH\n\nTest: In internal, TARGET_BUILD_APPS\u003dxyz m\nout/soong/.intermediates/packages/providers/MediaProvider/MediaProvider/android_common_MediaProviderGoogle_apex30/package-res.apk\n\u0026\u0026 aapt2 dump badging\nout/soong/.intermediates/packages/providers/MediaProvider/MediaProvider/android_common_MediaProviderGoogle_apex30/package-res.apk\n| grep targetSdkVersion # targetSdkVersion:\u002710000\u0027\n\nTest: In internal, m\nout/soong/.intermediates/packages/providers/MediaProvider/MediaProvider/android_common_MediaProviderGoogle_apex30/package-res.apk\n\u0026\u0026 aapt2 dump badging\nout/soong/.intermediates/packages/providers/MediaProvider/MediaProvider/android_common_MediaProviderGoogle_apex30/package-res.apk\n| grep targetSdkVersion # targetSdkVersion:\u0027Tiramisu\u0027\n\nBug: 204107787\n\nChange-Id: Ic6f21111d5a8c61ae789a7a3a001f669257a39b2\n"
    },
    {
      "commit": "0b1c70efbcbb0c8408f44964923f5b156d025936",
      "tree": "572e3e7218e154ca5a0cde5f25598541f171d59c",
      "parents": [
        "99d5a0f5c9f2ba5386134b44d44be03ccaf94b35"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Aug 20 15:39:12 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Aug 20 15:54:42 2021 +0100"
      },
      "message": "Don\u0027t add `uses_libs`/`optional_uses_libs` to the manifest_fixer.\n\nThese properties specify libraries that cannot be implicitly inferred by\nSoong. If these properties are added to Android.bp, this can only be for\nthe reason that there is a \u003cuses-library\u003e tag in the manifest which is\nunknown to the build system. Adding them to the manifest_fixer doesn\u0027t\nmake sense: if they are not in the manifest, they should be removed from\nAndroid.bp as well.\n\nBug: 132357300\nTest: $ lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m \u0026\u0026 launch_cvd\n      $ adb wait-for-device \u0026\u0026 adb root \u0026\u0026 adb logcat \\\n        | grep -E \u0027ClassLoaderContext [a-z ]+ mismatch\u0027\n        # empty grep output, no errors\nChange-Id: Ic6eb5268a954ef3be7f06a181ec72af99000c547\n"
    },
    {
      "commit": "fc0f6e34ce874eba4b1f852c6b9ee92148379768",
      "tree": "06f0f45e9dd54732f772a7c1cd01bad62e15b078",
      "parents": [
        "8f34b0e19d4bbfee7a904793ffdf17e43988f575"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Aug 12 16:16:11 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Aug 13 16:10:42 2021 +0100"
      },
      "message": "Fix the way manifest fixer detects optional \u003cuses-library\u003e entries.\n\nPreviously manifest_fixer used a naive way to distiniguish optional libs\nfrom required ones: it checked if a library is on the list of optional\ncompatibility libraries. This works for compatibility libs, but not for\nother libs.\n\nNow we properly track optionality through all stages of the build,\nstarting with the addition of the library as a dependency (here\u0027s where\nthe `uses_libs`/`optional_uses_libs` distinction kicks in), store it in\ndependency tag and propagate to class loader context, and from there to\nthe manifest_fixer.\n\nThe tests have been updated accordingly.\n\nBug: 196377222\nTest: lunch bertha_x86_64-userdebug \u0026\u0026 m droid dist cts mts\nChange-Id: I3631ce59ebe47116ce7a9b3d33a86f636846ef0f\n"
    },
    {
      "commit": "9231537fe2ea819e370ef332da8757d980b69a01",
      "tree": "c447d4487bde1319ee95f826060bf5a230b52919",
      "parents": [
        "64a90286c458b8bd001d2c2ef03bd0e2617c220f"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Apr 02 08:45:46 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Apr 08 11:27:24 2021 +0900"
      },
      "message": "SdkSpec is fully using ApiLevel\n\nPreviously, SdkSpec was constructed only from the user string. It didn\u0027t\nmake use of the Config struct where information about the latest stable\nSDK version, etc. is recorded. As a result, the build system couldn\u0027t\ncheck if the sdk version \"current\" is referring to the in-development\n(i.e.  not-yet-frozen) SDK version or the latest stable version.\n\"current\" was always assumed to be in-development (IsPreview() returns\ntrue) even when Platform_sdk_final \u003d\u003d true.\n\nAs the first step for fixing that, this change requires\nandroid.EarlyModuleContext to be passed when constructing SdkSpec from\nthe user string.\n\nIn the following changes, \"current\" will be mapped to either\nFutureApiLevel (10000) or one of the FinalApiLevels() depending on\nwhether the platform SDK was finalized or not.\n\nBug: 175678607\nTest: m\nChange-Id: Ifea12ebf147ecccf12e7266dd382819806571543\n"
    },
    {
      "commit": "54105c48f4496d7d5dcb3c6a4c6179266dfffc8c",
      "tree": "17d075458bb3cb113bbe52f601c2ca1322e663af",
      "parents": [
        "0774773a65c2b4164c725ca00b5fad88048f6259"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Mar 31 18:17:53 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Apr 05 09:32:06 2021 +0900"
      },
      "message": "SdkSpec \u003d Scope + ApiLevel\n\nSdkSpec.Version was an int type. Now it becomes ApiLevel type which\nis a better abstraction of the version (or api level).\n\nBug: 1655587\nTest: m\n\nChange-Id: I4d67b9b9eae45f653b6af4f5b73da9e091b3dfab\n"
    },
    {
      "commit": "f1691d2a2c23631c25291bc653d25a8f906b9c5d",
      "tree": "c5b311093dbf48ad5fe0950928c05a7bef2a677e",
      "parents": [
        "100d5d67328e91d88f11ba8ec7a5a3997d9c5bdc"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Mar 29 20:11:58 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sat Apr 03 08:25:12 2021 +0900"
      },
      "message": "Move java.sdkSpec to the android package\n\n... in preparation for making the handling of sdk versions consistent\nacross java and cc modules.\n\nBug: 175678607\nTest: m\nChange-Id: I598f0454bce9b7320621022115412fbe97403945\n"
    },
    {
      "commit": "2669e7edf00ccce9a264381140d51cd4f22b429e",
      "tree": "7eb9f66216b492f26a279a503d5ea674002724f1",
      "parents": [
        "b48f9aefea547a3d3d23222815b2d2f66dda09b0"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Mar 05 11:51:56 2021 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Mar 05 19:54:31 2021 +0000"
      },
      "message": "Exempt framework-res from UseApiFingerprint\n\nGenerating the API fingerpring depends on framework-res, so the\nfingerprint cannot be embedded into framework-res.  Hardcode an\nexemption to UseApiFingerprint.\n\nBug: 181978889\nTest: TARGET_BUILD_VARIANT\u003duser UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue vendor/google/build/build_mainline_modules.sh\nChange-Id: I621f36d5eb157dd97baa132ff109b4df791eedcc\n"
    },
    {
      "commit": "b23d28c6e25aeeefa52f6d2569970be2a6de222c",
      "tree": "f506dcc183bde40758e4b2cd7f532802370d04b3",
      "parents": [
        "a8c28e27bc60e7f595def374edd2c7b1e1516b77"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Oct 08 12:53:58 2020 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 16 14:59:07 2020 +0000"
      },
      "message": "Rename fields and methods to reflect class loader context changes.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nBug: 132357300\nChange-Id: Iebfbf2ffdac5ee48476d2aac312b3b8f4471fc85\n"
    },
    {
      "commit": "8cbc5d269b20b5743679bfb8684ed174dcf58a30",
      "tree": "2204c9bcd1ef2ec5eedb60653e64a5780b60d761",
      "parents": [
        "366c7d3a74d13b86122309a4710a30eda026e5f1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 03 15:15:46 2020 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 03 15:15:46 2020 +0000"
      },
      "message": "Rework class loader context implementation.\n\nThe old representation consisted of a list of libraries (UsesLibraries),\na list of optional libraries (OptionalUsesLibraries) and a mapping from\nlibrary name to its build/install paths (LibraryPaths). The separation\ninto lists and map was necessary because of special handling of\ncompatibility libraries, which is now unified with normal libraries.\n\nThe new representation is a mapping from target SDK version to a tree\nstructure ClassLoaderContext. Each node of the tree represents a library\nand contains library name, build/install paths and a slice of\nsubcontexts for dependencies. The same library may occur in the tree\nmultiple times in case it is a dependency of multiple libraries. The\norder in which libraries are added matters (the resulting tree shape may\nbe different).\n\nTest results have to be updated, as the resulting \u003cuses-library\u003e list is\nreodered (previously it was a sorted list of map keys, and now it is\nformed by a depth-first preorder traversal of the class loader tree).\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nBug: 132357300\nBug: 168686456\nChange-Id: I11be8cd2967f004fd58753d7c5fb99fed179cd63\n"
    },
    {
      "commit": "663dc53c94d2bd6f3dab9198e52a846c083ad947",
      "tree": "702fe18b517ef945755263e5acf5e491ae7bb5e9",
      "parents": [
        "c2c2d4e7166f0345d8c76fa4328d9dbd3eb1fb9a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Sep 10 12:48:53 2020 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Sep 11 11:31:22 2020 +0100"
      },
      "message": "Consistently use default install path for compatibility \u003cuses-library\u003e.\n\nPreviously default install path was provided only for comatibility\nlibraries that are added explicitly via `uses_libs`/`optional_uses_libs`\nproperties. This didn\u0027t take into account compatibility libraries that\nare added by Soong when it computes transitive closure of SDK library\ndependencies. As a result, install path in such cases remained unknown,\nand the corresponding compatibility library was omitted from class\nloader context, which caused \u0027ClassLoaderContext shared library size\nmismatch\u0027 errors at first boot on device.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nBug: 132357300\nChange-Id: If661272f46803299c8640f7f5ef161c8217d07e4\n"
    },
    {
      "commit": "d2c7ddc82a40e1c6fabb18d58c501639e3b91513",
      "tree": "f7adead795615e83fcc8a6425d5f279c363b6a54",
      "parents": [
        "4f78c512d462d92392685642eac234f362c09813"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Sep 03 15:52:01 2020 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Sep 03 15:52:01 2020 +0100"
      },
      "message": "Iterate \u003cuses-library\u003e in deterministic order in manifest_fixer.\n\nBug: 132357300\nTest: lunch cf_x86_phone-userdebug \u0026\u0026 m\nChange-Id: Ideb7e0f7beae8c80561f841b8ce9129003f1aa96\n"
    },
    {
      "commit": "31e444e101909ab48bd3ca71eb1d9c79519a3ebb",
      "tree": "7a4435d965bfa5769365723def460325638f3ced",
      "parents": [
        "52cefc00f70d8760acfbaaabb514ffc1ab5b73d0"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Aug 14 17:32:16 2020 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Aug 19 13:51:21 2020 +0100"
      },
      "message": "Collect paths to transitive SDK Java library dependencies.\n\nPreviously only the names were collected, and later used in the\nmanifest_fixer to add missing \u003cuses-library\u003e entries to the manifest.\nNow we also need to collect build-time and on-device paths, to be used\nin class loader context for dexpreopt. This commit only collects paths,\nbut does not pass them to dexpreopt yet.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nBug: 132357300\nChange-Id: I34b229ee68f16ba215ba03770feadb4d890ec2bf\n"
    },
    {
      "commit": "8eebb135b38009800b3e536d73bed9280e8b6fd9",
      "tree": "4630b222d640b30723e6960a66f234b27e192aa0",
      "parents": [
        "0ae555df1a5b0fc86a6fa83c1de42026ef184cd2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 29 20:07:03 2020 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Jul 19 19:33:40 2020 -0700"
      },
      "message": "Package robolectric tests for tradefed\n\nPackage a slightly modified copy of the robolectric tests with\nthe dependencies statically included into the testcases directory\nand into a robolectric-tests.zip.\n\nTest: m robolectric-tests\nChange-Id: I73f51727695136d2a849d36af1683e93f7e156a3\n"
    },
    {
      "commit": "1f4f345156b999042c46b998bdf7030c0e60a1f1",
      "tree": "252f93309e4bcfee2965c465876215bcced5ef40",
      "parents": [
        "ea1fcb630f0da83ff2db1b2c456f5df49fd7a8f5"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Mon Mar 02 16:58:11 2020 +0000"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Mar 04 22:05:11 2020 +0000"
      },
      "message": "Always use \"${codename}.${sha}\" if UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue\n\nTest: m checkbuild\nBug: 149733822\nChange-Id: I3e1beeb721f7e87bc6adda61861fa962ec892360\nMerged-In: I3e1beeb721f7e87bc6adda61861fa962ec892360\n(cherry picked from commit 934c4f2accc40374ec470c5bca8bd72a64509cc7)\n"
    },
    {
      "commit": "5b16dfb39af0c90695c9d5921b1886e8e8d285aa",
      "tree": "2b998b30ef3fb5a374808bca7adb651551cd80fc",
      "parents": [
        "d0bf3dbea8c254dfa00f3c6a1743687ca5fef7eb"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Tue Feb 11 17:27:19 2020 -0800"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Tue Feb 18 09:37:56 2020 -0800"
      },
      "message": "Allow for setting a logging_parent for an Android App.\n\nUnit test: go test ./... -test.v -run TestOverrideAndroidApp\nUnit test: python manifest_fixer_test.py\n\nBUG: 148198056\nChange-Id: Ib5ff235d2a93e88b86aec1c0b16327ea938a094d\n"
    },
    {
      "commit": "6a927c4e6ad5c53dcca7b0db2fec129d1f0d3f82",
      "tree": "041d9084983b8550ece6b332a69edfb23a1238eb",
      "parents": [
        "cf0bba7a30dc9bbe17c11a238d1f88e56c77e53b"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Jan 21 02:03:43 2020 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sat Jan 25 21:56:43 2020 +0900"
      },
      "message": "Abstract sdk_version string using sdkSpec type\n\nThe value format that sdk_version (and min_sdk_version, etc.) can have\nhas consistently evolved and is quite complicated. Furthermore, with the\nMainline module effort, we are expected to have more sdk_versions like\n\u0027module-app-current\u0027, \u0027module-lib-current\u0027, etc.\n\nThe goal of this change is to abstract the various sdk versions, which\nare currently represented in string and is parsed in various places,\ninto a type called sdkSpec, so that adding new sdk veresions becomes\neasier than before.\n\nThe sdk_version string is now parsed in only one place \u0027SdkSpecFrom\u0027, in\nwhich it is converted into the sdkSpec struct. The struct type provides\nseveral methods that again converts sdkSpec into context-specific\ninformation such as the effective version number, etc.\n\nBug: 146757305\nBug: 147879031\nTest: m\nChange-Id: I252f3706544f00ea71c61c23460f07561dd28ab0\n"
    },
    {
      "commit": "f62013736a39c1e0a9f95e329a18efa582be9ee1",
      "tree": "6b12234889f30826e91997f2ccb51bb8afda0b28",
      "parents": [
        "230e241f58bd96a07bf6b6149878d7e872cf2d4e"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Fri Jan 24 23:15:44 2020 +0000"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Fri Jan 24 23:15:44 2020 +0000"
      },
      "message": "Revert \"Revert \"Allow codename.fingerprint format for minSdkVersion\"\"\n\nThis reverts commit 230e241f58bd96a07bf6b6149878d7e872cf2d4e.\n\nReason for revert: This is a revert of a revert.  Downstream problem has been fixed and have been validated locally and via Forrest build.\n\nChange-Id: I89c51d25b3adb818ea44a983d0ac681a88790d8c\n"
    },
    {
      "commit": "230e241f58bd96a07bf6b6149878d7e872cf2d4e",
      "tree": "f2cee598e004835b9e99e2bb037d9fcadcb7173c",
      "parents": [
        "014a85712d14072aac171a972e3e2fbe3ccd0912"
      ],
      "author": {
        "name": "Pete Gillin",
        "email": "peteg@google.com",
        "time": "Tue Jan 21 13:41:17 2020 +0000"
      },
      "committer": {
        "name": "Pete Gillin",
        "email": "peteg@google.com",
        "time": "Tue Jan 21 13:44:50 2020 +0000"
      },
      "message": "Revert \"Allow codename.fingerprint format for minSdkVersion\"\n\nThis reverts commit 014a85712d14072aac171a972e3e2fbe3ccd0912.\n\nReason for revert: Caused vendor/google/build/build_mainline_modules.sh to fail with `Error: minSdkVersion (10000) is greater than maxSdkVersion (30)`.\n\nBug: 130541924\nChange-Id: Ifa233bf40a674481d21b61ee816c5fdde8201080\n"
    },
    {
      "commit": "014a85712d14072aac171a972e3e2fbe3ccd0912",
      "tree": "6b12234889f30826e91997f2ccb51bb8afda0b28",
      "parents": [
        "a22f30e0c932ec85df72e808ae3e595fe0220e0f"
      ],
      "author": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Fri Jan 17 20:37:58 2020 -0800"
      },
      "committer": {
        "name": "Baligh Uddin",
        "email": "baligh@google.com",
        "time": "Mon Jan 20 07:46:12 2020 -0800"
      },
      "message": "Allow codename.fingerprint format for minSdkVersion\n\nUse codename.fingerprint format for minSdkVersion if it is unset\nin the manifest and\nUNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue.\n\nUsing a utility function in sdk.go to check whether to apply\napi.fingerprint.\n\nBUG: 130541924\nChange-Id: I748a25c419033bf54b63171d334644fcd0ecc78f\n"
    },
    {
      "commit": "c27ab6678bbf25cca5aec485f8ad1ed0bc3b3c83",
      "tree": "3de9b2bfbce4d9fdaa2d4d60551c07aa625c4b85",
      "parents": [
        "06b2c69cfecaef535b1e1ccfd256d840dc80afe4"
      ],
      "author": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Thu May 30 15:51:14 2019 -0700"
      },
      "committer": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Mon Jun 03 10:51:42 2019 -0700"
      },
      "message": "Touch up manifest if there\u0027s no source code.\n\nThe new package manager behavior requires packages without source code\nto have an application element with hasCode attribute set to false in\ntheir manifest. With this change, Soong can now automatically insert one\nfor codeless apps.\n\nTest: app_test.go, manifest_fixer_test.py\nFixes: 124375490\nChange-Id: Ied89a8d07c63805ab910859a4f7c45fc1c60bb73\n"
    },
    {
      "commit": "5446e886578fa72367addeca884e608160fc902e",
      "tree": "660f05799a45101ea65cc8611cdb301958e35558",
      "parents": [
        "a725681ed8f56ac396420f04085a7150d0900cc6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 22 10:46:27 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 24 13:39:26 2019 +0000"
      },
      "message": "Add \u003cuses-library\u003e tags for SDK libraries to AndroidManifest.xml\n\nPort I4e7a9bdc5bf845af85168abf55f8063900bacc72 and\nIeb7c1429077aaf6899e214a217d9455d95dbfea6 from Make to Soong to\nsupport adding \u003cuses-library\u003e tags to AndroidManifest.xml for\ntransitive java_sdk_library dependencies and android.test.base\nand android.test.mock.\n\nFixes: 133306356\nTest: m checkbuild\nChange-Id: I23763bb689c474d25d04a418df1c46e7f0d807af\n"
    },
    {
      "commit": "d2e5361c909ddf81da3c64e6e846f1728e09ef6c",
      "tree": "63cbd5a058204463421f99815d39e6076ba9710e",
      "parents": [
        "d3d3ad1686af159b0cf9d7c1315c1b48c30190a6"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Tue May 14 17:03:24 2019 -0700"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Tue May 14 17:03:24 2019 -0700"
      },
      "message": "manifest_fixer argument should be --use-embedded-dex rather than --use-embedded-dex\u003dtrue\n\nTest: building soong tests, treehugger\nChange-Id: Id0df92171a2e547794979fb473d8abc47f33d13c\n"
    },
    {
      "commit": "6ad772597d13fa8ec9df92e26e3c3f9320abc11b",
      "tree": "9871bbcb205129637d1f0e309a07b1db5f5efd6c",
      "parents": [
        "dc2699cfde4c67ceb1b488a2f1bdc3f00dbc7614"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Wed May 01 13:16:22 2019 -0700"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Wed May 01 13:16:22 2019 -0700"
      },
      "message": "Fix use_embedded_native_libs handling for android_test\n\n`use_embedded_native_libs: true` should cause\n`--extract-native-libs\u003dfalse` be added to the manifest_fixer invocation,\nand it was not happening.\nThere are also minor naming improvements.\n\nBug: 117618214\nTest: treehugger and \u0027atest CtsDynamicLinkerTestCases\u0027 after\ncts/tests/tests/dynamic_linker has been converted to Android.bp.\n\nChange-Id: I93ec2aed3f3b185d320e56b1b4eebb71339b81ee\n"
    },
    {
      "commit": "aa1c6f1f5a3c5e2cf9e0fcda4f59a9911d9ede18",
      "tree": "24dde0e24ab9cfe1774f3f43051b29b843c981f8",
      "parents": [
        "90c25c689392a265c85d382152a938cae092623c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Apr 19 16:25:38 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Apr 24 14:41:04 2019 -0700"
      },
      "message": "Pass --remove-tools-declarations to manifest merger\n\nManifest merger needs --remove-tools-declarations to match\nGradle behavior.\n\nBug: 112607039\nTest: m checkbuild\nChange-Id: Id93bcaeaf03770a4acd2e1fdf44e418f55540dd3\n"
    },
    {
      "commit": "90c25c689392a265c85d382152a938cae092623c",
      "tree": "1f3b8b1eb19525b197f513d5c2d2cc53b9706936",
      "parents": [
        "28c3eb6829f6516ff3bb94d8c59ecd0b8ff16f17"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Apr 19 16:22:57 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Apr 24 14:40:14 2019 -0700"
      },
      "message": "Don\u0027t use merged manifest for android_library modules\n\nDon\u0027t use the merged manifest for android_library modules.  We\nstill have to run manifest merger for android_library modules\nbecause Make can\u0027t handle transitive dependencies, so it will\ncontinue to merge the manifests at each library, and then merge\nthe manifests of direct dependencies into the final application.\n\nBug: 113294940\nTest: m checkbuild\nChange-Id: Ia8f9f910bd0a134730ddf2d542460eeddbc0a075\n"
    },
    {
      "commit": "71b519d6ce98fc0313019d84777bfc04f3799efc",
      "tree": "c749ea1d5ef4fde68627319c902fb64f9b484682",
      "parents": [
        "109328714ff626446e16cfdd3103a5b969284841"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Apr 18 17:25:49 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Apr 19 14:45:41 2019 +0900"
      },
      "message": "Set default target SDK version for APEX\n\nTarget SDK version is used for targeting an APEX to a specific set of\nplatform builds. Usually, the targeting is unrestricted (in case the\nAPEX can run on all platforms), or based on platform SDK version (e.g.\n28 for P). However, when the platform is under development and SDK is\nnot finalized, the targeting should be much more fine-grained; the\nAPEX should be targeted to a very specific build that supports the same\nset of APIs that the APEX was built against.\n\nTo support that, target sdk version is automatically set by the build\nsystem. When the platform is released or SDK is finalized, the target sdk\nversion set to the SDK version number. If not, it is set to\n\u003cversion_code\u003e.\u003cfingerprint\u003e (e.g., Q.123456).\nNote that the target sdk version set by the build system is used only\nwhen the target sdk version is not explicitly set in\nAndroidManifest.xml.\n\nBug: 130541924\nTest: UNBUNDLED_BUILD_SDKS_FROM_SOURCE\u003dtrue \\\nUNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue \\\nTARGET_BUILD_APPS\u003dcom.android.tzdata m\nbuild.ninja has --target_sdk_version Q.$$(cat out/soong/api_fingerprint.txt)\n\nTest: aapt dump badging out/dist/com.android.tzdata.apex | grep \\\ntargetSdkVersion shows:\ntargetSdkVersion:\u0027Q.6ee443d9ad5f0cca7a43cfa97b7fc62a\u0027\n\nChange-Id: I086230d787f01075c28fc3f0163550300fa00212\n"
    },
    {
      "commit": "109328714ff626446e16cfdd3103a5b969284841",
      "tree": "f56f061cb971c97c9715d3d4ef04574820dc2fed",
      "parents": [
        "3047fa23da6d9f6e504c81e275ad7f6761fb7c7b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 18 14:27:12 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 18 16:05:37 2019 -0700"
      },
      "message": "Allow codename.fingerprint format for targetSdkVersion\n\nUse codename.fingerprint format for targetSdkVersion if it is unset\nin the manifest and UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT\u003dtrue.\n\nTest: manual\nBug: 130541924\nChange-Id: I4e3b1274cc32038b00b292dc6d67559eb320e9e4\n"
    },
    {
      "commit": "87ecbfe1079b3cf99373b4ef0f1e1d8db8c1961e",
      "tree": "b13fdf7f98edd585c77406c23f848e74f7fa2c92",
      "parents": [
        "0b9f31fb0834fd84bc4d5e3b99d67e80e6e2224d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 26 22:14:04 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Mar 04 22:02:01 2019 +0000"
      },
      "message": "Update manifest merger to use binary\n\nManifest merger is now a java_binary instead of a collection of jars,\nit can use the single binary as the dependency.\n\nBug: 112607039\nTest: m checkbuild\nChange-Id: Iea6c97c99a3bb09952fed2b25437b644f4e863f8\n"
    },
    {
      "commit": "d25060aa2d6e4468f1b67a70d65623afcefff45a",
      "tree": "b2a8b8706056acc5778ce789463dc9011f0bae78",
      "parents": [
        "f854d3e4be3282e31cc8de5e8358a7dbf3ed06a3"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 18 18:24:16 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 18 19:21:02 2019 +0000"
      },
      "message": "Set usesNonSdkApi in manifest when Platform_apis\u003dtrue\n\nThe Platform_apis field in CompilerDeviceProperties currently has no\neffect. Unify the behaviour with make and run manifest_fixer.py to\nencode the information in the manifest. This is used to exempt\nbundled apps and platform tests from hidden API access checks without\nhaving a fixed whitelist of packages.\n\nBug: 113315999\nBug: 124671117\nTest: m UbSystemUiJankTests \u0026\u0026 \\\n      aapt d xmltree \\\n      target/product/taimen/data/app/UbSystemUiJankTests/UbSystemUiJankTests.apk \\\n      AndroidManifest.xml | grep usesNonSdkApi\nChange-Id: I20c392d91ee6275ef8139fbeb5b9700385abbc80\n"
    },
    {
      "commit": "46abdad46a0a18a97e811b337c8fdf2f7110e0f5",
      "tree": "34f9904c214bbbb5747adb0e5d260d8869af49d5",
      "parents": [
        "e4246abd7f456eb4119f2cffc01bdfca852584b5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 07 13:07:08 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 08 15:25:17 2019 +0000"
      },
      "message": "Add support for use_embedded_dex in Soong\n\nWhen use_embedded_dex is set, store the dex uncompressed in the\nAPK and set the android:useEmbeddedDex\u003d\"true\" attribute in the\nmanifest.\n\nTest: m checkbuild\nChange-Id: Iea6e7ed19599830ac72392ef93f9c98957df1cce\n"
    },
    {
      "commit": "e4246abd7f456eb4119f2cffc01bdfca852584b5",
      "tree": "da9d75703d09106d677b1d5b8976a6cdc601e6ce",
      "parents": [
        "129b9ceeb147099a62c46b4ff74670bb1670e34b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 05 21:55:21 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 08 15:24:47 2019 +0000"
      },
      "message": "Make manifest and APK agree on uncompressed native libs\n\nOnly put uncompressed native libs in an APK if the min_sdk_version\nsupports it (\u003e\u003d 23, Marshmallow), and set\nandroid:extractNativeLibs\u003d\"false\" in the AndroidManifest.xml so\nthat the platform won\u0027t extract them anyways.\n\nBug: 117618214\nTest: m checkbuild\nChange-Id: I760017e48bf3c6b618aabde0982df45995765d48\n"
    },
    {
      "commit": "419290aba90e8b8a97e5dc09aad0c3c9aa420ece",
      "tree": "6df6592108d2d587a3503775b82a7517641f6c05",
      "parents": [
        "b259ede3249df172ed5ba0191547c715f241441c"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 31 15:28:47 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 31 21:37:34 2018 -0700"
      },
      "message": "Support setting target_sdk_version separately from sdk_version\n\nBefore this change, if targetSdkVersion wasn\u0027t set in the\nAndroidManifest.xml, we\u0027d set it to the sdk_version from the Android.bp.\n\nBut there are cases where you want to compile against a later SDK, but\ntarget an earlier one (especially if you depend on libraries that need\nto be compiled against more recent SDKs, like androidx).\n\nTest: build APK with different target_sdk_version.\nChange-Id: Iaed36b522955a374a049ef331158cc8fc5798ad2\n"
    },
    {
      "commit": "7b59e7b2d038a50573155c2d51dd086f744eb26a",
      "tree": "7e5a71262b48bbf7a24def124e5516084762b150",
      "parents": [
        "496d66d425a062bc6bfc3c0b625f87014d368c6a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 10 13:35:13 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 10 14:41:56 2018 -0700"
      },
      "message": "Make manifest_fixer.py keep targetSdkVersion high with min_sdk_version\n\ntargetSdkVersion should stay as \"current\" when min_sdk_version\nis set but sdk_version is not.\n\nBug: 112438448\nTest: atest CtsTelecomTestCases\nChange-Id: I11dc27eccd31200d1ce27c7e332106bb825651b4\n"
    },
    {
      "commit": "6f937a99e312841401751244c528d7e23036280f",
      "tree": "b6ca8ed0fdeb326dc45afd2e5b6026bbb72e5fb9",
      "parents": [
        "4b42edbca0d68c7d332458bda7656f0b9370ea74"
      ],
      "author": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Thu Aug 09 21:47:37 2018 -0400"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Aug 28 14:10:03 2018 -0700"
      },
      "message": "Fix manifest merging flags\n\nlibrary manifests were just being dropped on the ground.\n\nBug: 112467584\nTest: build\nChange-Id: I61c2efca37aa3fdb9c944260f4a276d1d3c26f6c\nMerged-In: I61c2efca37aa3fdb9c944260f4a276d1d3c26f6c\n(cherry picked from commit b7c147efec90707532f97b6cc7ff9e82095772fc)\n"
    },
    {
      "commit": "1b6a3cfea4ac2a3a82f4b384b1dd526af0f32c12",
      "tree": "453ced209c53662973d716e855144b7e1594220a",
      "parents": [
        "0183b2cfff7a91a32b85b19a3254ec0736d265c4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 24 14:51:30 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 26 11:09:24 2018 -0700"
      },
      "message": "Set targetSdkVersion in manifest_fixer\n\nIf targetSdkVersion is not set in the manifest, set it to the\nvalue it was implicitly using before changing minSdkVersion.\nRequires passing --library to manifest_fixer.py to distinguish\nbetween apps, where the implicit value was set by aapt2 to\ncurrent, or libraries where the implicit value was 1.\nFixes cases where the manifest does not specify targetSdkVersion\nand was inheriting the minSdkVersion value until manifest merger\nstarted merging a lower targetSdkVersion value from a library.\n\nBug: 111347801\nTest: manifest_fixer_test.py\nChange-Id: I8fcf0c5f452707565ba1808f6fe552ffed055c47\n"
    },
    {
      "commit": "31656958d6c536a9716e7c2d544db3748d55da2a",
      "tree": "a740acba609c6cf7431c297fec080d8e7f172a5b",
      "parents": [
        "5e48b1d183a8333528f529c7e677c4ab644f8caf"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 24 16:11:20 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jul 11 19:46:38 2018 +0000"
      },
      "message": "Use manifest merger in Soong\n\nMove the manifest merger config to Soong, and use it to merge\nmanifests of static dependencies of android_library and android_app\nmodules.\n\nBug: 110848854\nTest: m checkbuild\nChange-Id: Ib89e1f1a52a8b76157e4e0348baf42800412df0d\nMerged-In: Ib89e1f1a52a8b76157e4e0348baf42800412df0d\nMerged-In: I5d055ce63b8371db500f8868fb73ab3604b8c24a\n"
    }
  ]
}
