Author Archives:

Gemini LTI Update: Include your LMS sources when using NotebookLM in Powerschool Schoology

When creating a notebook in Powerschool Schoology, Gemini LTI users can now add content directly from their course as sources. This integration allows educators and students to seamlessly bridge their course materials with AI-powered research and analysis, and generate Studio artifacts like Audio and Video Overviews, infographics, slide decks, and more based on their Schoology resources. By automating the import of Schoology course materials, users can quickly ground their notebooks in specific curriculum content without the need for manual file uploads.

Getting started

Rollout pace

Availability

  • Education: Education Fundamentals, Standard, and Plus

Resources

This entry was posted in Uncategorized on by .

Top AI on Android updates for building intelligent experiences from Google I/O ‘26

Posted by Jingyu Shi, Staff Developer Relations Engineer




At Google I/O 2026, we introduced Android’s shift from an operating system to an intelligence system. We also demonstrated how you can build intelligent experiences natively with the system and bring the power of Google’s AI into your apps. If you missed these updates, check out our quick recap video here: 


1. Putting your apps at the center of the intelligence system

The Android OS already enables agents like Gemini to complete task automation, where it can navigate an app on the users behalf. 

AppFunctions (Android MCP) provides you with more control over how your app integrates with the intelligence system. This new platform API and Jetpack library are currently available in experimental preview. 

  • Android MCP: AppFunctions allows your application to act as an on-device Model Context Protocol (MCP) server. It means you seamlessly share your app's tools, services and data to the system and agents.

  • Streamlined Development: You can leverage the new skill to easily generate AppFunctions within your codebase. 

  • Exploration and Testing: We’ve released a new test agent that allows you to experiment and debug your AppFunctions in a simulated agent environment. 
Early Access Program: Want to be among the first apps to deploy app functions in production? Join our early access program today!

To see it in action, check out the live demo showcased during the What’s New in Android presentation.


 2. On-Device Power with Gemini Nano 4 Preview


Last month, we launched Gemma 4, our state-of-the-art open models. You can already preview and prototype with the next generation of Gemini Nano (Nano 4) models with the AIcore developer preview. To make productionizing with Gemini Nano more reliable and performant, we are adding a few new features in ML Kit GenAI APIs

  • Prototype to Production: Transition from prototyping in the AICore Developer Preview to building production-ready apps using the ML Kit GenAI Prompt API to leverage Gemini Nano 4 that’s launching in flagship devices later this year.

  • Structured Output: The upcoming Structured Output API will allow you to define object classes to be returned as outputs from Prompt API, ensuring reliable outputs in productionizing your intelligent features. 

  • Prefix Caching: It optimizes your on-device inference performance with the prompt API. The new Prefix caching reduces inference time by storing and reusing the intermediate LLM state of processing a shared and recurring part of the prompt.


For highly customized or niche use cases, you can also use LiteRT-LM to bring your own fine-tuned small language model to Android.



3. Hybrid Inference & Agents

To help you build more advanced AI features like hybrid inference and explore building in-app agents, we’ve released new APIs, framework and guidances:

  • Firebase AI Logic Hybrid Inference: This new API provides the simple routing capability between on-device models and powerful cloud infrastructure. You can set explicit orchestration modes, such as PREFER_ON_DEVICE, PREFER_CLOUD, ONLY_ON_DEVICE, or ONLY_CLOUD, based on your need.

  • A2UI Jetpack Compose Renderer: The new A2UI library allows your agents to "speak UI". With the upcoming Jetpack Compose Renderer, you can automatically render these A2UI messages as native UI components.

  • ADK for Android: The first version of ADK for Android is available for experimentation. It allows you to build multi-agent workflows across both on-device and Cloud models while managing orchestration, context handling and sessions between agents.

From building with on-device models, exploring hybrid inference to building agents, you can see them in action in this talk: 
 


Start Building Today

Whether you are experimenting with AppFunctions to prepare for the intelligence system, or looking to bring the power of Google’s AI within your own app, we’ve got you covered. Dive deeper into the code snippets, samples and comprehensive developer guides on the Android AI hub. For the full breakdown of what’s new, check out the official AI on Android at Google I/O 2026 playlist.

We are excited to see what you build! 


This entry was posted in Uncategorized on by .

Keep your sources up to date with automatic Drive syncing in NotebookLM

We’re making it easier to keep your sources and insights current in NotebookLM by enabling automatic syncing with Google Drive. Previously, if you uploaded a file in Google Docs, Sheets, or Slides, you’d have to manually update it in NotebookLM to see the changes. With this update, as the content in your Drive files evolves, the information within the notebook updates automatically to match. This update ensures that you're always working with the most accurate and up-to-date information without the manual effort of re-syncing files.
NotebookLM will also strictly respect file deletions and permissions. If a user’s access to a Drive file is revoked, they will no longer be able to use that file as a source in their notebook. The source will appear in the sources list with a link to the source for the user to request access. Additionally, if a file is deleted from Drive, it will be removed from the notebook as well, ensuring your research environment stays organized and secure.

Getting started

Rollout pace

Availability

  • Available to all Google Workspace customers and users with personal Google accounts with access to NotebookLM

Resources

This entry was posted in Uncategorized on by .

Improvements to Out-of-Domain file-level warnings

Today, we’re announcing improvements to our Out-of-Domain file-level warnings. First launched in April 2025, these badges alert users to documents and users outside of their Workspace organization, helping to prevent accidental data exfiltration and potential phishing attacks that spoof internal content. We’ve expanded support across devices and sharing types in the following ways:

  • Files in the Android and iOS apps for Drive, Docs, Sheets, and Slides now include external indicators
  • Chat Spaces and Google Groups can be configured to allow external users; if they’re given access to a document, that document now shows the external badge
  • If a service account has access to a document, and that service account is owned by an external Google Cloud organization, it now triggers the external badge in documents
  • Comment email notifications now include badges for external documents and users
  • File sharing email notifications now include badges for external documents and users

How Out-of-Domain warnings work

This feature helps users identify potentially risky files and avoid phishing scams when working with files shared from outside your organization.

Notification in comments

Notification in file sharing email

An image showing a Google Doc with the word "External" displayed in a small yellow badge next to the document title. The badge has been clicked, and a pop-up window appears with more information stating that “This document is owned by someone outside your organization. Be cautious about sharing sensitive information.
Image of "External" badge displayed in Google Docs

Getting started

Screenshot of the Google Workspace Admin console, navigated to Sharing settings. At the bottom of the page, a new section labeled "Highlight external files" is highlighted. The checkbox is checked, and the description reads: "Mark external files shared or owned externally as “external” to flag that content may be viewable outside your organization.
Image of the Google Workspace Admin console, Sharing settings, showing the "Highlight external files" option enabled

Rollout pace

Availability

  • Available to all Google Workspace customers

Resources

This entry was posted in Uncategorized on by .

Simplify decision-making with Polly, now available for Google Chat

Making decisions in a fast-paced environment often leads to long, messy threads and lost consensus. Polly helps teams solve this by enabling the creation of interactive polls within existing Chat conversations. By keeping the feedback loop inside the "flow of work," Polly helps eliminate the friction of switching between apps, leading to faster responses and clearer team alignment.

Effortless authoring and participation
Creating a poll is as simple as mentioning @Polly in any Google Chat space. Whether you need a quick pulse on a project direction or a simple vote on a meeting time, you can author a poll in seconds. For end users, participation is just as easy: team members can cast their votes with a single click directly within the chat stream.

Real-time results
Results are updated as votes come in, providing immediate visual feedback to the entire space. This transparency ensures that everyone is on the same page and can move forward with confidence as soon as a decision is reached.

Use cases for Polly in Google Chat:

  • Driving consensus: Rapidly narrow down options for project names, design directions, or strategy shifts. 
  • Meeting logistics: Quickly vote on the best time for a sync or gather topics for an upcoming agenda.
  • Team preferences: Streamline simple office or team logistics, from lunch orders to preferred collaboration hours.

Admins can easily enable the Polly integration to empower their teams with a more structured way to collaborate without leaving the Google Workspace ecosystem.

Getting started

  • Admins: Admins can install the Polly Chat app on their users’ behalf. Visit the Help Center to learn more about installing Marketplace apps for your organization. If you’ve already deployed Polly for Google Meet, then the Polly Chat app will automatically be available as well.
  • End users: End users can search for the Polly add-on in Google Chat under Apps > Find apps. Visit the Google Workspace Marketplace to learn more and install Polly. If you’ve already installed Polly for Google Meet, then the Polly Chat app will automatically be available as well.

Rollout pace

Availability

  • Available to all Google Workspace customers, Workspace Individual subscribers, and users with personal Google accounts

Resources

This entry was posted in Uncategorized on by .

Introducing a fresh visual identity for Google Workspace app icons

We’re updating icons across Google Workspace to introduce a modern visual design that gives every app a more distinct identity. Over the next several weeks, users will see new icons for Gmail, Calendar, Chat, Meet, Drive, Docs, Slides, Sheets, Vids, Keep, Forms, Voice, Sites, and Tasks.


These changes drive consistency and cohesion across our product suite, while ensuring each individual application remains modern and recognizable on your screen. These design updates do not alter any core functionality or administrative controls.

Getting started

  • Admins: There is no admin control for this update; changes will roll out automatically according to the schedule below. If you need to update internal documentation, visit the Help Center to find the new icon designs.
  • End users: There is no end user control for this update; changes will roll out automatically according to the schedule below.

Rollout pace

Impact

  • Impacts all Google Workspace users

Resources

This entry was posted in Uncategorized on by .

TestParameterInjector introduces an idiomatic Kotlin API

In March 2021, we announced the open source release of TestParameterInjector: a simple but powerful parameterized test runner for JUnit4. In September 2022, we followed up with JUnit5 support, bringing our framework to developers who had moved on to the Jupiter API.

We're excited to announce our biggest update yet for our Kotlin users: KotlinTestParameters.

The de facto standard for parameterized testing

When we first introduced TestParameterInjector, we shared a graph showing its rapid adoption within Google. Over the past few years, that trajectory has continued to a point where TestParameterInjector is the de facto parameterized test framework.

Graph of the different parameterized test frameworks in Google

Usage of all other alternative frameworks continues to steadily decline, while TestParameterInjector's adoption keeps growing rapidly. It has fundamentally lowered the barrier to writing data-driven unit tests, empowering Googlers and open source developers alike to maximize test coverage with minimal boilerplate. We believe its ubiquity internally is a strong testament to its reliability and utility for the broader developer communities.

The Kotlin challenge

As Kotlin's popularity has surged, developers have naturally been writing more of their TestParameterInjector tests in Kotlin. However, specifying explicit test values in Kotlin historically meant falling back to Java-centric paradigms.

If you wanted to provide specific values to a test, you typically had three options, none of which felt truly idiomatic in Kotlin:

  1. @TestParameter({"123", "456"}): This relies on string arrays, limiting you to a subset of types that the string parsing supports.
  2. @TestParameters: This allows for more complex sets of data, but relies on YAML strings (e.g.,"{age: 17, expectIsAdult: false}"). These strings however are not type-safe, and are completely ignored by IDE refactoring tools.
  3. Provider classes: For complex types that couldn't be easily represented in strings, you have to write Provider classes, adding a bit of boilerplate code and indirection.

Enter KotlinTestParameters

To bring a seamless experience to Kotlin, we are introducing a significant new Kotlin-only feature: KotlinTestParameters.

By leveraging Kotlin's default function arguments, you can now define parameterized tests in a fully type-safe, concise, and refactor-friendly way using the testValues() function (and friends).

Here is what it looks like in practice:

import com.google.testing.junit.testparameterinjector.TestParameterInjector
import com.google.testing.junit.testparameterinjector.TestParameter
import com.google.testing.junit.testparameterinjector.KotlinTestParameters.testValues
import com.google.testing.junit.testparameterinjector.KotlinTestParameters.namedTestValues
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(TestParameterInjector::class)
class MyTest {

  // Testing simple types directly
  @Test
  fun simpleTest(@TestParameter limit: Int = testValues(20, 100)) {
    // This test method is run twice: once for limit=20 and once for limit=100
  }

  // Testing complex types without YAML strings or Provider classes!
  data class TestCase(val age: Int, val expectIsAdult: Boolean)

  @Test
  fun complexTest(
    @TestParameter testCase: TestCase = namedTestValues(
      "teenager" to TestCase(age = 17, expectIsAdult = false),
      "young adult" to TestCase(age = 22, expectIsAdult = true)
    )
  ) {
    // This test method is run twice with fully typed data class instances
  }
}

Why we recommend making the switch

Because testValues() seamlessly integrates with Kotlin's language features, any type is supported. This completely eliminates the need for stringly-typed YAML maps or verbose Provider classes.

We firmly believe that KotlinTestParameters is a massive leap forward in readability and maintainability. Moving forward, this should be the default way of specifying test values for all new Kotlin tests, replacing the older @TestParameters, @TestParameter({"..."}), and Provider class patterns.

Try it out!

You can read more and start using KotlinTestParameters today over on our GitHub repository.

Let us know what you think on GitHub if you have any questions, comments, or feature requests!

This entry was posted in Uncategorized on by .

Long Term Support Channel Update for ChromeOS

A new LTS-144  version 144.0.7559.252 (Platform Version: 16503.84.0), is being rolled out for most ChromeOS devices. 

This version includes selected security fixes including:


495931147 High CVE-2026-5289: Use after free in Navigation.

497846428 High CVE-2026-6309: Use after free in Viz.

487117772 High CVE-2026-4449: Use after free in Blink.

488188166 High CVE-2026-4674: Out of bounds read in CSS.

497412658 High CVE-2026-6308: Out of bounds read in Media.

482828615 High CVE-2026-3916: Out of bounds read in Web Speech.

484751092 High CVE-2026-4442: Heap buffer overflow in CSS.

489619753 High CVE-2026-4458: Use after free in Extensions.

487768779 High CVE-2026-4451 Insufficient validation of untrusted input in Navigation.

492213293 Medium CVE-2026-5292: Out of bounds read in WebCodecs.

491655161 Medium CVE-2026-5282: Out of bounds read in WebCodecs.

Release notes for LTS-144 can be found here 

Want to know more about Long-term Support? Click here

Andy Wu

Google Chrome OS


This entry was posted in Uncategorized on by .