From 4782263f0cbd78bff12546ffee86e7f63dddf5a9 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Fri, 21 Jul 2023 07:29:13 +0900 Subject: [PATCH 1/9] use LinkedList instead of ConcurrentLinkedDeque for performance --- .../java/se/vidstige/jadb/SyncTransport.java | 20 ++++++++++++------- src/test/resources/logging.properties | 1 + 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/se/vidstige/jadb/SyncTransport.java b/src/main/java/se/vidstige/jadb/SyncTransport.java index 7fd22f1..f63937a 100644 --- a/src/main/java/se/vidstige/jadb/SyncTransport.java +++ b/src/main/java/se/vidstige/jadb/SyncTransport.java @@ -3,7 +3,8 @@ import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Deque; -import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.LinkedList; +import java.util.logging.Logger; /** @@ -11,6 +12,8 @@ */ public class SyncTransport { + private static final Logger logger = Logger.getLogger(SyncTransport.class.getName()); + private final DataOutput output; private final DataInput input; @@ -148,21 +151,22 @@ private int readChunk(Deque deque) throws IOException, JadbException { for (int i = 0; i < n; i++) { deque.offer(buffer[i]); } +logger.finest("readChunk: " + n + "/" + deque.size()); return n; } public InputStream readChunks(Runnable onClose) { return new InputStream() { - Deque deque = new ConcurrentLinkedDeque<>(); + Deque deque = new LinkedList<>(); boolean eof; void readInternal() throws IOException { try { - if (!eof) { - int n = readChunk(deque); - if (n == -1) { - eof = true; - } + if (!eof) { + int n = readChunk(deque); + if (n == -1) { + eof = true; } + } } catch (JadbException e) { throw new IOException(e); } @@ -180,6 +184,7 @@ public int read(byte[] b, int off, int len) throws IOException { } b[off + i] = deque.poll(); } +logger.finest("read: " + i + "/" + deque.size()); return i; } @@ -192,6 +197,7 @@ public int read() throws IOException { if (deque.peek() == null) { return -1; } +logger.finest("read: 1/" + deque.size()); return deque.poll(); } diff --git a/src/test/resources/logging.properties b/src/test/resources/logging.properties index 1ae3610..dc008cb 100644 --- a/src/test/resources/logging.properties +++ b/src/test/resources/logging.properties @@ -5,3 +5,4 @@ java.util.logging.ConsoleHandler.formatter=vavi.util.logging.VaviFormatter #java.util.logging.ConsoleHandler.formatter=vavi.util.logging.BetterFormatter #vavi.util.level=FINE +se.vidstige.jadb.level=FINER From a4552554f4ceff97c1809295d448b21ad25e3272 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Fri, 21 Jul 2023 07:33:06 +0900 Subject: [PATCH 2/9] make it more nio filesystem friendly --- src/main/java/se/vidstige/jadb/JadbDevice.java | 8 +++++++- src/main/java/se/vidstige/jadb/RemoteFile.java | 5 ++++- src/main/java/se/vidstige/jadb/SyncTransport.java | 2 +- .../jadb/test/integration/RealDeviceTestCases.java | 4 ++-- .../java/se/vidstige/jadb/test/unit/MockedTestCases.java | 4 ++-- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/se/vidstige/jadb/JadbDevice.java b/src/main/java/se/vidstige/jadb/JadbDevice.java index fe406bc..8b48727 100644 --- a/src/main/java/se/vidstige/jadb/JadbDevice.java +++ b/src/main/java/se/vidstige/jadb/JadbDevice.java @@ -6,8 +6,13 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; + public class JadbDevice { + + private static final Logger logger = Logger.getLogger(JadbDevice.class.getName()); + @SuppressWarnings("squid:S00115") public enum State { Unknown, @@ -192,7 +197,7 @@ public List list(String remotePath) throws IOException { sync.send("LIST", remotePath); List result = new ArrayList<>(); - for (RemoteFileRecord dent = sync.readDirectoryEntry(); dent != RemoteFileRecord.DONE; dent = sync.readDirectoryEntry()) { + for (RemoteFileRecord dent = sync.readDirectoryEntry(remotePath); dent != RemoteFileRecord.DONE; dent = sync.readDirectoryEntry(remotePath)) { result.add(dent); } return result; @@ -252,6 +257,7 @@ public void pull(RemoteFile remote, File local) throws IOException { public InputStream pull(RemoteFile remote) throws IOException { Transport transport = getTransport(); SyncTransport sync = transport.startSync(); +logger.finer("pull: " + remote.getPath()); sync.send("RECV", remote.getPath()); return sync.readChunks(() -> { diff --git a/src/main/java/se/vidstige/jadb/RemoteFile.java b/src/main/java/se/vidstige/jadb/RemoteFile.java index a7a58a8..4ba70c5 100644 --- a/src/main/java/se/vidstige/jadb/RemoteFile.java +++ b/src/main/java/se/vidstige/jadb/RemoteFile.java @@ -12,7 +12,10 @@ public class RemoteFile { public RemoteFile(String path) { this.path = path; } - public String getName() { throw new UnsupportedOperationException(); } + public String getName() { + return path.substring(path.lastIndexOf('/') + 1); + } + public int getSize() { throw new UnsupportedOperationException(); } public int getLastModified() { throw new UnsupportedOperationException(); } public boolean isDirectory() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/se/vidstige/jadb/SyncTransport.java b/src/main/java/se/vidstige/jadb/SyncTransport.java index f63937a..88869a9 100644 --- a/src/main/java/se/vidstige/jadb/SyncTransport.java +++ b/src/main/java/se/vidstige/jadb/SyncTransport.java @@ -81,7 +81,7 @@ public RemoteFileRecord readDirectoryEntry() throws IOException { String name = readString(nameLength); if (!"DENT".equals(id)) return RemoteFileRecord.DONE; - return new RemoteFileRecord(name, mode, size, time); + return new RemoteFileRecord(path + (path.length() > 0 && path.charAt(path.length() - 1) == '/' ? "" : "/") + name, mode, size, time); } private void sendChunk(byte[] buffer, int offset, int length) throws IOException { diff --git a/src/test/java/se/vidstige/jadb/test/integration/RealDeviceTestCases.java b/src/test/java/se/vidstige/jadb/test/integration/RealDeviceTestCases.java index 59aa248..e93b0b5 100644 --- a/src/test/java/se/vidstige/jadb/test/integration/RealDeviceTestCases.java +++ b/src/test/java/se/vidstige/jadb/test/integration/RealDeviceTestCases.java @@ -80,11 +80,11 @@ public void testGetDevices() throws Exception { public void testListFilesTwice() throws Exception { JadbDevice any = jadb.getAnyDevice(); for (RemoteFile f : any.list("/")) { - System.out.println(f.getPath()); + System.out.println(f.getName()); } for (RemoteFile f : any.list("/")) { - System.out.println(f.getPath()); + System.out.println(f.getName()); } } diff --git a/src/test/java/se/vidstige/jadb/test/unit/MockedTestCases.java b/src/test/java/se/vidstige/jadb/test/unit/MockedTestCases.java index 84abd91..573cd18 100644 --- a/src/test/java/se/vidstige/jadb/test/unit/MockedTestCases.java +++ b/src/test/java/se/vidstige/jadb/test/unit/MockedTestCases.java @@ -227,7 +227,7 @@ private static long parseDate(String date) throws ParseException { private static void assertHasFile(String expPath, int expSize, long expModifyTime, List actualFiles) { for (RemoteFile file : actualFiles) { - if (expPath.equals(file.getPath())) { + if (expPath.equals(file.getName())) { if (file.isDirectory()) { fail("File " + expPath + " was listed as a dir!"); } else if (expSize != file.getSize() || expModifyTime != file.getLastModified()) { @@ -242,7 +242,7 @@ private static void assertHasFile(String expPath, int expSize, long expModifyTim private static void assertHasDir(String expPath, long expModifyTime, List actualFiles) { for (RemoteFile file : actualFiles) { - if (expPath.equals(file.getPath())) { + if (expPath.equals(file.getName())) { if (!file.isDirectory()) { fail("Dir " + expPath + " was listed as a file!"); } else if (expModifyTime != file.getLastModified()) { From 1944bf55e3cb7c9366378baa3bf078c220793e06 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Fri, 21 Jul 2023 07:33:16 +0900 Subject: [PATCH 3/9] clean up --- .../java/se/vidstige/jadb/SyncTransport.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/se/vidstige/jadb/SyncTransport.java b/src/main/java/se/vidstige/jadb/SyncTransport.java index 88869a9..ee974f7 100644 --- a/src/main/java/se/vidstige/jadb/SyncTransport.java +++ b/src/main/java/se/vidstige/jadb/SyncTransport.java @@ -1,6 +1,10 @@ package se.vidstige.jadb; -import java.io.*; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.Deque; import java.util.LinkedList; @@ -35,7 +39,7 @@ public void sendStatus(String statusCode, int length) throws IOException { output.writeInt(Integer.reverseBytes(length)); } - public void verifyStatus() throws IOException, JadbException { + public void verifyStatus() throws IOException { String status = readString(4); int length = readInt(); if ("FAIL".equals(status)) { @@ -72,7 +76,7 @@ public void sendDirectoryEntryDone() throws IOException { output.writeBytes("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); // equivalent to the length of a "normal" dent } - public RemoteFileRecord readDirectoryEntry() throws IOException { + public RemoteFileRecord readDirectoryEntry(String path) throws IOException { String id = readString(4); int mode = readInt(); int size = readInt(); @@ -90,7 +94,7 @@ private void sendChunk(byte[] buffer, int offset, int length) throws IOException output.write(buffer, offset, length); } - private int readChunk(byte[] buffer) throws IOException, JadbException { + private int readChunk(byte[] buffer) throws IOException { String id = readString(4); int n = readInt(); if ("FAIL".equals(id)) { @@ -130,7 +134,7 @@ public void close() throws IOException { }; } - public void readChunksTo(OutputStream stream) throws IOException, JadbException { + public void readChunksTo(OutputStream stream) throws IOException { byte[] buffer = new byte[1024 * 64]; int n = readChunk(buffer); while (n != -1) { @@ -139,7 +143,7 @@ public void readChunksTo(OutputStream stream) throws IOException, JadbException } } - private int readChunk(Deque deque) throws IOException, JadbException { + private int readChunk(Deque deque) throws IOException { String id = readString(4); int n = readInt(); if ("FAIL".equals(id)) { @@ -160,16 +164,12 @@ public InputStream readChunks(Runnable onClose) { Deque deque = new LinkedList<>(); boolean eof; void readInternal() throws IOException { - try { if (!eof) { int n = readChunk(deque); if (n == -1) { eof = true; } } - } catch (JadbException e) { - throw new IOException(e); - } } @Override public int read(byte[] b, int off, int len) throws IOException { From 52c11c8065edfebc25f42f90ac20ec350764dfa2 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Fri, 21 Jul 2023 07:33:28 +0900 Subject: [PATCH 4/9] bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 42fbcf8..7712c97 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ se.vidstige jadb - 1.2.2v + 1.2.3v https://github.com/umjammer/jadb From 2bddadd8b9a22479b48a18a8fd6444e204b1bec0 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Fri, 21 Jul 2023 16:57:07 +0900 Subject: [PATCH 5/9] clean up --- .idea/.name | 1 - .idea/artifacts/jadb_jar.xml | 11 --------- .idea/copyright/profiles_settings.xml | 3 --- .idea/dictionaries/vidstige.xml | 7 ------ .idea/libraries/junit_4_10.xml | 9 -------- .idea/runConfigurations/MockedTestCases.xml | 25 --------------------- .idea/scopes/scope_settings.xml | 5 ----- .idea/vcs.xml | 7 ------ 8 files changed, 68 deletions(-) delete mode 100644 .idea/.name delete mode 100644 .idea/artifacts/jadb_jar.xml delete mode 100644 .idea/copyright/profiles_settings.xml delete mode 100644 .idea/dictionaries/vidstige.xml delete mode 100644 .idea/libraries/junit_4_10.xml delete mode 100644 .idea/runConfigurations/MockedTestCases.xml delete mode 100644 .idea/scopes/scope_settings.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 7fa5ab2..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -jadb \ No newline at end of file diff --git a/.idea/artifacts/jadb_jar.xml b/.idea/artifacts/jadb_jar.xml deleted file mode 100644 index 8cf92c4..0000000 --- a/.idea/artifacts/jadb_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - $PROJECT_DIR$/out/artifacts/jadb_jar - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/dictionaries/vidstige.xml b/.idea/dictionaries/vidstige.xml deleted file mode 100644 index 32e3332..0000000 --- a/.idea/dictionaries/vidstige.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - jadb - - - \ No newline at end of file diff --git a/.idea/libraries/junit_4_10.xml b/.idea/libraries/junit_4_10.xml deleted file mode 100644 index 9b2b25d..0000000 --- a/.idea/libraries/junit_4_10.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/MockedTestCases.xml b/.idea/runConfigurations/MockedTestCases.xml deleted file mode 100644 index 89ec37b..0000000 --- a/.idea/runConfigurations/MockedTestCases.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b..0000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 275077f..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - From aa9d642f13f5c0c0423ed8a24cc824ae7f1ed1a3 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Tue, 27 Feb 2024 22:00:31 +0900 Subject: [PATCH 6/9] [symbolic-link] start implementing --- .../java/se/vidstige/jadb/JadbDevice.java | 6 +++--- .../java/se/vidstige/jadb/RemoteFile.java | 4 ++++ .../se/vidstige/jadb/RemoteFileRecord.java | 20 ++++++++++++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main/java/se/vidstige/jadb/JadbDevice.java b/src/main/java/se/vidstige/jadb/JadbDevice.java index 8b48727..4d39f47 100644 --- a/src/main/java/se/vidstige/jadb/JadbDevice.java +++ b/src/main/java/se/vidstige/jadb/JadbDevice.java @@ -172,7 +172,7 @@ private StringBuilder buildCmdLine(String command, String... args) { /** * Enable tcpip on the default port (5555) * - * @return success or failure + * @exception IOException failure */ public void enableAdbOverTCP() throws IOException { enableAdbOverTCP(DEFAULT_TCPIP_PORT); @@ -183,7 +183,7 @@ public void enableAdbOverTCP() throws IOException { * * @param port for the device to bind on * - * @return success or failure + * @exception IOException failure */ public void enableAdbOverTCP(int port) throws IOException { try (Transport transport = getTransport()) { @@ -216,7 +216,7 @@ public void push(InputStream source, long lastModified, int mode, RemoteFile rem } } - public void push(File local, RemoteFile remote) throws IOException, JadbException { + public void push(File local, RemoteFile remote) throws IOException { try (FileInputStream fileStream = new FileInputStream(local)) { push(fileStream, TimeUnit.MILLISECONDS.toSeconds(local.lastModified()), DEFAULT_MODE, remote); } diff --git a/src/main/java/se/vidstige/jadb/RemoteFile.java b/src/main/java/se/vidstige/jadb/RemoteFile.java index 4ba70c5..78a2600 100644 --- a/src/main/java/se/vidstige/jadb/RemoteFile.java +++ b/src/main/java/se/vidstige/jadb/RemoteFile.java @@ -19,6 +19,10 @@ public String getName() { public int getSize() { throw new UnsupportedOperationException(); } public int getLastModified() { throw new UnsupportedOperationException(); } public boolean isDirectory() { throw new UnsupportedOperationException(); } + public boolean isRegularFile() { + throw new UnsupportedOperationException(); + } + public boolean isSymbolicLink() { throw new UnsupportedOperationException(); } public int getMode() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/se/vidstige/jadb/RemoteFileRecord.java b/src/main/java/se/vidstige/jadb/RemoteFileRecord.java index 7ccd346..4e65a66 100644 --- a/src/main/java/se/vidstige/jadb/RemoteFileRecord.java +++ b/src/main/java/se/vidstige/jadb/RemoteFileRecord.java @@ -15,8 +15,12 @@ class RemoteFileRecord extends RemoteFile { private final int size; private final int lastModified; - public RemoteFileRecord(String name, int mode, int size, int lastModified) { - super(name); + /** + * @param mode see "Encoding of the file mode." in + * ... + */ + public RemoteFileRecord(String path, int mode, int size, int lastModified) { + super(path); this.mode = mode; this.size = size; this.lastModified = lastModified; @@ -32,9 +36,19 @@ public int getLastModified() { return lastModified; } + @Override + public boolean isRegularFile() { + return (mode & 0100000) == 0100000; + } + @Override public boolean isDirectory() { - return (mode & (1 << 14)) == (1 << 14); + return (mode & 0040000) == 0040000; + } + + @Override + public boolean isSymbolicLink() { + return (mode & 0120000) == 0120000; } @Override From 67ee103097d99f11e5be01ac2299b53a515714f8 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Tue, 27 Feb 2024 22:00:50 +0900 Subject: [PATCH 7/9] update settings --- .github/workflows/codeql.yml | 15 +++++++++++---- .github/workflows/maven.yml | 8 ++++---- README.md | 4 ++-- pom.xml | 16 +++++++--------- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1e4737b..1356eb7 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -38,11 +38,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -52,8 +52,15 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # â„šī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -63,4 +70,4 @@ jobs: # uses a compiled language - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 203b451..28a457a 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -13,16 +13,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Check w/o SNAPSHOT when "bump version" if: ${{ contains(github.event.head_commit.message, 'bump version') }} run: grep "" pom.xml | head -1 | grep -v SNAPSHOT - - name: Set up JDK 8 - uses: actions/setup-java@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v4 with: - java-version: '8' + java-version: '17' distribution: 'temurin' cache: maven diff --git a/README.md b/README.md index ef2eac3..de52ee7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![jitpack badge](https://jitpack.io/v/umjammer/jadb.svg)](https://jitpack.io/#umjammer/jadb) [![Java CI](https://github.com/umjammer/jadb/actions/workflows/maven.yml/badge.svg)](https://github.com/umjammer/jadb/actions/workflows/maven.yml) -[![CodeQL](https://github.com/umjammer/jadb/actions/workflows/codeql.yml/badge.svg)](https://github.com/umjammer/jadb/actions/workflows/codeql-analysis.yml) -![Java](https://img.shields.io/badge/Java-8-b07219) +[![CodeQL](https://github.com/umjammer/jadb/actions/workflows/codeql.yml/badge.svg)](https://github.com/umjammer/jadb/actions/workflows/codeql.yml) +![Java](https://img.shields.io/badge/Java-17-b07219) [![Parent](https://img.shields.io/badge/Parent-vavi--nio--file--adb-pink)](https://github.com/umjammer/vavi-nio-file-adb) # JADB diff --git a/pom.xml b/pom.xml index 7712c97..3145f36 100644 --- a/pom.xml +++ b/pom.xml @@ -35,17 +35,15 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.11.0 - 1.8 - 1.8 - UTF-8 + 17 org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M7 + 3.2.2 -Djava.util.logging.config.file=${project.build.testOutputDirectory}/logging.properties @@ -62,7 +60,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.0.0-M3 + 3.1.0 se/vidstige/jadb/test/integration/*.java @@ -93,7 +91,7 @@ org.junit junit-bom - 5.9.3 + 5.10.1 pom import @@ -125,14 +123,14 @@ org.mockito mockito-core - 2.28.2 + 5.10.0 test com.github.umjammer vavi-commons - 1.1.9 + 1.1.10 test From 47646b2e994bbfa60a3f3f0b1995be16c4ef4b35 Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Tue, 27 Feb 2024 22:01:22 +0900 Subject: [PATCH 8/9] bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3145f36..4521a7f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ se.vidstige jadb - 1.2.3v + 1.2.4v https://github.com/umjammer/jadb From fe8f930babbbbdcf3ac902ba850f561b145d575d Mon Sep 17 00:00:00 2001 From: Naohide Sano Date: Tue, 27 Feb 2024 22:09:10 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=A5=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jitpack.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 jitpack.yml diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..efde7bf --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +jdk: + - openjdk17