Skip to main content
Participant
May 22, 2013
Question

Need help with C++ native extension for Android

  • May 22, 2013
  • 1 reply
  • 691 views

Hello!

I'm trying to build and launch sample native extension written with C++ on Android device.

But thre

I have:

1) Code of native library:

-----------

#include "FlashRuntimeExtensions.h"

#include <stdint.h>

#include <stdlib.h>

#include <string.h>

 

FREObject nativeFunction(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])

{

          uint32_t length = 12;

          const uint8_t* value = (const uint8_t*)"Hello from C";

 

          FREObject retObject;

          int res = FRENewObjectFromUTF8(length, value, &retObject);

          if (res == FRE_OK) {

                    return retObject;

          } else {

                    return NULL;

          }

}

void ContextInitializer(void *extData, const uint8_t *ctxType, FREContext ctx,

                        uint32_t *numFunctionsToSet,

                        const FRENamedFunction **functionsToSet)

{

          FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*1);

          func[0].name = (const uint8_t*)"nativeFunction";

          func[0].functionData = NULL;

          func[0].function = &nativeFunction;

          *functionsToSet = func;

}

void ContextFinalizer(FREContext ctx)

{

          return;

}

void NativeCppExtensionInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet,

                                   FREContextFinalizer* ctxFinalizerToSet)

{

  extDataToSet = NULL;

  *ctxInitializerToSet = ContextInitializer;

  *ctxFinalizerToSet = ContextFinalizer;

}

void NativeCppExtensionFinalizer(void* extData)

{

   return;

}

-----------

2) ActionScript Library with Extension class:

package com.adobe.hellojni

{

    import flash.external.ExtensionContext;

    public class HelloJniExtension

    {

        private static var context:ExtensionContext;

       

        public static function init():void {

            if (!context) {

                context = ExtensionContext.createExtensionContext("com.adobe.canewithjava", null);

            }

        }

       

        public static function stringFromJNI():String {

            if (context) {

                return context.call("stringFromJNI") as String;

            }

            return null;

        }

       

    }

}



This topic has been closed for replies.

1 reply

Known Participant
May 22, 2013

You only have "nativeFunction" declared in the extension. But you're calling "stringFromJNI" instead.

Participant
May 22, 2013

I do not have time to finish this topic.

The full problem described in http://forums.adobe.com/thread/1217167