开发者社区> 问答> 正文

关于android代码中调用可执行文件的

我要在android中使用第三方的可执行程序。程序用c写的,已经在linux在下交叉编译完成,适合arm指令集的。文件放在android工程assets目录,android应用启动后复制到应用data目录,我通过adb去运行那个程序是可以的,在代码中调用一直不成功,没有返回结果,代码贴出来,求帮忙,在代码中怎么调用可执行程序呢?

 
//编译过的文件已经通过流复制到data目录下了,我在PC上用adb是可以运行它的,这里通过代码调用失败
 
try {
                Log.i("service", "servicestart");
                 
                String rsyncpath = getFilesDir().getPath()+"/"+"rsync-3.0.6-arm-softfloat-linux-gnueabi";
                Log.i("paths", rsyncpath);
                File rsyncfile = new File(rsyncpath);
                //设置执行权限
                rsyncfile.setExecutable(true, true);
                Process process = Runtime.getRuntime().exec(rsyncpath);
                BufferedReader reader = new BufferedReader(
                            new InputStreamReader(process.getInputStream()));
                int read;
                char[] buffer = new char[4096];
                StringBuffer output = new StringBuffer();
                while ((read = reader.read(buffer)) > 0) {
                    output.append(buffer, 0, read);
                     
                }
                int ret = process.waitFor();
                if(ret!=0){
                     Log.i("rsync","error"+ret);
                }else{
                    Log.i("rsync",output.toString());
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            } 
            catch (InterruptedException e) {
                e.printStackTrace();
            }
 

展开
收起
爵霸 2016-06-13 09:09:48 3385 0
1 条回答
写回答
取消 提交回答
  • 用jni吧.

    或者贴出来报了什么错

    试试在执行命令之前,先执行下 chmod 777 可执行文件

    2019-07-17 19:35:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载