)]}'
{
  "commit": "ec47e99b4dac54b9f7afe1d28530e0291425ed2b",
  "tree": "848051794adaf11ce1b9b6efd710b87dc545295d",
  "parents": [
    "16771ec9c25ee5cc916fb29ba6872c0f46c29c04"
  ],
  "author": {
    "name": "Jiyong Park",
    "email": "jiyong@google.com",
    "time": "Tue Jan 02 19:04:33 2024 +0900"
  },
  "committer": {
    "name": "Jiyong Park",
    "email": "jiyong@google.com",
    "time": "Thu Jan 04 13:29:04 2024 +0900"
  },
  "message": "Limit System SDK to 34 for Java modules in the vendor partition\n\nThis change disallows Java modules in the vendor partition to use System\nSDK that is newer than API level 34; 34 is the latest allowed.\n\nBackground 1: with Trunk Stable, the system/vendor interface is released\nat Q2 whereas the system/app interface is released at Q3. In other\nwords, at Q2, the APIs which will be added to the system SDK at Q3 are\nnot available. Since the system/vendor interface (which is fronzen at\nQ2) is what the modules in the vendor partition will be building\nagainst, they can\u0027t and shouldn\u0027t use those new APIs that will be added\nin the future (Q3). Using those APIs is risky because there\u0027s a chance\nthat those APIs get removed or changed between Q2 and Q3. For example,\n2024 Q2 is technically still Android U, not Android V.\n\nBackground 2: The use of Java APIs in the vendor partition had many\nissues. Most significantly, those \"vendor\" Java apps are categorized as\npart of the system partition because all Java app processes require\naccess to platform internal libraries that are prohibited to vendor\nprocesses. Furthermore, since the Project Treble, the vendor partition\nwas re-purposed to a partition to host SoC-dependent bits - usually\nHALs. Implementing HALs in Java has never been officially supported and\nhas had many loop holes.\n\nWe\u0027d like to use both background 1 and 2 as a chance to disallow any\nJava code in the vendor partition. However, since there are already some\nJava modules in the partition, we can\u0027t suddenly ban it. The deprecation\nwill be made gradually, and this CL is the start.\n\nNote that sdk_version: \"current\" or \"system_current\" is automatically\noverridden into 34 or system_34. This is to prevent sudden breakage of\nvendor modules that have been targetting the latest (i.e. current) API\nlevel. They will however fail if they use APIs newer than API level 34.\n\nBug: 314011075\nTest: m blueprint_tests\nChange-Id: I59f5ac15ce9ac2ff7cc89e9c110169359077c37c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aafcee79a391c081db53936c9f275dbe29fcdbae",
      "old_mode": 33188,
      "old_path": "android/sdk_version.go",
      "new_id": "9c84a27f8281e749061a0e0c20541bfbb0edae17",
      "new_mode": 33188,
      "new_path": "android/sdk_version.go"
    },
    {
      "type": "modify",
      "old_id": "9e1ac70dfc7a8ae3afa3467f7b0d03c43206f84a",
      "old_mode": 33188,
      "old_path": "android/test_config.go",
      "new_id": "a15343adbfbc22f700ae0dc552c854b9ed21b1cb",
      "new_mode": 33188,
      "new_path": "android/test_config.go"
    },
    {
      "type": "modify",
      "old_id": "79cd3f923d46ff92f591303500478f61614b5486",
      "old_mode": 33188,
      "old_path": "java/Android.bp",
      "new_id": "2585cd23fa95cc675f0a4314fdce3fa07e54cb56",
      "new_mode": 33188,
      "new_path": "java/Android.bp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "88351d2ef94354eee553434411a5dafe836e44cc",
      "new_mode": 33188,
      "new_path": "java/sdk_version_test.go"
    },
    {
      "type": "modify",
      "old_id": "e51fe39c92170a9b391b2b361f0483a6e4e942ee",
      "old_mode": 33188,
      "old_path": "sysprop/sysprop_test.go",
      "new_id": "e5b3dea059fbd5276abd7d0931627b9f7a7a1093",
      "new_mode": 33188,
      "new_path": "sysprop/sysprop_test.go"
    }
  ]
}
