aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Dart <keith.dart@gmail.com>2017-10-05 12:14:42 -0700
committerAng Li <angli@google.com>2017-10-05 12:14:42 -0700
commit1bcd42813b8b60ac030d036bda2bffeeff87cf49 (patch)
tree30caaa188ab30bd729f97e45f3a53579c03fab98
parent953365323e977ebc0c459c6efde4bfc5a327356b (diff)
downloadmobly-bundled-snippets-1bcd42813b8b60ac030d036bda2bffeeff87cf49.tar.gz
Fix version warnings for gradle builds (#87)
* Add a `presubmit` target to run formatter and lint. * Add dev process to README * Gradle config improvements * Changes made by linter
-rw-r--r--README.md24
-rw-r--r--build.gradle46
-rw-r--r--gradle/wrapper/gradle-wrapper.properties4
-rw-r--r--src/main/AndroidManifest.xml4
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/AccountSnippet.java2
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/FileSnippet.java13
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/NetworkingSnippet.java57
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java8
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java12
9 files changed, 122 insertions, 48 deletions
diff --git a/README.md b/README.md
index ec618d0..ee0c4f2 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,30 @@ Note: this is not an official Google product.
self.ad.api.wifiEnable()
```
+## Develop
+
+If you want to contribute, use the usual github method of forking and sending
+a pull request.
+
+Before sending a pull request, run the `presubmit` target to format and run
+lint over the code. Fix any issues it indicates. When complete, send the pull
+request.
+
+```shell
+./gradlew presubmit
+```
+
+This target will reformat the code with
+[googleJavaFormat](https://github.com/sherter/google-java-format-gradle-plugin)
+and run lint. The lint report should open in your default browser.
+
+Be sure to address *all* off the errors reported by lint. When finished and you
+run `presubmit` one last time you should see:
+
+> No Issues Found
+> Congratulations!
+
+in your browser.
## Other resources
diff --git a/build.gradle b/build.gradle
index 5283f0e..36895c8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,10 +1,11 @@
+// For android studio 2.3 and plugin 2.3.3
+
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
- classpath 'me.tatarka:gradle-retrolambda:3.5.0'
// NOTE: Do not place your application dependencies here.
}
@@ -19,7 +20,6 @@ repositories {
}
apply plugin: 'com.android.application'
-apply plugin: 'me.tatarka.retrolambda'
allprojects {
gradle.projectsEvaluated {
@@ -31,26 +31,30 @@ allprojects {
android {
compileSdkVersion 24
- buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.google.android.mobly.snippet.bundled"
- minSdkVersion 11
+ minSdkVersion 15
// Set target to 22 to avoid having to deal with runtime permissions.
targetSdkVersion 22
versionCode 1
versionName "0.0.1"
setProperty("archivesBaseName", "mobly-bundled-snippets")
+ jackOptions {
+ enabled true
+ }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
- abortOnError true
+ abortOnError false
checkAllWarnings true
warningsAsErrors true
+ disable 'HardwareIds','MissingApplicationIcon','GoogleAppIndexingWarning','InvalidPackage','OldTargetApi'
}
+ buildToolsVersion '26.0.2'
}
// Produces a jar of source files. Needed for compliance reasons.
@@ -72,13 +76,39 @@ artifacts {
dependencies {
compile 'com.android.support.test:runner:0.5'
compile 'com.google.android.mobly:mobly-snippet-lib:1.2.0'
- compile 'com.google.code.gson:gson:2.6.2'
- compile 'com.google.guava:guava:20.0'
+ compile 'com.google.code.gson:gson:2.8.2'
+ compile 'com.google.guava:guava:23.1-android'
+ compile 'com.google.errorprone:error_prone_annotations:2.1.1'
- testCompile 'com.google.truth:truth:0.32'
+ testCompile 'com.google.errorprone:error_prone_annotations:2.1.1'
+ testCompile 'com.google.guava:guava:23.1-android'
+ testCompile 'com.google.truth:truth:0.36'
testCompile 'junit:junit:4.12'
}
googleJavaFormat {
options style: 'AOSP'
}
+
+// Open lint's HTML report in your default browser or viewer.
+task openLintReport(type: Exec) {
+ def lint_report = "build/reports/lint-results.html"
+ def cmd = "cat"
+ def platform = System.getProperty('os.name').toLowerCase(Locale.ROOT)
+ if (platform.contains("linux")) {
+ cmd = "xdg-open"
+ } else if (platform.contains("mac os x")) {
+ cmd = "open"
+ } else if (platform.contains("windows")) {
+ cmd = "launch"
+ }
+ commandLine cmd, lint_report
+}
+
+task presubmit {
+ dependsOn { ['googleJavaFormat', 'lint', 'openLintReport'] }
+ doLast {
+ println "Fix any lint issues you see. When it looks good, submit the pull request."
+ }
+}
+
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index cbd6b39..06228b6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Thu Apr 20 15:07:39 PDT 2017
+#Wed Oct 04 16:01:04 PDT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index dc5d0af..0a0dad3 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.mobly.snippet.bundled">
+ <uses-feature android:name="android.hardware.telephony" android:required="false" />
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
@@ -25,7 +27,7 @@
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.SEND_SMS" />
- <application>
+ <application android:allowBackup="false">
<meta-data
android:name="mobly-snippets"
android:value="com.google.android.mobly.snippet.bundled.AccountSnippet,
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/AccountSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/AccountSnippet.java
index 627d1b4..f8499b4 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/AccountSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/AccountSnippet.java
@@ -34,6 +34,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
@@ -112,6 +113,7 @@ public class AccountSnippet implements Snippet {
if (result.containsKey(AccountManager.KEY_ERROR_CODE)) {
throw new AccountSnippetException(
String.format(
+ Locale.US,
"Failed to add account due to code %d: %s",
result.getInt(AccountManager.KEY_ERROR_CODE),
result.getString(AccountManager.KEY_ERROR_MESSAGE)));
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/FileSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/FileSnippet.java
index 571d57f..f6b6918 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/FileSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/FileSnippet.java
@@ -16,10 +16,6 @@
package com.google.android.mobly.snippet.bundled;
-import java.io.IOException;
-import java.security.MessageDigest;
-import java.security.DigestInputStream;
-import java.security.NoSuchAlgorithmException;
import android.content.Context;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
@@ -27,6 +23,10 @@ import android.support.test.InstrumentationRegistry;
import com.google.android.mobly.snippet.Snippet;
import com.google.android.mobly.snippet.bundled.utils.Utils;
import com.google.android.mobly.snippet.rpc.Rpc;
+import java.io.IOException;
+import java.security.DigestInputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
/** Snippet class for File and abstract storage URI operation RPCs. */
public class FileSnippet implements Snippet {
@@ -47,13 +47,14 @@ public class FileSnippet implements Snippet {
}
@Rpc(description = "Compute MD5 hash on a content URI. Return the MD5 has has a hex string.")
- public String fileMd5Hash(String uri) throws IOException, NoSuchAlgorithmException {
+ public String fileMd5Hash(String uri) throws IOException, NoSuchAlgorithmException {
Uri uri_ = Uri.parse(uri);
ParcelFileDescriptor pfd = mContext.getContentResolver().openFileDescriptor(uri_, "r");
MessageDigest md = MessageDigest.getInstance("MD5");
int length = (int) pfd.getStatSize();
byte[] buf = new byte[length];
- ParcelFileDescriptor.AutoCloseInputStream stream = new ParcelFileDescriptor.AutoCloseInputStream(pfd);
+ ParcelFileDescriptor.AutoCloseInputStream stream =
+ new ParcelFileDescriptor.AutoCloseInputStream(pfd);
DigestInputStream dis = new DigestInputStream(stream, md);
try {
dis.read(buf, 0, length);
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/NetworkingSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/NetworkingSnippet.java
index f175fdd..e89fc12 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/NetworkingSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/NetworkingSnippet.java
@@ -16,24 +16,24 @@
package com.google.android.mobly.snippet.bundled;
-import java.util.List;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.io.IOException;
-import java.net.UnknownHostException;
-import android.content.Intent;
+import android.app.DownloadManager;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
import android.content.IntentFilter;
-import android.content.BroadcastReceiver;
import android.net.Uri;
import android.os.Environment;
-import android.os.ParcelFileDescriptor;
-import android.app.DownloadManager;
import android.support.test.InstrumentationRegistry;
import com.google.android.mobly.snippet.Snippet;
import com.google.android.mobly.snippet.bundled.utils.Utils;
import com.google.android.mobly.snippet.rpc.Rpc;
import com.google.android.mobly.snippet.util.Log;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.List;
+import java.util.Locale;
/** Snippet class for networking RPCs. */
public class NetworkingSnippet implements Snippet {
@@ -77,18 +77,23 @@ public class NetworkingSnippet implements Snippet {
return true;
}
- @Rpc(description = "Download a file using HTTP. Return content Uri (file remains on device). "
- + "The Uri should be treated as an opaque handle for further operations.")
- public String networkHttpDownload(String url) throws IllegalArgumentException, NetworkingSnippetException {
+ @Rpc(
+ description =
+ "Download a file using HTTP. Return content Uri (file remains on device). "
+ + "The Uri should be treated as an opaque handle for further operations."
+ )
+ public String networkHttpDownload(String url)
+ throws IllegalArgumentException, NetworkingSnippetException {
Uri uri = Uri.parse(url);
List<String> pathsegments = uri.getPathSegments();
if (pathsegments.size() < 1) {
- throw new IllegalArgumentException(String.format("The Uri %s does not have a path.", uri.toString()));
+ throw new IllegalArgumentException(
+ String.format(Locale.US, "The Uri %s does not have a path.", uri.toString()));
}
DownloadManager.Request request = new DownloadManager.Request(uri);
- request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
- pathsegments.get(pathsegments.size() - 1));
+ request.setDestinationInExternalPublicDir(
+ Environment.DIRECTORY_DOWNLOADS, pathsegments.get(pathsegments.size() - 1));
mIsDownloadComplete = false;
mReqid = 0;
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
@@ -96,9 +101,16 @@ public class NetworkingSnippet implements Snippet {
mContext.registerReceiver(receiver, filter);
try {
mReqid = mDownloadManager.enqueue(request);
- Log.d(String.format("networkHttpDownload download of %s with id %d", url, mReqid));
+ Log.d(
+ String.format(
+ Locale.US,
+ "networkHttpDownload download of %s with id %d",
+ url,
+ mReqid));
if (!Utils.waitUntil(() -> mIsDownloadComplete, 30)) {
- Log.d(String.format("networkHttpDownload timed out waiting for completion"));
+ Log.d(
+ String.format(
+ Locale.US, "networkHttpDownload timed out waiting for completion"));
throw new NetworkingSnippetException("networkHttpDownload timed out.");
}
} finally {
@@ -106,11 +118,15 @@ public class NetworkingSnippet implements Snippet {
}
Uri resp = mDownloadManager.getUriForDownloadedFile(mReqid);
if (resp != null) {
- Log.d(String.format("networkHttpDownload completed to %s", resp.toString()));
+ Log.d(String.format(Locale.US, "networkHttpDownload completed to %s", resp.toString()));
mReqid = 0;
return resp.toString();
} else {
- Log.d(String.format("networkHttpDownload Failed to download %s", uri.toString()));
+ Log.d(
+ String.format(
+ Locale.US,
+ "networkHttpDownload Failed to download %s",
+ uri.toString()));
throw new NetworkingSnippetException("networkHttpDownload didn't get downloaded file.");
}
}
@@ -121,8 +137,7 @@ public class NetworkingSnippet implements Snippet {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
long gotid = (long) intent.getExtras().get("extra_download_id");
- if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)
- && gotid == mReqid) {
+ if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action) && gotid == mReqid) {
mIsDownloadComplete = true;
}
}
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
index 6614904..83a42f6 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java
@@ -57,7 +57,9 @@ public class WifiManagerSnippet implements Snippet {
public WifiManagerSnippet() {
mContext = InstrumentationRegistry.getContext();
- mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ mWifiManager =
+ (WifiManager)
+ mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
}
@Rpc(
@@ -196,8 +198,8 @@ public class WifiManagerSnippet implements Snippet {
String SSID = wifiConfig.SSID;
// Return directly if network is already connected.
WifiInfo connectionInfo = mWifiManager.getConnectionInfo();
- if (connectionInfo.getNetworkId() != -1 && connectionInfo.getSSID().equals(wifiConfig.SSID))
- {
+ if (connectionInfo.getNetworkId() != -1
+ && connectionInfo.getSSID().equals(wifiConfig.SSID)) {
Log.d("Network " + connectionInfo.getSSID() + " is already connected.");
return;
}
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java b/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
index e4c0dbd..376bcb5 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/utils/Utils.java
@@ -30,7 +30,7 @@ import java.util.concurrent.TimeoutException;
public final class Utils {
- private final static char[] hexArray = "0123456789abcdef".toCharArray();
+ private static final char[] hexArray = "0123456789abcdef".toCharArray();
private Utils() {}
@@ -194,22 +194,20 @@ public final class Utils {
}
/**
- * Convert a byte array (binary data) to a hexadecimal string (ASCII)
- * representation.
-
- * [\x01\x02] -&gt; "0102"
+ * Convert a byte array (binary data) to a hexadecimal string (ASCII) representation.
+ *
+ * <p>[\x01\x02] -&gt; "0102"
*
* @param bytes The array of byte to convert.
* @return a String with the ASCII hex representation.
*/
public static String bytesToHexString(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
- for ( int j = 0; j < bytes.length; j++ ) {
+ for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
-
}