环境:
- Flash Builder 4.6
- 空气SDK 3.1
- OS X 10.7.3
我正在调试一个问题,该问题确实出现在使用我的SWC库的应用程序的iOS版本中,使用FB编译,并且没有出现在使用原始AIR SDK完成的非常相似应用程序的iOS版本中。
我怀疑问题的原因是编译器配置的差异。现在,我正试图手动(但没有成功)制作蚂蚁的build.xml,这样它就可以匹配我认为FB正在做的任何事情,希望我能在某个时候看到同样的崩溃。但这并不是很有效。
有没有一种方法可以让我看到FB是如何调用adt
等的,并将其与我的ant
配置进行比较?
还有其他故障排除提示吗?
这让我想起了以前的答案
简而言之,您可以创建一个记录其参数的程序,备份原始adt并用它替换它(您的程序甚至可能用这些参数运行原始adt。)
一种可能的情况是flashbuilder使用的是AIRSDK的一个单独副本,该副本更旧。您可以在此处(窗口)检查文件夹:C: \Program Files(x86)\Adobe\Adobe Flash Builder 4\sdks
查看您是否正在使用最新的AIR-sdk。
我组合了另一个线程的回答,并写下了以下内容:
只需构建一个可运行的jar文件
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
public class adt {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String argsString = "";
for(int i=0; i<args.length; ++i)
{
argsString += args[i];
}
Process proc = Runtime.getRuntime().exec("java -jar adt2.jar " + argsString);
File txt = new File("C:\command.txt");
try(FileWriter writer = new FileWriter(txt))
{
writer.write(argsString);
}
try {
proc.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
byte b[]=new byte[in.available()];
in.read(b,0,b.length);
System.out.println(new String(b));
byte c[]=new byte[err.available()];
err.read(c,0,c.length);
System.out.println(new String(c));
File out = new File("C:\output.txt");
try(FileWriter writer = new FileWriter(out))
{
writer.write(new String(b));
}
File errors = new File("C:\errors.txt");
try(FileWriter writer = new FileWriter(errors))
{
writer.write(new String(c));
}
}
}