使用 Linux 上的 Java 程序通过 ADB 在 android 设备上安装 apk
Installing apk on android device via ADB with Java program on Linux
我正在尝试通过 Linux 上的 java 程序将 Java 的内置文件管理器的路径传递给 ADB,以便在 android 设备上安装 apk。执行代码时,永远不会安装使用文件管理器选择的 apk。
代码如下:
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"APK Files", "apk");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(getParent());
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You choose to open this file: " + chooser.getSelectedFile().getName());
File file = new File("");
System.out.println(file.getAbsolutePath().toString());
try {
Process p1 = Runtime.getRuntime().exec("adb kill-server"); //for killing old adb instance
Process p2 = Runtime.getRuntime().exec("adb start-server");
Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\"");
p3.waitFor();
Process p4 = Runtime.getRuntime().exec("adb kill-server");
} catch (Exception e1) {
System.err.println(e1);
}
以下代码应安装 apk:
Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\"");
换行
File file = new File("");
至
File file = chooser.getSelectedFile();
另外,别忘了查看
if(file.exists()) {
验证文件。
我自己弄明白了,这里是代码:
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("APK Files", "apk");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(getParent());
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
String filename = chooser.getSelectedFile().getName();
try {
String[] commands = new String[3];
commands[0] = "adb";
commands[1] = "install";
commands[2] = file.getAbsolutePath();
Process p1 = Runtime.getRuntime().exec(commands, null);
p1.waitFor();
} catch (Exception e1) {
System.err.println(e1);
}
}
我花了一周的时间为 window 系统完成相同的任务我找到了一个简单的解决方案来完成这个任务,以下是我在我的项目中应用的一些步骤
第一步是从 this URL 下载 ADB 工具(称为平台工具),并将下载的文件解压缩到您的工作区目录中。
打开平台工具下载到的目录
如果您不知道如何创建批处理文件,请按照以下步骤创建批处理文件
我。打开你的文本编辑器记事本或记事本++
二。将其保存为 xyz.bat 然后它将被 window 系统视为批处理文件
在文本编辑器中打开批处理文件并粘贴以下命令
adb install "b2c.apk" && adb shell am start -n com.xyz.app/com.xyz.b2c.Activity.SplashScreen**
(这里有两条ADB命令,用&符号分隔。
第一个命令用于在 Android 设备中安装 APK
第二个是打开应用程序)
我。 b2c.apk 是我要安装在 phone
上的 android APK
二。 com.xyz.app 是一个 android 应用程序包名称, com.xyz.b2c.Activity.SplashScreen 是一个 activity 我要打开的包名称
保存文件并关闭,然后复制该文件并将其粘贴到带有平台工具的目录中。并且不要忘记将您的 APK 文件也放在这个目录中
cd
进入平台目录,运行这个Java程序:
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Scanner;
public class TestClass {
static int progress = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String ls_str;
Process p = Runtime.getRuntime().exec("cmd /c xyz.bat", null, new File("E:\Arun_Java_Workspace\TestApplication\platform-tools"));
DataInputStream ls_in = new DataInputStream(
p.getInputStream());
while ((ls_str = ls_in.readLine()) != null) {
System.out.println(ls_str);
}
} catch (Exception e) {
System.out.println("Exception e: " + e);
}
}
}
我正在尝试通过 Linux 上的 java 程序将 Java 的内置文件管理器的路径传递给 ADB,以便在 android 设备上安装 apk。执行代码时,永远不会安装使用文件管理器选择的 apk。
代码如下:
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"APK Files", "apk");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(getParent());
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You choose to open this file: " + chooser.getSelectedFile().getName());
File file = new File("");
System.out.println(file.getAbsolutePath().toString());
try {
Process p1 = Runtime.getRuntime().exec("adb kill-server"); //for killing old adb instance
Process p2 = Runtime.getRuntime().exec("adb start-server");
Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\"");
p3.waitFor();
Process p4 = Runtime.getRuntime().exec("adb kill-server");
} catch (Exception e1) {
System.err.println(e1);
}
以下代码应安装 apk:
Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\"");
换行
File file = new File("");
至
File file = chooser.getSelectedFile();
另外,别忘了查看
if(file.exists()) {
验证文件。
我自己弄明白了,这里是代码:
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("APK Files", "apk");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(getParent());
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
String filename = chooser.getSelectedFile().getName();
try {
String[] commands = new String[3];
commands[0] = "adb";
commands[1] = "install";
commands[2] = file.getAbsolutePath();
Process p1 = Runtime.getRuntime().exec(commands, null);
p1.waitFor();
} catch (Exception e1) {
System.err.println(e1);
}
}
我花了一周的时间为 window 系统完成相同的任务我找到了一个简单的解决方案来完成这个任务,以下是我在我的项目中应用的一些步骤
第一步是从 this URL 下载 ADB 工具(称为平台工具),并将下载的文件解压缩到您的工作区目录中。
打开平台工具下载到的目录
如果您不知道如何创建批处理文件,请按照以下步骤创建批处理文件
我。打开你的文本编辑器记事本或记事本++
二。将其保存为 xyz.bat 然后它将被 window 系统视为批处理文件
在文本编辑器中打开批处理文件并粘贴以下命令
adb install "b2c.apk" && adb shell am start -n com.xyz.app/com.xyz.b2c.Activity.SplashScreen**
(这里有两条ADB命令,用&符号分隔。 第一个命令用于在 Android 设备中安装 APK 第二个是打开应用程序)
我。 b2c.apk 是我要安装在 phone
上的 android APK二。 com.xyz.app 是一个 android 应用程序包名称, com.xyz.b2c.Activity.SplashScreen 是一个 activity 我要打开的包名称
保存文件并关闭,然后复制该文件并将其粘贴到带有平台工具的目录中。并且不要忘记将您的 APK 文件也放在这个目录中
cd
进入平台目录,运行这个Java程序:
import java.io.DataInputStream;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Scanner;
public class TestClass {
static int progress = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String ls_str;
Process p = Runtime.getRuntime().exec("cmd /c xyz.bat", null, new File("E:\Arun_Java_Workspace\TestApplication\platform-tools"));
DataInputStream ls_in = new DataInputStream(
p.getInputStream());
while ((ls_str = ls_in.readLine()) != null) {
System.out.println(ls_str);
}
} catch (Exception e) {
System.out.println("Exception e: " + e);
}
}
}