{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":441207909,"defaultBranch":"master","name":"xbuild","ownerLogin":"rust-mobile","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-12-23T14:38:10.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/118470275?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714600256.0","currentOid":""},"activityList":{"items":[{"before":"79b9515c8955a099e91472217b6b0d7cd172901d","after":"abf9687ea87ea98fd06eb521971b453b39d1cb07","ref":"refs/heads/classes-dex","pushedAt":"2024-05-02T23:31:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Align dex file to 4 bytes","shortMessageHtmlLink":"Align dex file to 4 bytes"}},{"before":"e1b08f4c5895562e877107a23d6bc37b3be357c1","after":"79b9515c8955a099e91472217b6b0d7cd172901d","ref":"refs/heads/classes-dex","pushedAt":"2024-05-02T23:29:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"WIP android: Embed `classes.dex` in the root of an APK","shortMessageHtmlLink":"WIP android: Embed classes.dex in the root of an APK"}},{"before":null,"after":"e1b08f4c5895562e877107a23d6bc37b3be357c1","ref":"refs/heads/classes-dex","pushedAt":"2024-05-01T21:50:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"WIP android: Embed `classes.dex` in the root of an APK","shortMessageHtmlLink":"WIP android: Embed classes.dex in the root of an APK"}},{"before":null,"after":"7214fce67265c79db015cf13ae56fff7a5f5de13","ref":"refs/heads/bindgen-flags","pushedAt":"2024-03-07T10:25:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"cargo: Forward `cflags` to `bindgen` via `BINDGEN_EXTRA_CLANG_ARGS`\n\nWhen a crate invokes `bindgen` through a `build.rs` script to generate\nRust code files, it should be using the headers that target Android\nrather than system headers. The include paths for these are already\nset up in the `cflags` that we pass to `cc-rs` (for `clang`), and can be\ntrivially reused for `bindgen`'s `clang`.","shortMessageHtmlLink":"cargo: Forward cflags to bindgen via BINDGEN_EXTRA_CLANG_ARGS"}},{"before":"1b96e8b24748a2a7ca030fa3da8f96049c374127","after":"bb4083ad5e7c598c87fc388db0863a02bce07374","ref":"refs/heads/fix-msvc-cross-compile","pushedAt":"2024-01-04T16:27:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"cargo: Use the right LLVM tools and arguments for MSVC cross-compilation\n\n`xbuild` uses the headers from `xwin` to support cross-compiling,\nbut doesn't fully replicate the other setup steps that it proposes to\nprovide a valid and working cross-compilation setup to MSVC. We need to\nmake the following changes:\n\n- `clang-cl` must be used (a `clang` driver with `cl.exe` interface),\n as all native projects will call `CC`/`CXX` with flags that are only\n compatible with `cl.exe`;\n- `-I` does not seem to set up the system headers correctly, for this\n `-imsvc` should be used;\n- Remove `-Clink-arg=-fuse-ld=lld-link` because we have already selected\n a linker for Rust with the `LINKER` env var (see warning below). We\n might instead want to set it in `C(XX)FLAGS` so that when a native\n crate uses `CC`/`CXX` to link libraries, it can use `lld-link` instead\n of (probably, like `cargo`/`rustc` when `LINKER` is unsed) using\n `link.exe` by default;\n- Unset forced static CRT and `stdlib=libc++` selection, as these don't\n appear to ever be needed, and cause some builds to fail (when crates\n are changing these config options themselves?):\n\n = note: rust-lld: warning: ignoring unknown argument '-fuse-ld=lld-link'\n rust-lld: error: /failifmismatch: mismatch detected for 'RuntimeLibrary':\n >>> libbasis_universal_sys-4f5abd4a27e6aa13.rlib(basisu_resample_filters.o) has value MT_StaticRelease\n >>> libintel_tex_2-6d9bd3438efd06d9.rlib(ispc_texcomp_astc.o) has value MD_DynamicRelease","shortMessageHtmlLink":"cargo: Use the right LLVM tools and arguments for MSVC cross-compilation"}},{"before":null,"after":"1b96e8b24748a2a7ca030fa3da8f96049c374127","ref":"refs/heads/fix-msvc-cross-compile","pushedAt":"2024-01-04T16:09:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"cargo: Use the right LLVM tools and arguments for MSVC cross-compilation\n\n`xbuild` uses the headers from `xwin` to support cross-compiling,\nbut doesn't fully replicate the other setup steps that it proposes to\nprovide a valid and working cross-compilation setup to MSVC. We need to\nmake the following changes:\n\n- `clang-cl` must be used (a `clang` driver with `cl.exe` interface),\n as all native projects will call `CC`/`CXX` with flags that are only\n compatible with `cl.exe`;\n- `-I` does not seem to set up the system headers correctly, for this\n `-imsvc` should be used;\n- `-fuse-ld=lld-link` does not strictly need to be set in `C(XX)FLAGS`\n unless a native project uses `CC`/`CXX` to link libraries\n (otherwise only `cargo`/`rustc` does this, but invokes it through the\n `LINKER` environment variable which is configured to `rust-lld`, as\n the default is otherwise `link.exe`).","shortMessageHtmlLink":"cargo: Use the right LLVM tools and arguments for MSVC cross-compilation"}},{"before":null,"after":"95850c62872c3d2c1f9a04f1669279a80df4c409","ref":"refs/heads/msvc-aarch64","pushedAt":"2024-01-04T14:33:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Support cross-compiling to aarch64 on MSVC\n\nShip the binaries in our minimal prebuilt package and generalize the\nlibrary paths to support `aarch64-pc-windows-msvc` cross-compiles.","shortMessageHtmlLink":"Support cross-compiling to aarch64 on MSVC"}},{"before":null,"after":"9a07c4a6e79bb6d0943cfcbd6373ebb10bf70c71","ref":"refs/heads/gradle-if-aab","pushedAt":"2023-12-18T15:29:40.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Use `gradle` when the build target is `Aab`\n\nInstead of explicitly requiring `gradle: true` in the manifest, enable\nit by default when the (implicit or explicit!) output package format\nis `Aab` for convenience, as there is currently no way to select the\n`gradle` backend via command line parameters and hardcoding it in\n`manifest.yaml` makes it inconvenient to build `Apk`s with the \"native\"\nbuiltin backend.\n\nAlso insert validation in case the user explicitly inserts `gradle:\nfalse` but tries to build `Aab`s. The default for releases is still\n`Aab` if there is an explicit `gradle: true`, but an `Apk` is built\notherwise.","shortMessageHtmlLink":"Use gradle when the build target is Aab"}},{"before":"d2d866e653183466a44abc288fc4ffceb21681f1","after":"633170a3c9de86b6d6fe56ad45ee6c0bf94cfeaa","ref":"refs/heads/termux","pushedAt":"2023-11-15T10:57:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Support building APKs from Android host","shortMessageHtmlLink":"Support building APKs from Android host"}},{"before":"f58cf19db896df113684c546aee5e053f7f39e5d","after":"268939a99a50d7927bce3e343e5d2ed32eb8b30e","ref":"refs/heads/master","pushedAt":"2023-10-11T12:14:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Support the x86_64-linux-android build target. (#127)\n\n* Initial support for x86_64-linux-android targets.\r\n\r\n* Improve target selection for clang link phase.\r\n\r\n* Only add clang target if it differs from the host.","shortMessageHtmlLink":"Support the x86_64-linux-android build target. (#127)"}},{"before":null,"after":"d5ebb6e6849f0dd225e7c379bec61b1c03d3b86a","ref":"refs/heads/gradle-assets","pushedAt":"2023-10-10T15:26:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"gradle: Embed assets in `baseAssets` \"Play Asset Delivery\" pack\n\nAssets for AABs could be embedded in the application pack but have\nsignificant limitations and size constraints. Implement the most\nsimple form of an asset pack that comprises all assets listed in\n`manifest.yaml` in an `install-time` pack that is a fixed dependency of\nthe app. This makes the files available to `AAssetManager` as soon as\nthe app is started while being exempt of the 150MB limit.\n\nThis matches the existing \"asset embedding\" functionality provided by\nour native APK build.\n\nhttps://developer.android.com/guide/playcore/asset-delivery/integrate-native","shortMessageHtmlLink":"gradle: Embed assets in baseAssets \"Play Asset Delivery\" pack"}},{"before":"2a13bae541912eb15283578b6b3587237fa8bd4a","after":"bd2052f1cd00d030e9be88ec8fa8084afe619fe5","ref":"refs/heads/gradle-library-dependencies","pushedAt":"2023-10-10T14:28:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"apk: Include recursive libraries via `gradle` as well\n\nThe `gradle` build was only including the target library from `cargo`,\nbut not any (in)direct dependencies like `libc++_shared.so`.\n\nMove the logic where we recursively scan all libraries, and pass\nthe result to the `gradle` builder in addition to the existing `apk`\nbuilder.","shortMessageHtmlLink":"apk: Include recursive libraries via gradle as well"}},{"before":"df53b08ce70386089f3880bfd6c79cbc43e6f5f8","after":"2a13bae541912eb15283578b6b3587237fa8bd4a","ref":"refs/heads/gradle-library-dependencies","pushedAt":"2023-10-10T13:05:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"apk: Include recursive libraries via `gradle` as well\n\nThe `gradle` build was only including the target library from `cargo`,\nbut not any (in)direct dependencies like `libc++_shared.so`.\n\nMove the logic where we recursively scan all libraries, and pass\nthe result to the `gradle` builder in addition to the existing `apk`\nbuilder.","shortMessageHtmlLink":"apk: Include recursive libraries via gradle as well"}},{"before":"01da15410339c2a757bb23b1cb07950ebfb2ec55","after":null,"ref":"refs/heads/adb-select-current-package-uid","pushedAt":"2023-10-10T12:48:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"}},{"before":"fffc0b4b1020c07ae741ad68aed65495f0c82be4","after":"f58cf19db896df113684c546aee5e053f7f39e5d","ref":"refs/heads/master","pushedAt":"2023-10-10T12:48:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Explicitly match package name in `pm list package` output (#135)\n\nThe positional `FILTER` argument to `pm list package` works as a\r\nsubstring match: if you have a package named `foo.bar.baz` and\r\n`foo.bar.baz_debug` for example, and try to run `foo.bar.baz`, both\r\npackages will be returned, the `_debug`-suffixed one likely first,\r\nand the wrong UID ends up being used as `logcat` filter.\r\n\r\nTo counter that we could use the very slow and extremely verbose\r\n(thousands of lines) `pm dump PACKAGE`, _or_ look for the right explicit\r\ntext match in the line-based `package:foo.bar.baz uid:1234` output from\r\n`pm list package`: the latter approach is chosen here.","shortMessageHtmlLink":"adb: Explicitly match package name in pm list package output (#135)"}},{"before":null,"after":"df53b08ce70386089f3880bfd6c79cbc43e6f5f8","ref":"refs/heads/gradle-library-dependencies","pushedAt":"2023-09-20T13:10:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"apk: Include recursive libraries via `gradle` as well\n\nThe `gradle` build was only including the target library from `cargo`,\nbut not any (in)direct dependencies like `libc++_shared.so`.\n\nMove the logic where we recursively scan all libraries, and pass\nthe result to the `gradle` builder in addition to the existing `apk`\nbuilder.","shortMessageHtmlLink":"apk: Include recursive libraries via gradle as well"}},{"before":"2c10b0c48bb2f9f65eaa810d34dd30c9f83cdee4","after":null,"ref":"refs/heads/download-generalize-rustup-target-for-all-archs","pushedAt":"2023-09-14T16:40:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"}},{"before":"6caae75e2c1291ad7456f15b6a04786f91fca9ac","after":"fffc0b4b1020c07ae741ad68aed65495f0c82be4","ref":"refs/heads/master","pushedAt":"2023-09-14T16:40:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"download: Generalize `rustup_target()` install in `prefetch()` (#139)\n\nExcerpt from https://github.com/rust-mobile/xbuild/pull/127 expanded to\nall platforms: we already have `rustup_triple()` for all target\narchitectures available, instead of hardcoding one specific architecture\nper platform.","shortMessageHtmlLink":"download: Generalize rustup_target() install in prefetch() (#139)"}},{"before":"909fe13260496554e5ade1f45d11214f6569ae92","after":"d2d866e653183466a44abc288fc4ffceb21681f1","ref":"refs/heads/termux","pushedAt":"2023-09-14T13:21:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Support building APKs from Android host","shortMessageHtmlLink":"Support building APKs from Android host"}},{"before":null,"after":"2c10b0c48bb2f9f65eaa810d34dd30c9f83cdee4","ref":"refs/heads/download-generalize-rustup-target-for-all-archs","pushedAt":"2023-09-14T09:24:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"download: Generalize `rustup_target()` install in `prefetch()`\n\nExcerpt from https://github.com/rust-mobile/xbuild/pull/127 expanded to\nall platforms: we already have `rustup_triple()` for all target\narchitectures available, instead of hardcoding one specific architecture\nper platform.","shortMessageHtmlLink":"download: Generalize rustup_target() install in prefetch()"}},{"before":null,"after":"909fe13260496554e5ade1f45d11214f6569ae92","ref":"refs/heads/termux","pushedAt":"2023-09-14T09:17:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"Support building APKs from Android host","shortMessageHtmlLink":"Support building APKs from Android host"}},{"before":"254096d43b0ce9b18f6c13c6d65bd55c049f944a","after":null,"ref":"refs/heads/adb-drop-start-wait-flag","pushedAt":"2023-09-14T07:07:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"}},{"before":"c2f3291a02e8dddf531b2583f8e15b82f1461c61","after":"6caae75e2c1291ad7456f15b6a04786f91fca9ac","ref":"refs/heads/master","pushedAt":"2023-09-14T07:07:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Drop `-W` (wait for app) from `am start` for faster `--uid` filter (#137)\n\nThis effectively reverts commit bf478adbae4e3ece3e5c3f3de85404c88a127593\r\n(#118) without touching code improvements elsewhere. `-W` makes app\r\nstart-up significantly slower, sometimes leaving the user wait up to 10\r\nseconds even if the app has already started and crashed without showing\r\nany `logcat` output. It has now become unnecessary since using the app\r\n`uid` as filter in #131, which is always available as long as the app\r\nis installed and doesn't rely on a running (**before** having crashed!)\r\nexecutable for a process id.","shortMessageHtmlLink":"adb: Drop -W (wait for app) from am start for faster --uid filt…"}},{"before":null,"after":"254096d43b0ce9b18f6c13c6d65bd55c049f944a","ref":"refs/heads/adb-drop-start-wait-flag","pushedAt":"2023-09-13T20:49:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Drop `-W` (wait for app) from `am start` for faster `--uid` filter\n\nThis effectively reverts commit bf478adbae4e3ece3e5c3f3de85404c88a127593\n(#118) without touching code improvements elsewhere. `-W` makes app\nstart-up significantly slower, sometimes leaving the user wait up to 10\nseconds even if the app has already started and crashed without showing\nany `logcat` output. It has now become unnecessary since using the app\n`uid` as filter in #131, which is always available as long as the app\nis installed and doesn't rely on a running (**before** having crashed!)\nexecutable for a process id.","shortMessageHtmlLink":"adb: Drop -W (wait for app) from am start for faster --uid filter"}},{"before":null,"after":"01da15410339c2a757bb23b1cb07950ebfb2ec55","ref":"refs/heads/adb-select-current-package-uid","pushedAt":"2023-09-09T00:08:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Explicitly match package name in `pm list package` output\n\nThe positional `FILTER` argument to `pm list package` works as a\nsubstring match: if you have a package named `foo.bar.baz` and\n`foo.bar.baz_debug` for example, and try to run `foo.bar.baz`, both\npackages will be returned, the `_debug`-suffixed one likely first,\nand the wrong UID ends up being used as `logcat` filter.\n\nTo counter that we could use the very slow and extremely verbose\n(thousands of lines) `pm dump PACKAGE`, _or_ look for the right explicit\ntext match in the line-based `package:foo.bar.baz uid:1234` output from\n`pm list package`: the latter approach is chosen here.","shortMessageHtmlLink":"adb: Explicitly match package name in pm list package output"}},{"before":"507b43b94cd2afc2adcc35bd0289865f070b9ee2","after":"c2f3291a02e8dddf531b2583f8e15b82f1461c61","ref":"refs/heads/master","pushedAt":"2023-08-30T04:27:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"dvc94ch","name":"David Craven","path":"/dvc94ch","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/741807?s=80&v=4"},"commit":{"message":"Use rustls instead of OpenSSL TLS\n\nThis allows the release executable to be a single static binary on Linux\nplatforms. Closes #132\n\nSigned-off-by: John Nunley ","shortMessageHtmlLink":"Use rustls instead of OpenSSL TLS"}},{"before":"8fd72e5d999f8e14822248d1cf632d57349bb943","after":"2c5f25ca891399891cf975feda6934b18e20588a","ref":"refs/heads/adb-from-sdk","pushedAt":"2023-08-26T20:31:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"devices/adb: Find adb executable in `$ANDROID_HOME`/`$ANDROID_SDK_ROOT`\n\n`adb` is not always available on `PATH`, sometimes it is installed only\nvia the SDK. Make sure we find it there too - after checking `PATH` -\nvia well-known SDK variables.","shortMessageHtmlLink":"devices/adb: Find adb executable in $ANDROID_HOME/$ANDROID_SDK_ROOT"}},{"before":"decd6293d2605e3938e61449ea86fb0605929f2a","after":null,"ref":"refs/heads/adb-logcat-uid","pushedAt":"2023-08-26T20:30:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"}},{"before":"0fe7e314328f40d2b47c22a956f620523a597755","after":"507b43b94cd2afc2adcc35bd0289865f070b9ee2","ref":"refs/heads/master","pushedAt":"2023-08-26T20:30:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Use `uid` to limit `logcat` to the current application (#131)\n\nHaving never really understood how Android Studio does it, I just\r\nstumbled upon this very new [stackoverflow answer] that has a rather\r\nbeatiful solution to the current problems with `pidof`, without\r\ndrawbacks. Pidof has always been flaky as it relies on the app to be\r\nrunning, which may either take some time or never happen if the app\r\ncrashed before `pidof` is first run. This results in silly workarounds\r\nsuch as loops that induce extra delay and need to have an upper bound.\r\nAnd this `pid` changes every time the app is restarted, making it a\r\ntedious process that also doesn't react to manual app restarts on the\r\ndevice. Retrieving the `uid` via `pm list packages -U` on the other\r\nhand, and passing that to `logcat --uid` has the following advantages:\r\n\r\n- Always available immediately after the app has been installed, no need\r\n to check it in a loop (no extra delay);\r\n- Doesn't change after the app is (re!)installed, unless the user fully\r\n deletes and installs the app again;\r\n- Is resilient against app crashes because of that, and allows the user\r\n to see any error/crash related messages straight away;\r\n- Still includes logs printed by other system components that run or are\r\n invoked within an app, as before.\r\n\r\n[stackoverflow answer]: https://stackoverflow.com/a/76551835","shortMessageHtmlLink":"adb: Use uid to limit logcat to the current application (#131)"}},{"before":"01c71dbadc6af26562424504cdb2557c671aa2bc","after":"decd6293d2605e3938e61449ea86fb0605929f2a","ref":"refs/heads/adb-logcat-uid","pushedAt":"2023-08-26T17:22:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"MarijnS95","name":"Marijn Suijten","path":"/MarijnS95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2325264?s=80&v=4"},"commit":{"message":"adb: Use `uid` to limit `logcat` to the current application\n\nHaving never really understood how Android Studio does it, I just\nstumbled upon this very new [stackoverflow answer] that has a rather\nbeatiful solution to the current problems with `pidof`, without\ndrawbacks. Pidof has always been flaky as it relies on the app to be\nrunning, which may either take some time or never happen if the app\ncrashed before `pidof` is first run. This results in silly workarounds\nsuch as loops that induce extra delay and need to have an upper bound.\nAnd this `pid` changes every time the app is restarted, making it a\ntedious process that also doesn't react to manual app restarts on the\ndevice. Retrieving the `uid` via `pm list packages -U` on the other\nhand, and passing that to `logcat --uid` has the following advantages:\n\n- Always available immediately after the app has been installed, no need\n to check it in a loop (no extra delay);\n- Doesn't change after the app is (re!)installed, unless the user fully\n deletes and installs the app again;\n- Is resilient against app crashes because of that, and allows the user\n to see any error/crash related messages straight away;\n- Still includes logs printed by other system components that run or are\n invoked within an app, as before.\n\n[stackoverflow answer]: https://stackoverflow.com/a/76551835","shortMessageHtmlLink":"adb: Use uid to limit logcat to the current application"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEQEo-6QA","startCursor":null,"endCursor":null}},"title":"Activity · rust-mobile/xbuild"}