diff --git a/moonlight-common/.gitignore b/moonlight-common/.gitignore
index ec995b00..796b96d1 100644
--- a/moonlight-common/.gitignore
+++ b/moonlight-common/.gitignore
@@ -1,2 +1 @@
-*.class
-/bin
+/build
diff --git a/moonlight-common/build.gradle b/moonlight-common/build.gradle
new file mode 100644
index 00000000..dd9dc999
--- /dev/null
+++ b/moonlight-common/build.gradle
@@ -0,0 +1,23 @@
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion 25
+ buildToolsVersion "25.0.2"
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 25
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt')
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+}
diff --git a/moonlight-common/src/main/AndroidManifest.xml b/moonlight-common/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..89ad361d
--- /dev/null
+++ b/moonlight-common/src/main/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/moonlight-common/src/com/limelight/LimeLog.java b/moonlight-common/src/main/java/com/limelight/LimeLog.java
similarity index 100%
rename from moonlight-common/src/com/limelight/LimeLog.java
rename to moonlight-common/src/main/java/com/limelight/LimeLog.java
diff --git a/moonlight-common/src/com/limelight/nvstream/ConnectionContext.java b/moonlight-common/src/main/java/com/limelight/nvstream/ConnectionContext.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/ConnectionContext.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/ConnectionContext.java
diff --git a/moonlight-common/src/com/limelight/nvstream/NvConnection.java b/moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/NvConnection.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java
diff --git a/moonlight-common/src/com/limelight/nvstream/NvConnectionListener.java b/moonlight-common/src/main/java/com/limelight/nvstream/NvConnectionListener.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/NvConnectionListener.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/NvConnectionListener.java
diff --git a/moonlight-common/src/com/limelight/nvstream/StreamConfiguration.java b/moonlight-common/src/main/java/com/limelight/nvstream/StreamConfiguration.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/StreamConfiguration.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/StreamConfiguration.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/ByteBufferDescriptor.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/ByteBufferDescriptor.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/ByteBufferDescriptor.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/ByteBufferDescriptor.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/ConnectionStatusListener.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/ConnectionStatusListener.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/ConnectionStatusListener.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/ConnectionStatusListener.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/DecodeUnit.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/DecodeUnit.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/DecodeUnit.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/DecodeUnit.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/RtpPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/RtpPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/RtpPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/RtpPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/RtpPacketFields.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/RtpPacketFields.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/RtpPacketFields.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/RtpPacketFields.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/RtpReorderQueue.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/RtpReorderQueue.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/RtpReorderQueue.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/RtpReorderQueue.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/SequenceHelper.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/SequenceHelper.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/SequenceHelper.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/SequenceHelper.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/audio/AudioDepacketizer.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioDepacketizer.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/audio/AudioDepacketizer.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioDepacketizer.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/audio/AudioRenderer.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioRenderer.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/audio/AudioRenderer.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioRenderer.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/audio/AudioStream.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioStream.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/audio/AudioStream.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/audio/AudioStream.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/audio/OpusDecoder.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/audio/OpusDecoder.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/audio/OpusDecoder.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/audio/OpusDecoder.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/buffer/AbstractPopulatedBufferList.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/AbstractPopulatedBufferList.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/buffer/AbstractPopulatedBufferList.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/AbstractPopulatedBufferList.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/buffer/AtomicPopulatedBufferList.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/AtomicPopulatedBufferList.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/buffer/AtomicPopulatedBufferList.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/AtomicPopulatedBufferList.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/buffer/UnsynchronizedPopulatedBufferList.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/UnsynchronizedPopulatedBufferList.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/buffer/UnsynchronizedPopulatedBufferList.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/buffer/UnsynchronizedPopulatedBufferList.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/video/VideoDecoderRenderer.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoDecoderRenderer.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/video/VideoDecoderRenderer.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoDecoderRenderer.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/video/VideoDepacketizer.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoDepacketizer.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/video/VideoDepacketizer.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoDepacketizer.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/video/VideoPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/video/VideoPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/av/video/VideoStream.java b/moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoStream.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/av/video/VideoStream.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/av/video/VideoStream.java
diff --git a/moonlight-common/src/com/limelight/nvstream/control/ControlStream.java b/moonlight-common/src/main/java/com/limelight/nvstream/control/ControlStream.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/control/ControlStream.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/control/ControlStream.java
diff --git a/moonlight-common/src/com/limelight/nvstream/control/InputPacketSender.java b/moonlight-common/src/main/java/com/limelight/nvstream/control/InputPacketSender.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/control/InputPacketSender.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/control/InputPacketSender.java
diff --git a/moonlight-common/src/com/limelight/nvstream/enet/EnetConnection.java b/moonlight-common/src/main/java/com/limelight/nvstream/enet/EnetConnection.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/enet/EnetConnection.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/enet/EnetConnection.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/ComputerDetails.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/ComputerDetails.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/ComputerDetails.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/ComputerDetails.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/GfeHttpResponseException.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/GfeHttpResponseException.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/GfeHttpResponseException.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/GfeHttpResponseException.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/LimelightCryptoProvider.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/LimelightCryptoProvider.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/LimelightCryptoProvider.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/LimelightCryptoProvider.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/NvApp.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/NvApp.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/NvApp.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/NvApp.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/NvHTTP.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/NvHTTP.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/NvHTTP.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/NvHTTP.java
diff --git a/moonlight-common/src/com/limelight/nvstream/http/PairingManager.java b/moonlight-common/src/main/java/com/limelight/nvstream/http/PairingManager.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/http/PairingManager.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/http/PairingManager.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/ControllerBatchingBlock.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerBatchingBlock.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/ControllerBatchingBlock.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerBatchingBlock.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/ControllerPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/ControllerPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/ControllerStream.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerStream.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/ControllerStream.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/ControllerStream.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/InputPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/InputPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/InputPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/InputPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/KeyboardPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/KeyboardPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/KeyboardPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/KeyboardPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/KeycodeTranslator.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/KeycodeTranslator.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/KeycodeTranslator.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/KeycodeTranslator.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/MouseButtonPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/MouseButtonPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/MouseButtonPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/MouseButtonPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/MouseMovePacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/MouseMovePacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/MouseMovePacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/MouseMovePacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/MouseScrollPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/MouseScrollPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/MouseScrollPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/MouseScrollPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/input/MultiControllerPacket.java b/moonlight-common/src/main/java/com/limelight/nvstream/input/MultiControllerPacket.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/input/MultiControllerPacket.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/input/MultiControllerPacket.java
diff --git a/moonlight-common/src/com/limelight/nvstream/mdns/MdnsComputer.java b/moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsComputer.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/mdns/MdnsComputer.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsComputer.java
diff --git a/moonlight-common/src/com/limelight/nvstream/mdns/MdnsDiscoveryAgent.java b/moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsDiscoveryAgent.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/mdns/MdnsDiscoveryAgent.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsDiscoveryAgent.java
diff --git a/moonlight-common/src/com/limelight/nvstream/mdns/MdnsDiscoveryListener.java b/moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsDiscoveryListener.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/mdns/MdnsDiscoveryListener.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/mdns/MdnsDiscoveryListener.java
diff --git a/moonlight-common/src/com/limelight/nvstream/rtsp/RtspConnection.java b/moonlight-common/src/main/java/com/limelight/nvstream/rtsp/RtspConnection.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/rtsp/RtspConnection.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/rtsp/RtspConnection.java
diff --git a/moonlight-common/src/com/limelight/nvstream/rtsp/SdpGenerator.java b/moonlight-common/src/main/java/com/limelight/nvstream/rtsp/SdpGenerator.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/rtsp/SdpGenerator.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/rtsp/SdpGenerator.java
diff --git a/moonlight-common/src/com/limelight/nvstream/wol/WakeOnLanSender.java b/moonlight-common/src/main/java/com/limelight/nvstream/wol/WakeOnLanSender.java
similarity index 100%
rename from moonlight-common/src/com/limelight/nvstream/wol/WakeOnLanSender.java
rename to moonlight-common/src/main/java/com/limelight/nvstream/wol/WakeOnLanSender.java
diff --git a/moonlight-common/src/com/limelight/utils/TimeHelper.java b/moonlight-common/src/main/java/com/limelight/utils/TimeHelper.java
similarity index 100%
rename from moonlight-common/src/com/limelight/utils/TimeHelper.java
rename to moonlight-common/src/main/java/com/limelight/utils/TimeHelper.java
diff --git a/moonlight-common/src/com/limelight/utils/Vector2d.java b/moonlight-common/src/main/java/com/limelight/utils/Vector2d.java
similarity index 100%
rename from moonlight-common/src/com/limelight/utils/Vector2d.java
rename to moonlight-common/src/main/java/com/limelight/utils/Vector2d.java
diff --git a/moonlight-common/src/main/res/values/strings.xml b/moonlight-common/src/main/res/values/strings.xml
new file mode 100644
index 00000000..d759ad1a
--- /dev/null
+++ b/moonlight-common/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ moonlight-common
+