Develop

Create a new app

Updated: May 29, 2026

Sample app

The Portal sample app is a minimal Android project preconfigured for Portal hardware: correct minSdkVersion, screen-size handling for Portal’s tabletop and TV form factors, microphone and camera permission scaffolding, and example use of the smart camera and far-field mic array. The repo includes an agents.md file that AI coding tools read automatically to understand how to work with the sample.
Portal sample app

Build your own app

  1. Open the GitHub sample
  2. Build it into an apk file
    # Build the debug APK
    ./gradlew assembleDebug
    
  3. Install the build on your Portal via adb to confirm your setup works
    # Install it directly onto your connected device
    adb install app/build/outputs/apk/debug/app-debug.apk
    
  4. On your Portal, click the icon for the newly installed app
  5. Open the sample in your preferred AI coding tool
  6. Describe to the AI coding tool what to change (for example, “turn this Portal sample into a chore tracker for my household”)
  7. Build and install again (steps 2 and 3)

GMS and dependency limits

Portal devices run on an older version of AOSP. Apps that target newer SDK versions may not install or behave as expected. Set minSdkVersion to 28 (Android 9) and targetSdkVersion to 29 (Android 10) to maximize compatibility.
Portal devices do not include Google Mobile Services (GMS). Apps that depend on GMS APIs (Maps, Sign-In, Push, In-App Billing, Firebase, and so on) will not function. Look for non-GMS alternatives or implement directly against the underlying APIs.

Android Manifest requirements

In order for your app to appear on the Portal home screen, you must add the following intent filters to your manifest file.
For Portal (touch devices):
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
For Portal TV:
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Accessing device features

FeatureMitigation
Camera, Microphone, Speaker
Regular Android permissions
Bluetooth
Regular Android permission
Network interface (for example, to search for home automation devices)
Regular Android permission
Touch input and keyboard
Regular Android permission
Storage write
Regular Android permission
Storage delete
Delete via adb shell rm.
Alternative: install a file manager app and delete via the device.
Access to device contacts
Not possible
Access to device credentials (for example, Facebook)
Not possible