Мармелад Шторм - PullRequest
       10

Мармелад Шторм

1 голос
/ 21 ноября 2011

Написал простой код, используя Marmalade с EDK Flurry.

приложение только запускает сеанс, отправляет одно событие журнала и останавливается.

На Motorola Flipout это приложение отлично работает без аварий.

Но на Samsung Galaxy Tab его сбой. Это лог от logcat:

11-21 15: 00: 31.608: W / dalvikvm (13139): ПРЕДУПРЕЖДЕНИЕ JNI: 0x485c7c40 не является допустимой ссылкой JNI 11-21 15: 00: 31.608: W / dalvikvm (13139): в Lcom / ideaworks3d / marmalade / LoaderThread; .runNative (Ljava / lang / String; Ljava / lang / String;) V (GetMethodID)

11-21 15: 00: 31.608: I / dalvikvm (13139): "Thread-9" prio = 5 tid = 8 RUNNABLE 11-21 15: 00: 31.612: I / dalvikvm (13139): | group = "main" sCount = 0 dsCount = 0 s = N obj = 0x485d9a20 self = 0x249730

11-21 15: 00: 31.616: I / dalvikvm (13139): | sysTid = 13146 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 2397632

11-21 15: 00: 31.619: I / dalvikvm (13139): на com.ideaworks3d.marmalade.LoaderThread.runNative (собственный метод)

11-21 15: 00: 31.619: I / dalvikvm (13139): на com.ideaworks3d.marmalade.LoaderThread.run (LoaderThread.java:712)

11-21 15: 00: 31.627: E / dalvikvm (13139): прерывание виртуальной машины

Обновление: Код: -

#include "flurry.h"
#include "IwGx.h"

int main()
{

        IwGxInit();
        IwGxSetColClear(0,0,0xff,0xff);


        char* i = new char[2];
        i[0] = 9 + 48;
        i[0] = Flurry::InitFlurry() + 48;
        i[1] = '\0';
            //Flurry::SetUniqueUserID();


        while(!s3eDeviceCheckPauseRequest())
        {
                IwGxClear();

                IwGxPrintString(30, 100, "Flurry D");
                IwGxPrintString(30, 110, "Init code");
                IwGxPrintString(30, 120 , i);
                IwGxFlush();
                IwGxSwapBuffers();

                s3eDeviceYield(0);
        }

        Flurry::ExitFlurry();
        IwGxTerminate();
        return 0;
}


#include "flurry.h"

#ifdef FLURRY
char* Flurry:: FLURRY_ID_ANDROID;
char* Flurry:: FLURRY_ID_IPHONE;
char Flurry:: log_error = 9;

void Flurry :: InitIDsForPlatforms()
{
        FLURRY_ID_ANDROID = new char[20];
        FLURRY_ID_IPHONE = new char[20];
        strcpy(FLURRY_ID_ANDROID, "some number");
        strcpy(FLURRY_ID_IPHONE, "some number");
};

int Flurry :: InitFlurry()
{
        //if(log_error != 9)
                //return log_error;
        //Check if Flurry is available
        if (!s3eFlurryAvailable())
        {
                Flurry::log_error = 1;
        return 1;
        }

        Flurry::InitIDsForPlatforms();

        //Enable AppCircle
        //s3eFlurryAppCircleEnable();
        return Flurry::log_error;
        //Check the OS is runing on device
        switch(s3eDeviceGetInt(S3E_DEVICE_OS))
        {
                case S3E_OS_ID_ANDROID :
                        s3eFlurryStart(Flurry::FLURRY_ID_ANDROID);
                        break;

                case S3E_OS_ID_IPHONE :
                        s3eFlurryStart(Flurry::FLURRY_ID_IPHONE);
                        break;

                default :
                        Flurry::log_error = 2;
                        return 2;
        }

    /*
            something more write?
    */
        Flurry::log_error = 0;
        return 0;
};


void Flurry :: SetUserID(const char* ID)
{
        if(!Flurry::log_error)
                s3eFlurrySetUserID(ID);
}

void Flurry :: ExitFlurry()
{
        if(!Flurry::log_error)
                s3eFlurrySetSessionReportOnClose(true);
}

void Flurry :: LogEvent(const char* data)
{
        if(!Flurry::log_error)
                s3eFlurryLogEvent(data, false);
}


void Flurry :: addParamterToLogEvent(const char* name, const char* data)
{
        if(!Flurry::log_error)
                addToHashMap(name, data);
}

void Flurry :: addParamterToLogEvent(const char* name, int data)
{
        if(Flurry::log_error)
                return;
        std::stringstream str;
        str << data;
        addToHashMap(name, str.str().c_str());
}

void Flurry :: LogEventWithParameters(const char* name)
{
        if(!Flurry::log_error)
                s3eFlurryLogEventMap(name);
}

void Flurry :: SetUniqueUserID()
{
        if(!Flurry::log_error)
                Flurry :: SetUserID(s3eDeviceGetString(S3E_DEVICE_UNIQUE_ID));
}
#endif
...