diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 25b6a03..03c9d71 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -106,12 +106,19 @@
       "androidapp/src/org/appspot/apprtc/util/AsyncHttpURLConnection.java",
     ]
 
+    javac_args = [
+      "-Xep:ParameterNotNullable:ERROR",
+      "-Xep:FieldMissingNullable:ERROR",
+      "-Xep:ReturnMissingNullable:ERROR",
+    ]
+
     deps = [
       ":AppRTCMobile_resources",
       "../rtc_base:base_java",
       "../sdk/android:libjingle_peerconnection_java",
       "../sdk/android:libjingle_peerconnection_metrics_default_java",
       "androidapp/third_party/autobanh:autobanh_java",
+      "//third_party/jsr-305:jsr_305_javalib",
     ]
   }
 
diff --git a/examples/androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java b/examples/androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java
index 5418ca0..aff198e 100644
--- a/examples/androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java
+++ b/examples/androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java
@@ -24,6 +24,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import javax.annotation.Nullable;
 import org.appspot.apprtc.util.AppRTCUtils;
 import org.webrtc.ThreadUtils;
 
@@ -57,8 +58,10 @@
   }
 
   private final Context apprtcContext;
+  @Nullable
   private AudioManager audioManager;
 
+  @Nullable
   private AudioManagerEvents audioManagerEvents;
   private AudioManagerState amState;
   private int savedAudioMode = AudioManager.MODE_INVALID;
@@ -90,6 +93,7 @@
   // relative to the view screen of a device and can therefore be used to
   // assist device switching (close to ear <=> use headset earpiece if
   // available, far from ear <=> use speaker phone).
+  @Nullable
   private AppRTCProximitySensor proximitySensor = null;
 
   // Handles all tasks related to Bluetooth headset devices.
@@ -103,6 +107,7 @@
   private BroadcastReceiver wiredHeadsetReceiver;
 
   // Callback method for changes in audio focus.
+  @Nullable
   private AudioManager.OnAudioFocusChangeListener audioFocusChangeListener;
 
   /**
diff --git a/examples/androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java b/examples/androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java
index 00e6b04..6720e92 100644
--- a/examples/androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java
+++ b/examples/androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java
@@ -24,6 +24,7 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Process;
+import javax.annotation.Nullable;
 import android.util.Log;
 import java.util.List;
 import java.util.Set;
@@ -64,14 +65,18 @@
 
   private final Context apprtcContext;
   private final AppRTCAudioManager apprtcAudioManager;
+  @Nullable
   private final AudioManager audioManager;
   private final Handler handler;
 
   int scoConnectionAttempts;
   private State bluetoothState;
   private final BluetoothProfile.ServiceListener bluetoothServiceListener;
+  @Nullable
   private BluetoothAdapter bluetoothAdapter;
+  @Nullable
   private BluetoothHeadset bluetoothHeadset;
+  @Nullable
   private BluetoothDevice bluetoothDevice;
   private final BroadcastReceiver bluetoothHeadsetReceiver;
 
@@ -390,6 +395,7 @@
   /**
    * Stubs for test mocks.
    */
+  @Nullable
   protected AudioManager getAudioManager(Context context) {
     return (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
   }
diff --git a/examples/androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java b/examples/androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java
index b63e8b8..ac03a80 100644
--- a/examples/androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java
+++ b/examples/androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java
@@ -16,6 +16,7 @@
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.os.Build;
+import javax.annotation.Nullable;
 import android.util.Log;
 import org.appspot.apprtc.util.AppRTCUtils;
 import org.webrtc.ThreadUtils;
@@ -39,6 +40,7 @@
 
   private final Runnable onSensorStateListener;
   private final SensorManager sensorManager;
+  @Nullable
   private Sensor proximitySensor = null;
   private boolean lastStateReportIsNear = false;
 
diff --git a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
index 3ff1230..4377d84 100644
--- a/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
+++ b/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
@@ -36,6 +36,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+import javax.annotation.Nullable;
 import org.appspot.apprtc.AppRTCAudioManager.AudioDevice;
 import org.appspot.apprtc.AppRTCAudioManager.AudioManagerEvents;
 import org.appspot.apprtc.AppRTCClient.RoomConnectionParameters;
@@ -168,18 +169,26 @@
 
   private final ProxyRenderer remoteProxyRenderer = new ProxyRenderer();
   private final ProxyVideoSink localProxyVideoSink = new ProxyVideoSink();
+  @Nullable
   private PeerConnectionClient peerConnectionClient = null;
+  @Nullable
   private AppRTCClient appRtcClient;
+  @Nullable
   private SignalingParameters signalingParameters;
+  @Nullable
   private AppRTCAudioManager audioManager = null;
+  @Nullable
   private SurfaceViewRenderer pipRenderer;
+  @Nullable
   private SurfaceViewRenderer fullscreenRenderer;
+  @Nullable
   private VideoFileRenderer videoFileRenderer;
   private final List<VideoRenderer.Callbacks> remoteRenderers = new ArrayList<>();
   private Toast logToast;
   private boolean commandLineRun;
   private boolean activityRunning;
   private RoomConnectionParameters roomConnectionParameters;
+  @Nullable
   private PeerConnectionParameters peerConnectionParameters;
   private boolean iceConnected;
   private boolean isError;
@@ -440,7 +449,7 @@
     return getIntent().getBooleanExtra(EXTRA_CAPTURETOTEXTURE_ENABLED, false);
   }
 
-  private VideoCapturer createCameraCapturer(CameraEnumerator enumerator) {
+  private @Nullable VideoCapturer createCameraCapturer(CameraEnumerator enumerator) {
     final String[] deviceNames = enumerator.getDeviceNames();
 
     // First, try to find front facing camera
@@ -473,7 +482,7 @@
   }
 
   @TargetApi(21)
-  private VideoCapturer createScreenCapturer() {
+  private @Nullable VideoCapturer createScreenCapturer() {
     if (mediaProjectionPermissionResultCode != Activity.RESULT_OK) {
       reportError("User didn't give permission to capture the screen.");
       return null;
@@ -710,7 +719,7 @@
     });
   }
 
-  private VideoCapturer createVideoCapturer() {
+  private @Nullable VideoCapturer createVideoCapturer() {
     final VideoCapturer videoCapturer;
     String videoFileAsCamera = getIntent().getStringExtra(EXTRA_VIDEO_FILE_AS_CAMERA);
     if (videoFileAsCamera != null) {
diff --git a/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java b/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
index e15abeb..8e2881c 100644
--- a/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
+++ b/examples/androidapp/src/org/appspot/apprtc/CpuMonitor.java
@@ -31,6 +31,7 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
 
 /**
  * Simple CPU monitor.  The caller creates a CpuMonitor object which can then
@@ -91,6 +92,7 @@
   // CPU frequency in percentage from maximum.
   private final MovingAverage frequencyScale;
 
+  @Nullable
   private ScheduledExecutorService executor;
   private long lastStatLogTimeMs;
   private long[] cpuFreqMax;
@@ -101,6 +103,7 @@
   private String[] maxPath;
   private String[] curPath;
   private double[] curFreqScales;
+  @Nullable
   private ProcStat lastProcStat;
 
   private static class ProcStat {
@@ -485,7 +488,7 @@
    * of /proc/stat.
    */
   @SuppressWarnings("StringSplitter")
-  private ProcStat readProcStat() {
+  private @Nullable ProcStat readProcStat() {
     long userTime = 0;
     long systemTime = 0;
     long idleTime = 0;
diff --git a/examples/androidapp/src/org/appspot/apprtc/DirectRTCClient.java b/examples/androidapp/src/org/appspot/apprtc/DirectRTCClient.java
index ae3a522..9762e79 100644
--- a/examples/androidapp/src/org/appspot/apprtc/DirectRTCClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/DirectRTCClient.java
@@ -10,6 +10,7 @@
 
 package org.appspot.apprtc;
 
+import javax.annotation.Nullable;
 import android.util.Log;
 
 import org.json.JSONArray;
@@ -53,6 +54,7 @@
 
   private final ExecutorService executor;
   private final SignalingEvents events;
+  @Nullable
   private TCPChannelClient tcpClient;
   private RoomConnectionParameters connectionParameters;
 
diff --git a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
index be6cae6..52cab67 100644
--- a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
@@ -34,6 +34,7 @@
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.annotation.Nullable;
 import org.appspot.apprtc.AppRTCClient.SignalingParameters;
 import org.appspot.apprtc.RecordedAudioToFileController;
 import org.webrtc.AudioSource;
@@ -121,10 +122,15 @@
 
   private final EglBase rootEglBase;
   private final Context appContext;
+  @Nullable
   private PeerConnectionFactory factory;
+  @Nullable
   private PeerConnection peerConnection;
+  @Nullable
   PeerConnectionFactory.Options options = null;
+  @Nullable
   private AudioSource audioSource;
+  @Nullable
   private VideoSource videoSource;
   private boolean videoCallEnabled;
   private boolean preferIsac;
@@ -132,7 +138,9 @@
   private boolean videoCapturerStopped;
   private boolean isError;
   private Timer statsTimer;
+  @Nullable
   private VideoSink localRender;
+  @Nullable
   private List<VideoRenderer.Callbacks> remoteRenders;
   private SignalingParameters signalingParameters;
   private int videoWidth;
@@ -144,26 +152,38 @@
   // Queued remote ICE candidates are consumed only after both local and
   // remote descriptions are set. Similarly local ICE candidates are sent to
   // remote peer after both local and remote description are set.
+  @Nullable
   private List<IceCandidate> queuedRemoteCandidates;
+  @Nullable
   private PeerConnectionEvents events;
   private boolean isInitiator;
+  @Nullable
   private SessionDescription localSdp; // either offer or answer SDP
+  @Nullable
   private MediaStream mediaStream;
+  @Nullable
   private VideoCapturer videoCapturer;
   // enableVideo is set to true if video should be rendered and sent.
   private boolean renderVideo;
+  @Nullable
   private VideoTrack localVideoTrack;
+  @Nullable
   private VideoTrack remoteVideoTrack;
+  @Nullable
   private RtpSender localVideoSender;
   // enableAudio is set to true if audio should be sent.
   private boolean enableAudio;
+  @Nullable
   private AudioTrack localAudioTrack;
+  @Nullable
   private DataChannel dataChannel;
   private boolean dataChannelEnabled;
   // Enable RtcEventLog.
+  @Nullable
   private RtcEventLog rtcEventLog;
   // Implements the WebRtcAudioRecordSamplesReadyCallback interface and writes
   // recorded audio samples to an output file.
+  @Nullable
   private RecordedAudioToFileController saveRecordedAudioToFile = null;
 
   /**
@@ -950,7 +970,7 @@
     });
   }
 
-  public void setVideoMaxBitrate(final Integer maxBitrateKbps) {
+  public void setVideoMaxBitrate(@Nullable final Integer maxBitrateKbps) {
     executor.execute(new Runnable() {
       @Override
       public void run() {
@@ -994,6 +1014,7 @@
     });
   }
 
+  @Nullable
   private AudioTrack createAudioTrack() {
     audioSource = factory.createAudioSource(audioConstraints);
     localAudioTrack = factory.createAudioTrack(AUDIO_TRACK_ID, audioSource);
@@ -1001,6 +1022,7 @@
     return localAudioTrack;
   }
 
+  @Nullable
   private VideoTrack createVideoTrack(VideoCapturer capturer) {
     videoSource = factory.createVideoSource(capturer);
     capturer.startCapture(videoWidth, videoHeight, videoFps);
@@ -1024,7 +1046,7 @@
   }
 
   // Returns the remote VideoTrack, assuming there is only one.
-  private VideoTrack getRemoteVideoTrack() {
+  private @Nullable VideoTrack getRemoteVideoTrack() {
     for (RtpTransceiver transceiver : peerConnection.getTransceivers()) {
       MediaStreamTrack track = transceiver.getReceiver().track();
       if (track instanceof VideoTrack) {
@@ -1125,7 +1147,8 @@
     return buffer.toString();
   }
 
-  private static String movePayloadTypesToFront(List<String> preferredPayloadTypes, String mLine) {
+  private static @Nullable String movePayloadTypesToFront(
+      List<String> preferredPayloadTypes, String mLine) {
     // The format of the media description line should be: m=<media> <port> <proto> <fmt> ...
     final List<String> origLineParts = Arrays.asList(mLine.split(" "));
     if (origLineParts.size() <= 3) {
diff --git a/examples/androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java b/examples/androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java
index 58c519f..62dde95 100644
--- a/examples/androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java
+++ b/examples/androidapp/src/org/appspot/apprtc/RecordedAudioToFileController.java
@@ -12,6 +12,7 @@
 
 import android.media.AudioFormat;
 import android.os.Environment;
+import javax.annotation.Nullable;
 import android.util.Log;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -33,6 +34,7 @@
 
   private final Object lock = new Object();
   private final ExecutorService executor;
+  @Nullable
   private OutputStream rawAudioFileOutputStream = null;
   private long fileSizeInBytes = 0;
 
diff --git a/examples/androidapp/src/org/appspot/apprtc/RtcEventLog.java b/examples/androidapp/src/org/appspot/apprtc/RtcEventLog.java
index e1cf8ce..bbbd06b 100644
--- a/examples/androidapp/src/org/appspot/apprtc/RtcEventLog.java
+++ b/examples/androidapp/src/org/appspot/apprtc/RtcEventLog.java
@@ -71,4 +71,4 @@
     state = RtcEventLogState.STOPPED;
     Log.d(TAG, "RtcEventLog stopped.");
   }
-}
\ No newline at end of file
+}
diff --git a/examples/androidapp/src/org/appspot/apprtc/TCPChannelClient.java b/examples/androidapp/src/org/appspot/apprtc/TCPChannelClient.java
index 39f41f8..e9fd7be 100644
--- a/examples/androidapp/src/org/appspot/apprtc/TCPChannelClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/TCPChannelClient.java
@@ -10,6 +10,7 @@
 
 package org.appspot.apprtc;
 
+import javax.annotation.Nullable;
 import android.util.Log;
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -123,7 +124,9 @@
   private abstract class TCPSocket extends Thread {
     // Lock for editing out and rawSocket
     protected final Object rawSocketLock;
+    @Nullable
     private PrintWriter out;
+    @Nullable
     private Socket rawSocket;
 
     /**
@@ -131,6 +134,7 @@
      *
      * @return Socket connection, null if connection failed.
      */
+    @Nullable
     public abstract Socket connect();
 
     /** Returns true if sockets is a server rawSocket. */
@@ -263,6 +267,7 @@
 
   private class TCPSocketServer extends TCPSocket {
     // Server socket is also guarded by rawSocketLock.
+    @Nullable
     private ServerSocket serverSocket;
 
     final private InetAddress address;
@@ -274,6 +279,7 @@
     }
 
     /** Opens a listening socket and waits for a connection. */
+    @Nullable
     @Override
     public Socket connect() {
       Log.d(TAG, "Listening on [" + address.getHostAddress() + "]:" + Integer.toString(port));
@@ -335,6 +341,7 @@
     }
 
     /** Connects to the peer. */
+    @Nullable
     @Override
     public Socket connect() {
       Log.d(TAG, "Connecting to [" + address.getHostAddress() + "]:" + Integer.toString(port));
diff --git a/examples/androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java b/examples/androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java
index d3e5c87..07b7847 100644
--- a/examples/androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java
@@ -11,6 +11,7 @@
 package org.appspot.apprtc;
 
 import android.os.Handler;
+import javax.annotation.Nullable;
 import android.util.Log;
 import de.tavendo.autobahn.WebSocket.WebSocketConnectionObserver;
 import de.tavendo.autobahn.WebSocketConnection;
@@ -39,7 +40,9 @@
   private WebSocketConnection ws;
   private String wsServerUrl;
   private String postServerUrl;
+  @Nullable
   private String roomID;
+  @Nullable
   private String clientID;
   private WebSocketConnectionState state;
   // Do not remove this member variable. If this is removed, the observer gets garbage collected and
diff --git a/examples/androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java b/examples/androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java
index 3215051..dbe34be 100644
--- a/examples/androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java
@@ -10,6 +10,7 @@
 
 package org.appspot.apprtc;
 
+import javax.annotation.Nullable;
 import org.appspot.apprtc.RoomParametersFetcher.RoomParametersFetcherEvents;
 import org.appspot.apprtc.WebSocketChannelClient.WebSocketChannelEvents;
 import org.appspot.apprtc.WebSocketChannelClient.WebSocketConnectionState;
@@ -380,7 +381,7 @@
 
   // Send SDP or ICE candidate to a room server.
   private void sendPostMessage(
-      final MessageType messageType, final String url, final String message) {
+      final MessageType messageType, final String url, @Nullable final String message) {
     String logInfo = url;
     if (message != null) {
       logInfo += ". Message: " + message;
