2번째 포스팅입니다..
MS WORD로 작성하다보니.. 일부분 깨지네요..ㅎㅎ 그래서 파일로도 올려 놓겠습니다. 깨지는게 귀찮으신 분들은 파일로 보셔요.
이제 플래시 빌더로 넘어가겠습니다.
플래시빌더에서 새로운 FLEX library를 선택하셔야 합니다.
여기에서 주의하여야 할 점은 Include Adobe Air Libraries 를 체크해 주셔야 합니다.
클래스를 생성합니다.
그리고 다음과 같이 구성했습니다. 자 여기서 보셔야 할 부분은 context 부분입니다. 우리가 부르는 context 여기에서는 우리가 android에서 만든 녀석이 되겠습니다…
그리고 이름 부분은 id가 되는데요 ANE의 ID가 됩니다. 이름을 막 정해놓은 것입니다.. 다른 것이랑 맞출 필요는 없고… 나중에 빌드단에서 맞춰야 할 부분이라고 생각하시면 됩니다.
그리고 toast라는 함수의 경우에는 우리가 as에서 부르는 함수의 이름입니다. 저녀석을 부르게 되면 context.call 이라는 메소드를 부르게 되는데요. 이때! 우리가 만들어 놓았던 녀석이 불리게 됩니다.
Java 코드를 다시 보면..이녀석이 되겠지요. 우리가 만들어놓은 이녀석이 가게 됩니다. 즉.. AS의 context는 반환 받는 것이 바로 요녀석이 됩니다. 이해 되시나요? 그리고 call을 하게 되면.. 우리가 정의했던 map 에서 call의 첫번째 매계변수에 해당하는 녀석을 key 값으로 찾고.. 그 값을 돌려주게 됩니다. 이때 돌려주는 녀석이 바로 MakeToast 객체가 됩니다.
MakeToast의 인자를 살펴보면 처음 녀석은 FREContext가 되고 두번째가 FREObject 였습니다. 우리가 call("makeToast", message); 라고 했을 때 두번째 녀석인 message가 FREObject로 전달되게 되는 것이지요.
어렵나요?^^?
그리고 bin 폴더에가 보면 swc파일이 생성되어 있는 것을 확인할 수 있습니다. 만약 되어있지 않다면 직접 빌드를 해 주세요.
자 이제 대부분이 만들어 졌습니다. 이제는 패키징하는 과정이 남아있는데요.
패키징에는 extension descriptor file 이 필요합니다. Xml로 되어있구요. 익스텐션의 정보를 저장합니다. 예를 들면 id나 이름 버전, 플랫폼 같은 것들이 들어갑니다…예를 들면 이런거요.
<extension xmlns="http://ns.adobe.com/air/extension/3.5"> <id>com.example.MyExtension</id> <versionNumber>0.0.1</versionNumber> <platforms> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>MyExtension.jar</nativeLibrary> <initializer>com.sample.ext.MyExtension</initializer> </applicationDeployment> </platform> <platform name="iPhone-ARM"> <applicationDeployment> <nativeLibrary>MyExtension.a</nativeLibrary> <initializer>MyExtensionIntializer</initializer> </applicationDeployment> </platform> <platform name="default"> <applicationDeployment/> </platform> </platforms> </extension> |
이런 것들이 들어가게 됩니다.
보시면.. 일단 id와 버전은 공통으로 들어가게 됩니다. 그다음은 플랫폼인데요. 플랫폼에서는 각 플렛폼마다 어떤녀석이 들어가는지에 대한 정보가 들어있습니다.
기본적으로 라이브러리 initializer finalizer 같은 것들이 들어가는데요. 우리는 직접 작성해 보도록 하겠습니다.
경로는 저 같은 경우에는 bin 폴더에 같이 생성을 해 버립니다..ㅡㅡ; 여러분 취향에 따라서 하실 수 있으실꺼에요.
일단 제 경우에는 이렇게 작성하겠습니다.
아까 작성했던 jar 파일을 bin 폴더에 넣어버렸구요.. 그담에 extension.xml 이라는 파일을 일단 생성해 두었습니다.
그 xml 파일을 이렇게 작성하도록 하겠습니다.
Xml 을 작성하실 때 주의해야 할 점 2가지 입니다. 일단 … id 부분은 우리가 작성했던 as 부분의 id 와 동일하게 해 주어야 합니다. 그리고 initializer와 finalizer의 경우에는 우리의 java 코드에서의 패키지 네임과 FREExtension 클래스 네임까지 정확하게 작성해 주셔야합니다.
사실 finalizer는 왜 하는지 정확하게 모르겠네요..ㅡㅡ;; 외쿡 스택 오바 플로우 에 물어봐도 잘 모르겠습니다..;;
자 이제 패키징의 과정많이 남았는데요. 커맨드 라인으로 처리할 수 있지만.. 저는 실력이 없는 초보 코더이기 때문에 적절히 build.xml을 이용하여 빌드하도록 하겠습니다. Bin 폴더 안에 똑같이 build.xml 을 만들도록 하죠..
Sdk_path 맞춰주시구요… 거기에 맞춰서 adt 도 맞춰주면 됩니다.
그 후에 unzip 의 경우에느느 swc에서 libarary.swf 가 필요한데요 이것 역시도 자동으로 만들어 주게 되어 있습니다.
그다음에는 ane 부분에서 ane 이름을 정해주시면 됩니다. Extension.xml 의 경우 우리가 이미 만들었고 같은 폴더에 있으니 넘어가고..
MakeToast.swc의 경우에는 우리의 bin 폴더에 들어있으니 패스~ 그다음에 마지막으로 jar 파일도 역시 bin 폴더 에 들어 있으니 다음과 같이 해서 f11을 누르면 다음과 같은 창이 생성됩니다.
Ane 빌더를 선택해서 ok를 누르면
이렇게 성공했다고 나옵니다^^
자 이제 끝났습니다.
그리고 ane를 적용해 보면 되는데요..
새로운 모바일 프로젝트를 생성하고 다음과 같이 생성하죠..
요기에서 Add ANE를 선택해서 붙여넣으면..
X표가 두둥! 뜹니다만.. x표가 뜨는 이유는 데스크탑 환경에서 지워너하지 않는 녀석이기 때문에 그렇습니다.
그냥 넘어가죠!
그담에 프로퍼티에 가서 다음과 같이 체크합시다.
Build package 에서 google Android 에 Native Extensions에 패키지에 체크 그담에 OK 하시면 됩니다.
그리고 소스는…
이렇게 해 주시면…됩니다.
간단하죠?
자 그러면 이제 직접 실행해 봐야 하는데요. ANE의 경우에는 꼭 device에 테스트를 해 주어야 한다는 문제가 있습니다. 물론 에뮬레이터 역시도 가능할 겁니다.
실행해 보시면 다음과 같이 나타날 겁니다..
네. 요렇게요. ㅎ
간단하죠?
이렇게 ANE를 만들면 되겠습니다.
여기서 2장을 마치구요…
다음 장에서는 우리가 값을 보내기만 했기 때문에 값을 받는 것은 어떻게 하는지 해보겠습니다^^
'Flash with Adobe AIR' 카테고리의 다른 글
Starling-Hungry Hero-05 (0) | 2015.02.16 |
---|---|
Starling-Hungry Hero-04 (0) | 2015.02.16 |
Starling-Hungry Hero-03 (0) | 2015.02.16 |
Starling-HungryHero-02 (0) | 2015.02.16 |
ANE for Android – 1 (0) | 2015.02.11 |