可执行文件尝试将文件输出到Android内部存储时出错

时间:2016-05-20 10:42:36

标签: java android arduino runtime.exec avr-gcc

我正在尝试在Android中编译Arduino的.ino文件。所以我正在使用avr-gcc,avr-g ++,avr-objcopy可执行(二进制)文件。这些文件在给定位置生成某些文件作为输出。我在内部存储中使用了/ data / local / tmp(/data/user/0/com.dtlabz.dreamkit/files/local/tmp/)目录。但是这些可执行文件无法输出文件。

这是执行可执行文件的代码:

private void execCommand(List<String> comm) throws Exception {

    StringBuilder sb = new StringBuilder();
    for(String c : comm) {
        sb.append(c);
        sb.append(" ");
    }
    exec(sb.toString());
    try {

        Log.d(LOG,"Comm: "+comm);

        Process process = Runtime.getRuntime().exec(comm.toArray(new String[0]));

        MessageSiphon in = new MessageSiphon(process.getInputStream(), new MessageConsumer() {
            public void message(String s) {
                stdout(s);
            }
        });
        MessageSiphon err = new MessageSiphon(process.getErrorStream(), new MessageConsumer() {
            public void message(String s) {
                stderr(s);
                if(s.contains("error:")) {
                    Util.p("it's an error");
                    errorHappened = true;
                    errorString = s;
                }
            }
        });
        try {
            in.join();
            err.join();
            int result = process.waitFor();
            Log.d(LOG,"Result is: "+ result);
        } catch (Exception ex) {
            Log.e(LOG,"ExecCommand MsgSiphon Join Error: "+ex);
        }
        if(errorHappened) {
            throw new CompileException("compiler error",errorString);
        }


    } catch (IOException e) {
        Log.e(LOG,"Exec error: "+ e.getMessage());
    }
}

这是命令。例如,我将以下命令作为comm:

  

/data/user/0/com.dtlabz.dreamkit/files/local/tmp/arduino_compiler_files/tools/avr/bin/avr-g++   -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu = atmega328p -DF_CPU = 16000000L -MMD -DARDUINO = 101 -DUSB_VID = -DUSB_PID = -I / data / user / 0 / com .dtlabz.dreamkit /文件/本地的/ tmp / arduino_compiler_files /硬件/ Arduino的/核心/ Arduino的   -I /数据/用户/ 0 / com.dtlabz.dreamkit /文件/本地的/ tmp / arduino_compiler_files /硬件/ Arduino的/变体/标准   /data/user/0/com.dtlabz.dreamkit/files/local/tmp/arduino_compiler_files/hardware/arduino/cores/arduino/CDC.cpp   -o /data/user/0/com.dtlabz.dreamkit/files/local/tmp/CDC.cpp.o

此命令应生成CDC.cpp.o文件。但是我在上面给出的代码中通过process.GetErrorStream()得到了以下错误。

Cannot create temporary file in ./: Read-only file system

请帮助。

0 个答案:

没有答案