Skip to content

Conversation

@vojta-horanek
Copy link
Member

No description provided.

@gemini-code-assist
Copy link

Summary of Changes

Hello @vojta-horanek, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly updates and expands the Unix configuration for development environments. It focuses on modernizing the Android development stack by upgrading the Android SDK to API 35 and introducing a dedicated Docker image for Android emulators integrated with Maestro for UI automation. Additionally, it brings the Kotlin compiler and Gradle build tool to their latest stable versions, ensuring a robust and up-to-date foundation for building and testing applications.

Highlights

  • Android SDK Update: The Android SDK has been updated to include build tools and platform for API 35, ensuring compatibility with the latest Android versions.
  • New Android Emulator Docker Image with Maestro: A new Docker image has been introduced specifically for running Android emulators, pre-configured with Maestro CLI for automated UI testing, along with necessary VNC and emulator control scripts.
  • Kotlin Version Upgrade: The Kotlin compiler version has been upgraded from 1.9.21 to 2.2.0, incorporating the latest language features and improvements.
  • Gradle Version Update: The Gradle distribution has been updated to version 8.14.2, bringing the latest build system enhancements and bug fixes.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates various Unix configurations, primarily focusing on Docker images for Android development. It introduces a new Dockerfile for an Android emulator with Maestro, updates versions of Kotlin and Gradle, and adds newer Android SDK components. My review includes suggestions to remove temporary debugging commands, improve Dockerfile efficiency by consolidating commands and cleaning up build artifacts, fixing a critical bug in a shell script, and removing dead or redundant code for better maintainability.

echo "${G_LOG_E} Failed to store x11vnc password."
exit 1
fi
passwordArgument=-"-rfbauth ${passwordFilePath}"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

There's a critical bug here. The extra hyphen in passwordArgument=-'-rfbauth ...' will cause the argument to be passed incorrectly to x11vnc, which will likely prevent the VNC server from starting correctly with password authentication.

Suggested change
passwordArgument=-"-rfbauth ${passwordFilePath}"
passwordArgument="-rfbauth ${passwordFilePath}"

Comment on lines +82 to +85
RUN apt-get update && apt-get install -y \
fonts-noto \
fonts-noto-mono \
fonts-noto-color-emoji && fc-cache -f -v

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This RUN instruction has two issues:

  1. It runs apt-get update again, which is inefficient. It's better to combine package installations into a single RUN layer with one apt-get update call (like the one on line 18).
  2. It's missing rm -rf /var/lib/apt/lists/* after apt-get install, which will unnecessarily increase the Docker image size.

I recommend moving the font installation to the RUN block at line 18 and removing this block.


FROM ${JAVA_IMAGE}

RUN echo ${JAVA_IMAGE}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This echo command appears to be a leftover from debugging and should be removed from the final Dockerfile to keep it clean.

Comment on lines 28 to 35
RUN echo y | sdkmanager "tools" && \
echo y | sdkmanager "platform-tools" && \
echo y | sdkmanager "build-tools;35.0.0" && \
echo y | sdkmanager "build-tools;34.0.0" && \
echo y | sdkmanager "build-tools;33.0.2" && \
echo y | sdkmanager "build-tools;33.0.1" && \
echo y | sdkmanager "build-tools;32.1.0-rc1" && \
echo y | sdkmanager "build-tools;30.0.3"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve efficiency and readability, these chained sdkmanager commands can be consolidated into a single call. The sdkmanager tool supports installing multiple packages at once, which reduces the number of processes spawned during the build.

RUN echo y | sdkmanager "tools" "platform-tools" "build-tools;35.0.0" "build-tools;34.0.0" "build-tools;33.0.2" "build-tools;33.0.1" "build-tools;32.1.0-rc1" "build-tools;30.0.3"

Comment on lines +37 to 41
RUN echo y | sdkmanager "platforms;android-35" && \
echo y | sdkmanager "platforms;android-34" && \
echo y | sdkmanager "platforms;android-33" && \
echo y | sdkmanager "platforms;android-32" && \
echo y | sdkmanager "platforms;android-31"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Similar to the previous comment, these sdkmanager calls can be combined into a single, more efficient command.

RUN echo y | sdkmanager "platforms;android-35" "platforms;android-34" "platforms;android-33" "platforms;android-32" "platforms;android-31"

Comment on lines +25 to +28
if [ $? -ne 0 ]; then
echo "Error launching emulator"
return 1
fi

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This check if [ $? -ne 0 ] will not correctly determine if the emulator failed to launch. The nohup ... & command backgrounds the process and returns an exit code of 0 almost immediately. This check is misleading and provides a false sense of error handling.

NC='\033[0m' # No Color


emulator_name=${EMULATOR_NAME}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This variable assignment is redundant. You can use the environment variable ${EMULATOR_NAME} directly in the script (e.g., on line 39) to simplify the code.

Comment on lines +12 to +35
function check_hardware_acceleration() {
if [[ "$HW_ACCEL_OVERRIDE" != "" ]]; then
hw_accel_flag="$HW_ACCEL_OVERRIDE"
else
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS-specific hardware acceleration check
HW_ACCEL_SUPPORT=$(sysctl -a | grep -E -c '(vmx|svm)')
else
# generic Linux hardware acceleration check
HW_ACCEL_SUPPORT=$(grep -E -c '(vmx|svm)' /proc/cpuinfo)
fi

if [[ $HW_ACCEL_SUPPORT == 0 ]]; then
hw_accel_flag="-accel off"
else
hw_accel_flag="-accel on"
fi
fi

echo "$hw_accel_flag"
}

# NOT IN USE ATM.
hw_accel_flag=$(check_hardware_acceleration)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This function check_hardware_acceleration and its call are marked as "NOT IN USE ATM.". This dead code should be removed to improve readability and maintainability.

Comment on lines +50 to +53
if [ $? -ne 0 ]; then
echo "Error launching emulator"
return 1
fi

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This check if [ $? -ne 0 ] will not correctly determine if the emulator failed to launch. The nohup ... & command backgrounds the process and returns an exit code of 0 almost immediately. This check is misleading and provides a false sense of error handling.

# Java 17 is default
ARG VERSION=17

RUN echo ${VERSION}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This echo command appears to be a leftover from debugging and should be removed from the final Dockerfile to keep it clean.

@vojta-horanek vojta-horanek enabled auto-merge (squash) January 15, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants