ラベル ANEtty の投稿を表示しています。 すべての投稿を表示
ラベル ANEtty の投稿を表示しています。 すべての投稿を表示

2013年3月28日木曜日

ANEでnative twitterを利用する ANEtty編

ANEtty 1.0.1 Previewを利用します。設定は以下のように行います

ExtInfo(General)
ProjectTitle
NativeTwitter

ExtensionID
com.palDeveloppers.ane.NativeTwitter

VersionNumber
1.0.1

ANE-Interface-SWC
/(NativeTwitterプロジェクトライブラリパス)/bin/NativeTwitter.swc

ANE Export Path
/(NativeTwitterプロジェクトライブラリパス)/bin/NativeTwitter.ane

ANE Version
3.6

エラーダイアログについて
ディレクトリパスを設定する際に、稀にこのようなエラーが表示されます
この場合は...ボタンの隣にあるresetボタンを1度押すとエラーは出なくなります

Platforms 
General

NativeLibraryPath
/(NativeTwitterプロジェクトライブラリパス)/bin/libNativeTwitter.a

Initializer
NativeTwitterExtInitializer

Finalizer
NativeTwitterExtFinalizer

PlatformOption
Use PlatformOption for iOSにチェックを入れる
iOSフレームワークライブラリを追加する必要があります
詳細はネイティブライブラリの構築(リンク先へ)をご覧下さい


SDK Version
6.0

LinkerOptions

-framework Twitter
-framework Accounts
-liconv


PlatformOption Setting - Optional
Description(Optional)
NativeTwitter
Copyright(Optional)
2012 PalDeveloppers

最後に、Compileボタンを押してaneファイルを作成します

ANEでnative twitterを利用する

native twitterをANEを通して利用してみます。

native twitterサンプルアプリ画面
開発環境
MacOS 10.7.5
XCode 4.6
FlashBuilder 4.6
ANEtty 1.0.1 Preview(リンク先へ)
nativetwitter-ane(リンク先へ)




ANEttyでnative twitterを試してみる


ANEtty 1.0.1 Previewを利用して、native twitterのサンプルを動作させてみました。
 
1.ANEでnative twitterを利用する(リンク先へ)

2.ANEでnative twitterを利用する XCode編(リンク先へ)

3.ANEでnative twitterを利用する SWC編(リンク先へ)

4.ANEでnative twitterを利用する ANEtty編(リンク先へ)

5.ANEでnative twitterを利用する ビルド編(リンク先へ)

6.ANEでnative twitterを試してみる(リンク先へ)

2012年6月29日金曜日

as3でサンプルファイルを作成する

ActionScript モバイルプロジェクトを選択します。
プロジェクト名は、HelloWorldMobileにします。
作成したSWCファイルを追加します。
作成したANEファイルを追加します。

package {
 import example.ane.HelloWorldExtension;

 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.text.TextField;
 import flash.text.TextFormat;

 [SWF(width = '320', height = '480', backgroundColor = '#000000', frameRate = '60')]//iPhone3GS
 public class HelloWorldMobile extends Sprite
 {
  private var _text:TextField;
  private var extension:HelloWorldExtension = new HelloWorldExtension();

  public function HelloWorldMobile()
  {
   super();
   stage.align = StageAlign.TOP_LEFT;
   stage.scaleMode = StageScaleMode.NO_SCALE;
   addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
  }

  protected function addedToStageHandler(event:Event):void
  {
   removeEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
   main();
  }

  private function main():void
  {
   //Button
   var blueBox:Sprite = box(0x0000ff,100,32);
   blueBox.addEventListener(MouseEvent.CLICK,blueBoxClickHandler);
   addChild(blueBox);
   //Text
   _text = textField();
   _text.width = stage.stageWidth;
   _text.y = blueBox.height;
   addChild(_text);
  }

  protected function blueBoxClickHandler(event:MouseEvent):void
  {
   _text.text = extension.getHelloWorld();
  }

  private function box(color:uint,_width:Number,_height:Number=0):Sprite
  {
   _height ||= _width;
   var _sprite:Sprite = new Sprite();
   _sprite.graphics.beginFill(color);
   _sprite.graphics.drawRect(0,0,_width,_height);
   _sprite.graphics.endFill();
   return _sprite;
  }

  private function textField():TextField
  {
   var textFormat:TextFormat = new TextFormat();
   textFormat.color = 0xffffff;
   textFormat.size = 24;
   textFormat.font = "DroidSans";

   var textField:TextField = new TextField();
   textField.defaultTextFormat = textFormat;

   return textField;
  }
 }
}
ビルドに成功したら、次はリリースビルドを行いipaファイルを作成します。
ipaファイルを作成する為に
電子署名ファイルの設定ネイティブエクステンションの設定を行います。

ipaファイルが正常に出力したらiOS端末で試してみましょう。

ANEttyでaneファイルを作成する

項目が必要な箇所は

ExtensionID example.ane
VersionNumber 1.0.0
SWC Path (swcをビルドしたファイルパス)
Export Path (aneを出力するファイルパス)
PlatformiPhone-ARMにチェックを入れます
iPhone-ARMの設定として
NativeLibraryPath (.aファイルを出力したファイルパス)
Initializer ExtInitializer
Finalizer ExtFinalizer

になります。

項目が必要な箇所は

ADTPath (air3.3のadtファイルパス)
CertificationFile Path (証明書ファイルを作成したパス)
Certification Password (証明書ファイルのパスワード)
証明書ファイルはCreate New Certifiacation Fileボタンまたは、
FlashBuilderでも作成する事ができます。

設定が終了したら、Start Compileボタンを押します。

.aファイルを作成する

CocoaTouchStaticLibraryを使用します。
下記ソース FlashRuntimeExtensions.hをインクルードします。
このファイルはFlashBuilder4.6includeディレクトリにあります。 
例)/Applications/Adobe Flash Builder 4.6/sdks/air3_3/include
HelloWorldANE.h
一行目の表示は#import <Foundation/Foundation.h>になります。
#import 
#import "FlashRuntimeExtensions.h"

@interface HelloWorldANE : NSObject

@end

FREObject GetHelloWorld(
                        FREContext ctx,
                        void* funcData,
                        uint32_t argc,
                        FREObject arg[]
                        );

void ContextInitializer(
                        void* extData,
                        const uint8_t* ctxType,
                        FREContext ctx,
                        uint32_t* numFunctionsToTest,
                        const FRENamedFunction** functionsToSet
                        );

void ContextFinalizer(FREContext ctx);

void ExtInitializer(
                    void** extDataToSet,
                    FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet
                    );

void ExtFinalizer(void* extData);
HelloWorldANE.m
#import "FlashRuntimeExtensions.h"
#import "HelloWorldANE.h"

@implementation HelloWorldANE

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}

@end

FREObject GetHelloWorld(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
    
    const char *str = "HelloWorld";
    
    FREObject retStr;
    FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &retStr);

    return retStr;
}

void ContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx,
                        uint32_t* numFunctionsToTest, const FRENamedFunction** functionsToSet) {
    *numFunctionsToTest = 1;
    FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*1);
    func[0].name = (const uint8_t*)"GetHelloWorld";
    func[0].functionData = NULL;
    func[0].function = &GetHelloWorld;
    
    *functionsToSet = func;
}

void ContextFinalizer(FREContext ctx) {
    return;
}

void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet) {
    *extDataToSet = NULL;
    *ctxInitializerToSet = &ContextInitializer;
    *ctxFinalizerToSet = &ContextFinalizer;
}

void ExtFinalizer(void* extData) {
    return;
}

SWCを作成する

プロジェクト名:HelloWorldExtensionで作成します。
SDKAIR 3.3を使用します。
package example.ane
{
 import flash.events.EventDispatcher;
 import flash.external.ExtensionContext;
 import flash.system.Capabilities;

 public class HelloWorldExtension extends EventDispatcher
 {
  private var context:ExtensionContext;

  public function HelloWorldExtension()
  {
   context=ExtensionContext.createExtensionContext("example.ane", "type");
  }

  public function getHelloWorld():String
  {
   try{
    return context.call("GetHelloWorld") as String;
   } catch(e:Error){
   }
   return null;
  }

  public function dispose():void
  {
   return context.dispose();
  }
 }
}

FlashBuilder4.6とAnettyでiOSで動くANEサンプルアプリを作成する

1.サンプルアプリの内容
Spriteで作成した青い矩形をタッチした時にその下にHelloWorldと表示します。
FlashBuilder上でデバッグ起動をしても、落ちてしまいますので注意して下さい。

2.環境
AIR 3.3を使用します。
実行環境 MacOSX 10.7.4
開発環境 FlashBuilder 4.6
開発環境 XCode Version 4.3.1
ANE作成支援ツール ANEtty 0.0.3
iOS Developer Programに参加している必要があります。

3.参考にさせて頂いたホームページ
Flash Builder 4.6でネイティブ拡張(Native Extensions)を使ってみよう (リンク先へ)
ANE制作ツール「ANEtty」(リンク先へ)