)]}'
{
  "log": [
    {
      "commit": "d0f492db038c6210c1138865d816bfb134376538",
      "tree": "1d4ed362037758111a28ecb453d527403d5d6815",
      "parents": [
        "0015a153536c51cdd66dce5e9f08d19eb517fab8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 18:12:45 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 10 11:59:18 2017 -0700"
      },
      "message": "AAPT2: Share split functionality between link and optimize\n\nGenerating splits should be possible to do from the optimize command.\nThis means that a lot of infrastructure around split APKs can be\nshared by both the optimize and link phase.\n\nBug: 35925830\nChange-Id: Ia88b9e4bff300a56353b2f7a4a2547c8eb43a299\nTest: manual\n"
    },
    {
      "commit": "06460ef0d7072114ea3280e1650f77f55e7223f4",
      "tree": "5045dafbd896153c191ee0ea14717359021175e2",
      "parents": [
        "3910adfb62b6db705878058ccbae52af0fecb172"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 14 18:52:13 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 16:53:46 2017 -0700"
      },
      "message": "AAPT2: Fix up file IO\n\nThis also enables an AAPT behavior that CTS tests have\ncome to depend on.\n\nSmall files that compress negatively (get larger) are stored\nuncompressed. Some CTS tests assume this and try to open these\nfiles by mmapping them, which is only possible if they are\nuncompressed.\n\nBug: 35461578\nTest: make aapt2_tests\nChange-Id: Id622a6150fe72477ad65d67d1bad897a8ee2ffb9\n"
    },
    {
      "commit": "d48944a745f9ed121e6bde22ef6feb3a44fbec39",
      "tree": "349c152caa68f1283535b2f9c49f5cd8a50eb59b",
      "parents": [
        "ceb9b2f80f853059233cdd29057f39a5960a74ae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 21 14:22:30 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:41:55 2017 -0800"
      },
      "message": "AAPT2: Rename strip phase to optimize\n\n- Allow resource deduping, version collapsing, and sparse resource\n  encoding.\n\nTest: manual\nChange-Id: Ia4aa892ab5b06ba1d5ea4a6efb51b00bc3a980c4\n"
    },
    {
      "commit": "c8f71aa67ea599cb80205496cb67e9e7a121299c",
      "tree": "2966aa97b09f04f9b7379fd93a7fc3ea1ae9009f",
      "parents": [
        "c535d122c6a58a152ff2581f936070c2695c45ba"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 07:03:50 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 15 12:40:02 2017 -0800"
      },
      "message": "Add ResTable_sparseTypeEntry support\n\nBenchmarks on bullhead-userdebug show that there is a negligent\nperformance impact when using sparse entries on a 30% loaded\nsparse type of 1000 resources.\n\nBenchmark                                             Time           CPU Iterations\n-----------------------------------------------------------------------------------\nBM_SparseEntryGetResourceSparseLarge                255 ns        254 ns    2751408\nBM_SparseEntryGetResourceNotSparseLarge             254 ns        254 ns    2756534\n\nBug: 27381711\nTest: make libandroidfw_tests aapt2_tests\nChange-Id: I051ea22f2f6b2bc3696e446adc9e2a34be18009f\n"
    },
    {
      "commit": "fa131d5312011fc1a95cc9a679dbe52f0a7dbe4d",
      "tree": "f488c2401aab2030859d822c11efe1d5838823af",
      "parents": [
        "2a1232426826d08124502fc48101a8eae326fcc4"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 19:15:03 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 19:49:37 2017 +0000"
      },
      "message": "Only compress files that were already compressed in the original APK.\n\nAlso fix a log message.\n\nTest: Manually. Unit tests pass.\n\nChange-Id: Iea236bbcfbe1a0a0894ce1bfce09c19208c5a0bc\n"
    },
    {
      "commit": "2599aa4dfd29627a5690460bdcd5568d1029d4dc",
      "tree": "e7cf03b50d729f80cb85ec15ba1dc68bda841759",
      "parents": [
        "ddb80216b9d536be0f2af287f44a41872aa1d809"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 22:47:03 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 21:35:21 2017 +0000"
      },
      "message": "Add a method LoadedApk::WriteToArchive.\n\nTest: Manually.\n\nChange-Id: I61717204e58ca2bbfba9a52c7aecf27882a853f8\n"
    },
    {
      "commit": "ff759e6a6ef6dd741b174e58a0f01cb87accc897",
      "tree": "97d5fa59235dad2144b90caf5f3340b2b4ff566a",
      "parents": [
        "db88bfaa31a559921657cd255e31cde2e73c6f99"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 00:29:25 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 00:31:55 2017 +0000"
      },
      "message": "Moving the LoadedApk class to its own file.\n\nTest: Unit tests pass.\n\nChange-Id: Id706f9ad1f3406bb73a60a33139a04745d5d72c0\n"
    }
  ]
}
