Как посмотреть, как Flash Builder вызывает adt? - PullRequest
1 голос
/ 17 февраля 2012

Окружающая среда:

  • Flash Builder 4.6
  • AIR SDK 3.1
  • OS X 10.7.3

Я отлаживаю проблему, которая появляется в сборках iOS-приложения, использующего мою библиотеку SWC, скомпилированного с FB, и не появляется в сборках iOS очень похожих приложений, выполненных с помощью необработанного AIR SDK.

Я подозреваю, что причиной проблемы является различие в конфигурации компилятора. Теперь я пытаюсь вручную (и безуспешно) создать файл build.xml муравья, чтобы он соответствовал тому, что, как я думаю, делает FB, в надежде, что в какой-то момент я увижу тот же сбой. Но это не очень эффективно.

Есть ли способ увидеть, как FB вызывает adt и т. Д., И сравнить это с моим ant config?

Любые другие советы по устранению неполадок?

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012

Это напоминает мне мой старый ответ .
Короче говоря, вы можете создать программу, которая регистрирует свои аргументы, создает резервную копию исходного adt и заменяет его им (ваша программа может даже запустить оригинальный adt с этими аргументами.)

0 голосов
/ 01 декабря 2014

Я объединил ответы от другого потока и написал это:

просто создайте исполняемый файл 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));
        }
    }

}
0 голосов
/ 18 февраля 2012

Вероятным случаем является то, что flashbuilder использует отдельную копию AIR SDK, которая является более старой.Вы можете проверить папку здесь (windows): C: \ Program Files (x86) \ Adobe \ Adobe Flash Builder 4 \ sdks

Чтобы узнать, используете ли вы самый последний AIR SDK.

...