)]}'
{
  "log": [
    {
      "commit": "2069c3f74d02af1c5db923e210bcdd52f8daf5aa",
      "tree": "7412e793d9f7f87c1a8d8f2002bf018018644dce",
      "parents": [
        "51428c451a73d9d246ccecd045b0b8c76a417df1"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Dec 06 19:40:24 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Mon Dec 18 23:17:26 2023 +0000"
      },
      "message": "Move dexpreopt processing from java_*_import to prebuilt_apex\n\ndexpreopt of apex system server from prebuilts involves three soong\nmodules\n1. prebuilt_apex / apex_set\n2. an internal deapexer module created by the prebuilt apex\n3. java_import/java_sdk_library\n\n(3) acts as a shim for the deapexer to set the dexjar extracted from the\nprebuilt apex. This methodolody requires a 1:1 correspondence across the\nthree modules\n\nThis breaks down when we have multiple versions of the same prebuilt\napex in the tree. In preparation for this, move the dexpreopt\nprocessing from (3) to (1). Each prebuilt_apex will create the necessary\nrules for dexpreopting the jars deapexed from itself. In the future,\napex_contributions will be used to pick which service-foo.{odex|.vdex} to\ninstall depending on which prebuilt apex is selected.\n\nImplementation details\n- Embed dexpreopter in prebuiltApex structs so that this module type can\n  register the dexpreopt rules. Since a single apex can have multiple\n  system server jars, this also requires creating an additional scope in\n  dexpreopt.go to prevent name collisions\n- Add the dexpreopt modules as required in initApexFilesForAndroidMk\n- Add the depreopt modules to androidMk in AndroidMkEntries. Drop the\n  equivalent from java_import and java_sdk_library_import\n\nBug: 308790457\nTest: existing soong unit tests\nTest: lunch cf_x86_64_phone-next-userdebug \u0026\u0026 m out/target/product/vsoc_x86_64/system/apex/com.google.android.adservices.apex\nTest: Verified that the above command installs\n/out/target/product/vsoc_x86_64/system/framework/oat/x86_64/apex@com.android.adservices@javalib@service-adservices.jar@classes.{odex|vdex} and the equivalent files of service-sdksandbox\n\nTest: presubmits\n\nChange-Id: I01cea8956d2857fb864b415e73d3d2686d069b5e\n"
    },
    {
      "commit": "b95998be731406209f18fab764b96421a17ab4c9",
      "tree": "c588e7b7e6413ab36894de2658d00a2892345e08",
      "parents": [
        "9241da96626b6e224fbf255f1d03ea0bf4e8958b"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu May 11 16:39:27 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu May 11 18:24:44 2023 +0100"
      },
      "message": "Prepare tests for dexpreopt changes.\n\nAfter this change, there is a clear separation between tests that are\nrelated to dexpreopt and tests that are not. The former uses\nPrepareForTestWithDexpreopt, while the latter uses\nPrepareForTestWithJavaDefaultModules. The benefit is that the latter\nwill no longer affected by any dexpreopt changes.\n\nBug: 280776428\nTest: m nothing\nChange-Id: Ib957765b9287d51c082e0a33cee17a6bb56daeef\n"
    },
    {
      "commit": "cf61e3c59133227894ac7d72091b48451a3e6761",
      "tree": "351deadb2df3cdeb59739d48bda259a55ea7af61",
      "parents": [
        "bc698cd28aa2ee17af208bfd56f003347116ddb0"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon May 08 16:28:38 2023 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon May 08 21:29:23 2023 +0100"
      },
      "message": "Revert^2 \"Generate app profiles even if dexpreopt is disabled.\"\n\nRevert submission 2580631-revert-2574032-XXTWCJDTDQ\n\nReason for revert: Fixed build breakages\n\nReverted changes: /q/submissionid:2580631-revert-2574032-XXTWCJDTDQ\n\nBug: 280440941\nTest: lunch aosp_cf_riscv64_minidroid-userdebug \u0026\u0026 m UNSAFE_DISABLE_HIDDENAPI_FLAGS\u003dtrue dist\nTest: Disable dex2oat on host (to simulate macOS) and build\nChange-Id: I6090b4b74cedb6d129fcbeef58d075c8ccdcc4e2\n"
    },
    {
      "commit": "3d08c388b9e00cf98510cbd1408b5ffc3524e2ff",
      "tree": "dea5843baa19eff63513a2e2b04c628c1ad0bf87",
      "parents": [
        "7b845e808f07a607a9ecf630eea00a334636f0c5"
      ],
      "author": {
        "name": "Qiao Yang",
        "email": "qiaoccolato@google.com",
        "time": "Fri May 05 15:03:24 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 15:03:24 2023 +0000"
      },
      "message": "Revert \"Generate app profiles even if dexpreopt is disabled.\"\n\nRevert submission 2574032\n\nReason for revert: DroidMonitor-triggered revert due to breakage \u003chttps://android-build.googleplex.com/builds/quarterdeck?branch\u003daosp-master\u0026target\u003daosp_cf_riscv64_minidroid-userdebug\u0026lkgb\u003d10069333\u0026lkbb\u003d10075041\u0026fkbb\u003d10071083\u003e, bug \u003cb/280902279\u003e\n\nReverted changes: /q/submissionid:2574032\n\nChange-Id: Ia9d05f3b7439604eb4a4b4100f46879fe11f5820\nBUG: \u003c280902279\u003e\n"
    },
    {
      "commit": "7b845e808f07a607a9ecf630eea00a334636f0c5",
      "tree": "823bdaf8327bc259c0ab1f54afc74bdffa80a0af",
      "parents": [
        "b95f8345c8b926035e5ed40c903f056cd106c539"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue May 02 14:35:47 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu May 04 13:53:22 2023 +0100"
      },
      "message": "Generate app profiles even if dexpreopt is disabled.\n\nBug: 280440941\nTest: -\n  1. Patch ag/22302622 to disable dexpreopt.\n  2. lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m\n  3. See app profiles still generated.\nTest: -\n  1. Patch ag/20592051 to enable profile for service-art.\n  2. banchan com.android.art x86_64 \u0026\u0026 m\n  3. See the profile for service-art generated.\nChange-Id: I4e721b475b84a2f667bbccc030a8947078f26bb0\n"
    },
    {
      "commit": "ca65b40fa02f7103363772c2d020dec04a8f93ec",
      "tree": "16b7db84c348fccee194be806c0725190ef6243f",
      "parents": [
        "3bd8f0a6e6884137525905a4cf125147a0a0a2d9"
      ],
      "author": {
        "name": "Zi Wang",
        "email": "mrziwang@google.com",
        "time": "Mon Oct 10 13:45:06 2022 -0700"
      },
      "committer": {
        "name": "Zi Wang",
        "email": "mrziwang@google.com",
        "time": "Thu Oct 27 11:19:53 2022 -0700"
      },
      "message": "Generate a default wrapper for device java_binary\n\nAny device java_binary that doesn\u0027t have a specific wrapper must\nhave a main_class property, which is used to generate its default\nwrapper. Otherwise its build should fail.\n\nBug: 250851599\nTest: TestDeviceBinaryWrapperGeneration in java_test.go\nChange-Id: Ice4c580bcfc1b92f95e217b39e984c55d25a3a02\n"
    },
    {
      "commit": "519c5c82e596959b683570d387aba43bae8fd65a",
      "tree": "ddf50ea990f4c9a1e00db3adde1b5dca22276be1",
      "parents": [
        "92346c483249726164f4bd140413d60391121763"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Sep 16 06:15:39 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Sep 16 06:25:26 2021 +0000"
      },
      "message": "Revert^2 \"Preopt APEX system server jars.\"\n\nThis reverts commit 92346c483249726164f4bd140413d60391121763.\n\nReason for revert: Fixed build error.\n\nThe build error is fixed by ag/15841934. This CL remains unchanged. This\nCL will be submitted AFTER ag/15841934 is submitted.\n\nBug: 200024131\nTest: 1. Patch this CL and ag/15841934 into internal master.\n  2. sudo vendor/google/build/build_test.bash\n\nChange-Id: I5f2b8357846fc7dda56e25ebe6ffb095e8047ec8\n"
    },
    {
      "commit": "92346c483249726164f4bd140413d60391121763",
      "tree": "dbfcb43369c2e014c83676633aa4da9b6c8fb212",
      "parents": [
        "ca9bc98e0cfe9a519cfdd13450a68f1ed7ad5b02"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Sep 15 14:11:07 2021 +0000"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Sep 15 14:11:07 2021 +0000"
      },
      "message": "Revert \"Preopt APEX system server jars.\"\n\nThis reverts commit ca9bc98e0cfe9a519cfdd13450a68f1ed7ad5b02.\n\nReason for revert: breaks build\nBug: 200024131\n\nChange-Id: Ide07b4c4d267370ae31107b1598b2f878c701282\n"
    },
    {
      "commit": "ca9bc98e0cfe9a519cfdd13450a68f1ed7ad5b02",
      "tree": "ddf50ea990f4c9a1e00db3adde1b5dca22276be1",
      "parents": [
        "709f02707d4c130f0b633de9d7134f9f34dbf569"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Sep 09 08:09:41 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Sep 15 09:01:07 2021 +0000"
      },
      "message": "Preopt APEX system server jars.\n\nThe path to the artifacts will in the form of\n/system/framework/oat/\u003carch\u003e/\u003cencoded-jar-path\u003e@classes.{odex,vdex,art},\nwhere \u003cencoded-jar-path\u003e is the path to the jar file with \"/\" replaced\nby \"@\". For example,\n/system/framework/oat/x86_64/apex@com.android.art@javalib@service-art.jar@classes.odex\n\nThere will be a follow-up CL to update ART runtime to recognize\nartifacts in that path.\n\nTest: m com.android.art\nBug: 194150908\nChange-Id: Ic89fd63c4b1cd565684cead83fc91dae3bc97a4c\n"
    },
    {
      "commit": "0c66bc615b399d2201b15b4c9052066db04a3f5e",
      "tree": "be8334e4662f4bf137d2231dc92755e44fc85d5e",
      "parents": [
        "ae86338676084cf5966adf99f34e7086f9687edc"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 20 09:47:41 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 20 12:46:48 2021 -0700"
      },
      "message": "Replace android.BuildOs with Config.BuildOS\n\nReplace the android.BuildOs constant with Config.BuildOS so that it\ncan vary based on the product config.\n\nBug: 190084016\nTest: all Soong tests\nChange-Id: Ia67f872d8b2ab788747a22e3a9659dc21c9775cd\n"
    },
    {
      "commit": "1b784a7caaaac01e26876112bca85a524da83b5d",
      "tree": "45a4d04d3045828dacd4b6f8ab80f26f63db0783",
      "parents": [
        "b81b29c2f6c224e65e28e5a9860b3e91634503f9"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu May 20 15:24:34 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu May 20 15:53:00 2021 +0100"
      },
      "message": "Skip TestDex2oatToolDeps on Darwin.\n\nThis fixes https://r.android.com/1711292.\n\nTest: m nothing\nBug: 188647117\nBug: 145934348\nBug: 172480615\nChange-Id: I0c80b546a814d799562f374148eae5ca23b0e1f8\n"
    },
    {
      "commit": "0e4ccebb1681ba464d4ae816347fbd86159d354c",
      "tree": "6db58d0283709bdf252a38624fb9b44f654a8e82",
      "parents": [
        "0780372ae82137817b7f352e066d65bd988fcc01"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu May 13 02:38:35 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue May 18 21:58:38 2021 +0100"
      },
      "message": "Don\u0027t fail if the target module is disabled in dex2oat tool\ndependencies.\n\ndexpreopt.RegisterToolDeps runs late after prebuilt dependencies have\nbeen resolved, and there\u0027s special code in dex2oatPathFromDep to\nresolve the prebuilt from the source module. However, if the source\nmodule is disabled then the dependencies check in validateAndroidModule\nwill complain, so we need to disable that check in this particular\nsituation.\n\nAlso add a comment to explain why dexpreopt.RegisterToolDeps needs to\nrun so late.\n\nTest: m nothing\nBug: 145934348\nBug: 172480615\nChange-Id: Ibc673303d0336768fa23261a2068e91a08f46a30\n"
    },
    {
      "commit": "76b0852a481d3a0c81464e3470294e030b78c897",
      "tree": "fc4eaba0f873cc9daa29a6ce21781c4f82ebc677",
      "parents": [
        "27878ca164ba98b130bd0752d089f5cba3787eb9"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jan 14 17:52:43 2021 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jan 28 06:29:13 2021 +0000"
      },
      "message": "Write module dexpreopt.config for Make.\n\nThis is needed for Java libraries that are \u003cuses-library\u003e dependencies\nof Java libraries and apps defined as Make modules. Each dexpreopted\nmodule in Make generates a dexpreopt.config file, which incorporates\ninformation from its dependencies\u0027 dexpreopt.config files. For\ndependencies that are Make modules their dexpreopt.config files are\ngenerated by Make, and for Soong modules they are generated by Soong.\nSince Soong doesn\u0027t know which libraries are used by Make, it generates\nbuild rules for a superset of the necessary libraries.\n\nBug: 132357300\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nChange-Id: I325b1037658736ee3c02450b08c00eca1a175962\n"
    },
    {
      "commit": "405af0785923a6e5042f9f69f41ebc46c713537a",
      "tree": "712819e0893abab5f99dde3e910f65fe7ce0ccc6",
      "parents": [
        "6682ef42a497e5fdf48d0ade03efd23dbf8379dd"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Oct 10 01:30:30 2020 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Oct 09 18:34:24 2020 -0700"
      },
      "message": "Revert \"Make lots of tests run in parallel\"\n\nThis reverts commit 323dc60712491c71ccdc5363c42df61f0a192487.\n\nReason for revert: Possible cause of test instability\nBug: 170513220\nTest: soong tests\n\nChange-Id: Iee168e9fbb4210569e6cffcc23e60d111403abb8\n"
    },
    {
      "commit": "323dc60712491c71ccdc5363c42df61f0a192487",
      "tree": "5ba86007fb0f7d2536671cbc64e91b1eac304270",
      "parents": [
        "56a8321c210bf73c7b9f177849ff4a6b6192d237"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 18 14:25:31 2020 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 06 15:12:22 2020 -0700"
      },
      "message": "Make lots of tests run in parallel\n\nPutting t.Parallel() in each test makes them run in parallel.\nAdditional t.Parallel() could be added to each subtest, although\nthat requires making a local copy of the loop variable for\ntable driven tests.\n\nTest: m checkbuild\nChange-Id: I5d9869ead441093f4d7c5757f2447385333a95a4\n"
    },
    {
      "commit": "538c0d0c29fdb4508d00a30bdc4fa222b31d598f",
      "tree": "9fedadbb74d873298f25fe774f6186629940a020",
      "parents": [
        "c89fe6253f67810e4340c595e63fb25c0ff7d09b"
      ],
      "author": {
        "name": "Jeongik Cha",
        "email": "jeongik@google.com",
        "time": "Thu Jul 11 15:54:27 2019 +0900"
      },
      "committer": {
        "name": "Jeongik Cha",
        "email": "jeongik@google.com",
        "time": "Mon Jul 29 20:48:30 2019 +0900"
      },
      "message": "Add a rule about platform_apis\n\nAs sdk_check.mk checks, soong starts to check every app.\nIf sdk_version is empty, platform_apis must be true.\nIf sdk_version is not empty, platform_apis must be false.\n\nTest: soong test\nTest: m\nBug: 132780927\nChange-Id: I7ba702d616404d155f8ac40cd008828663ad1488\n"
    },
    {
      "commit": "f9a0443a9c66ae9cc1d8466be4ddf120eb884ae6",
      "tree": "92e488c6f06ae1709df9e03f5837867846f0747e",
      "parents": [
        "63f4b57a7f6b4050b1fcc81eba3f031ebabf2da9"
      ],
      "author": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Wed Jul 17 11:15:09 2019 -0700"
      },
      "committer": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Wed Jul 17 11:15:09 2019 -0700"
      },
      "message": "Java test code clean-up\n\nRemove unused parameters and make testJava return the config.\n\nTest: Ran all java tests.\nChange-Id: Iaa123f3fd93188e2f55452b887e1d340429cc710\n"
    },
    {
      "commit": "a24af3ba207d0b5e965aad8a65689bf9a29db393",
      "tree": "939456f90e51915eea8f041a8b5cca5ce99666f5",
      "parents": [
        "bc975e8b897eaff7e5729fc362c31d35e838526a"
      ],
      "author": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Mon May 13 09:23:20 2019 -0700"
      },
      "committer": {
        "name": "Jaewoong Jung",
        "email": "jungjw@google.com",
        "time": "Wed May 15 15:46:26 2019 -0700"
      },
      "message": "Turn off dex actions for sourceless modules.\n\nTest: dexpreopt_test.go\nFixes: 129370564\nChange-Id: Ic292f37c4f782b14fce625b85817b58c31d3f276\n"
    },
    {
      "commit": "42be761ebdc3ba35bc4f7851c20d50e2acd23fde",
      "tree": "64b733bf1ad1eb4105d935809388f82e8d8ef845",
      "parents": [
        "1b781e52e2820d5c4e923844397c010a9e97e1d3"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 21 18:12:14 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 20 19:29:59 2019 +0000"
      },
      "message": "Add dex_import module type\n\nAdd a module type for importing a prebuilt jar that contains\nclasses.dex files.\n\nTest: m with a prebuilt jar that contains classes.dex files in\n      PRODUCT_BOOT_JARS\nTest: java_test.go, dexpreopt_test.go, dexpreopt_bootjars_test.go\nBug: 124804356\nBug: 125517186\n\nChange-Id: I496848f9dca11f758d49b1cb68168cec7f8e1718\n"
    },
    {
      "commit": "dc2da916fb1966fe0fb7a559542aa076ba29898c",
      "tree": "ecd54616b2a897247d952be516801d1ba02e5418",
      "parents": [
        "e302687ea453099e7b61bf7dc585f10ea6ae97eb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Jan 05 22:13:05 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Jan 06 08:50:36 2019 -0800"
      },
      "message": "Don\u0027t dexpreopt when compile_dex but not installable\n\nModules shouldn\u0027t be dexpreopted and possibly stripped when\ncompile_dex is set but installable is not set.  This matches the\nprevious behavior when the dexpreopt rules were in Make.\n\nBug: 121317615\nTest: dexpreopt_test.go\nChange-Id: I6f80b7b37a990c475b91aa5d98a19a3baa85eb1b\n"
    },
    {
      "commit": "e302687ea453099e7b61bf7dc585f10ea6ae97eb",
      "tree": "df278dca8f291ed296c4120ef279e21d000aff22",
      "parents": [
        "638149e6500288142c346920615066df40c856eb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Jan 05 22:30:13 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Jan 06 08:50:32 2019 -0800"
      },
      "message": "Don\u0027t dexpreopt or strip java_test modules\n\nI6bb2c971cee65d2338839753aa0d84939f335b1b accidentally caused\njava_test modules to be dexpreopted and possibly stripped.\n\nTest: dexpreopt_test.go\nChange-Id: Ida8f046c509c97e38bd3bce66944d32f01530db4\n"
    },
    {
      "commit": "638149e6500288142c346920615066df40c856eb",
      "tree": "90e9c3d8a1f00562a207003ee51a46d8a263cd8f",
      "parents": [
        "b77ffc48dc84053d76cb8f4b530b3862797b2228"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Jan 05 22:12:12 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Jan 05 22:36:13 2019 -0800"
      },
      "message": "Add dexpreopt enabled tests\n\nAdd tests that verify when dexpreopt is enabled or disabled.\n\nTest: dexpreopt_test.go\nChange-Id: Ideba9c0dac30eb31e7ae29e46d1d1590202b8369\n"
    }
  ]
}
