Поврежденные предварительно скомпилированные активы в направляющих 3.1 при развертывании к под-URI

я нахожусь в процессе обновления направляющие 3 приложения для использования направляющих 3.1 и как часть этого, использую новый конвейер актива. До сих пор у меня есть все работающее кроме одной довольно раздражающей проблемы, которую я не могу решить.

приложение и все его активы хорошо работают в разработке, но в производстве это развертывается на под-URI с помощью Пассажира ( http://the-host/sub-uri/ ). Проблема с этим состоит в том, что активы предварительно компилируются во время развертывания и одного из моего CSS (хорошо, это файл .css.scss ), файлы используют URL изображения помощник от эти направляющие дерзости драгоценный камень. С тех пор во время предварительного процесса компиляции, пути трудно кодируются в предварительно скомпилированный файл CSS, подuri не принят во внимание:

В моем файл .css.scss :

body { background-image: image-url("bg.png"); }

результат в скомпилированном приложение - файл .css :

body { background-image: url(/assets/bg.png); }

, Что это должно быть должно заставить его работать правильно:

body { background-image: url(/sub-uri/assets/bg.png); }

этот сценарий, просто спросив слишком много? Если так, я должен буду переключиться назад на старый non-asset-pipelined путь и просто вручить свои изображения и CSS от общественность . Однако это походит на что-то, о чем нужно было думать и решить...? Я пропускаю решение?


Редактирование 1: я должен отметить, что использование erb решение вместо этого приводит к тому же результату, как можно было бы ожидать.


Редактирование 2: в ответ на комментарий

Benoit Garret нет, проблема не связана с config.assets.prefix. Я пытался установить это (к /sub-uri/assets , а не значение по умолчанию / активы ), но оказалось, что это было неправильным поступком - кажется, что эта настройка уже относительно корня приложения для направляющих, не сервера. Удаление этого (и таким образом возврат значению по умолчанию) устранили все странные проблемы, которые вызвали (и были многие, все активы закончились в /sub-uri/sub-uri/assets - это было все очень странно). Единственная проблема состоит в том, что URL изображения помощник и друзья не берут под-URI, когда они предварительно компилируются. Само собой разумеется, это логично с тех пор, когда это предварительно компилируется, это не могло возможно знать, что, когда это работает при Пассажире, это будет настроено таким образом. Мой вопрос состоит в том, как сообщить ему об этом и таким образом закончить с корректными путями в предварительно скомпилированном результате. Если действительно это может быть сделано.

Мое текущее обходное решение должно сослаться на изображение в CSS как это: URL (./images/bg.png) и место это в неконвейерном общественность/изображения местоположение. Едва идеальный, так как это не извлекает выгоду из снятия отпечатков пальцев и всего, что обеспечивает конвейер.

-121-1365795-

Android прозрачный холст (surfaceview) у меня есть панель, которая помещается сверх другого представления через relativelayout. Я хотел бы дать этой панели прозрачный фон, но не нашел корректный способ сделать это после поиска...

у меня есть панель, которая помещается сверх другого представления через relativelayout.

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

, Надо надеяться, кто-то здесь может помочь мне с этим.

Большое спасибо!

панель оттянута с помощью этого кода:

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;

    public class Panel extends SurfaceView implements SurfaceHolder.Callback {

    private ViewThread mThread;

    Paint paint = new Paint();

    public Panel(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        getHolder().addCallback(this);
        mThread = new ViewThread(this);
    }

    public void doDraw(Canvas canvas) {
        canvas.drawARGB(50, 120, 120, 120);

        paint.setARGB(255, 255, 0, 0);
        paint.setStrokeWidth(2);

        int CanvasHeight = canvas.getHeight();
        int CanvasWidth  = canvas.getWidth();

        canvas.drawLine(LeftStartX, LeftStartY, StopX, StopY, paint);
    }

    public void updateDrawing(float LB, float RB, float BD, float AH, float AD ){
        Left = LB;
        Right = RB;
        Distance = BD;
        AHeight = AH;
        ADistance = AD;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}


    public void surfaceCreated(SurfaceHolder holder) {
        if (!mThread.isAlive()) {
            mThread = new ViewThread(this);
            mThread.setRunning(true);
            mThread.start();
        }
    }


    public void surfaceDestroyed(SurfaceHolder holder) {
        if (mThread.isAlive()) {
            mThread.setRunning(false);
        }
    }
}

8
задан Pratik Butani 3 February 2014 в 02:07
поделиться