Java应用程序在Android上安装APK(Java Application to install

2019-09-27 03:36发布

我试图使一个简单的Java应用程序在通过USB连接的Android设备上安装APK。 使用手动ABD然后一切工作正常,但我想给一个简单的单按钮,单击我的应用程序中的安装选项,但由于某些原因的代码心不是工作:

    try {
        abdsourcesync = apkpath;
        progress.setString("sync in progress");
        System.out.println("Starting Sync via adb with command " + "adb"
                + " install -r " + apkpath);

        Process process = Runtime.getRuntime().exec(
                "adb" + " install -r " + apkpath);
        InputStreamReader reader = new InputStreamReader(
                process.getInputStream());
        Scanner scanner = new Scanner(reader);
        scanner.close();
        int exitCode = process.waitFor();
        System.out.println("Process returned: " + exitCode);

该过程的141,但没有发现其他错误,我可以看到退出,但是当我看到平板电脑上的apk文件没有安装。 我有检查,以确保有其根源,并支持第三方应用等设备上的空间,所以我敢肯定这个问题是我的Java,而不是Android设备(如我说,如果我运行ADB安装-r自己从终端然后一切工作正常)。

找遍了周围的计算器,但只找到线程从一个Android应用程序中安装的APK,而不是从桌面Java应用程序。

谢谢您的帮助;

编辑:新的代码现在看起来是这个样子的ProcessBuilder管理亚行呼吁:

        try {
            abdsourcesync = apkpath;
            progress.setString("sync in progress");
            System.out.println("Starting Sync via adb with command " + "adb"
                    + " install -r " + apkpath);

            ProcessBuilder apksync = new ProcessBuilder("adb",  " install -r ",  apkpath);

            apksync = apksync.redirectErrorStream(true);
/*          Process process = Runtime.getRuntime().exec(
                    "adb" + " install -r " + apkpath);*/
            Process process = apksync.start();
            InputStreamReader reader = new InputStreamReader(
                    process.getInputStream());
            Scanner scanner = new Scanner(reader);
            scanner.close();
            int exitCode = process.waitFor();
            System.out.println("Process returned: " + exitCode);

apk的同步,只不过没有为1的状态返回到控制台立竿见影。

如果我手动指定位置APK

ProcessBuilder apksync = new ProcessBuilder("adb","install","/home/geeky/Desktop/1.apk");

然后我得到了同样的错误作为原代码,返回状态141并在一段时间后,同步过程完成,但表上的apk文件的心不是可用。 我也得到了同样的结果,如果我试图用一个APK比我700MB的应用程序要小得多(如在一个500KB的apk给出相同的结果)。

EDIT3:我也试图改变命令推APK和它的作品没有错误,APK将推没有问题/mnt/sdcard/test/1.apk。

安迪

Answer 1:

我想这是因为不能够解决ADB二进制Java应用程序。 尝试在环境变量中添加亚行二进制使其从任何地方访问。

尝试这个:

    ProcessBuilder pb = new ProcessBuilder("cmd","arg1");
pb = pb.redirectErrorStream(true);
    Process proc = pb.start();
    InputStream is = proc.getInputStream();


文章来源: Java Application to install APK on android
标签: java android adb