노력과 삽질 퇴적물
ANE: 안드로이드용 AIR 개발설정 본문
0. 필요한 파일
파일명 |
예시 경로 |
JDK(Java Developement Kit) SE | C:\Java\jdk1.7 |
이클립스 | C:\eclipse |
안드로이드 android-sdk | C:\android-sdk-windows |
안드로이드 개발 툴킷(ADT) | (이큽립스 플러그인) |
플래시 빌더 | C:\Program Files\Adobe\Adobe Flash Builder 4.6 |
FlashRuntimeExtensions.jar (xocode에서는 FlashRuntimeExtension.h) | (이클립스 프로젝트)\lib\FlashRuntimeExtensions.jar (4.6기준으로 C:\Program Files\Adobe\Adobe Flash Builder 4.7\sdks\4.6.0\lib\android에서 찾아볼수 있습니다.) |
0. 설치하기 & 기본세팅
안드로이드: 개발환경 구축 참조.
1. 네이티브 코드, 이클립스
① 클래스 작성
->총 3가지 종류의 클래스가 필요하다.
xxxExtension |
xxxContext |
xxxFunction |
1개만 필요. xxxContext를 상속한 객체 반환 |
1개만 필요. getFunctions()에서 as에 연동할 함수명을 문자열로 지정. (함수에 태그명 붙이기?) |
1개 이상 생성 가능. call함수에서 사용하고자 하는 순수 안드로이드 기능등을 구현. |
... ... ... public class NativeExtension implements FREExtension if (context == null) _context = new NativeContext(); ... ... ... (xxxFunction에서 사용할 함수) ... ... ... | ... ... ... public class NativeContext extends FREContext implements ... ... ... ... | ... ... ... public class NativeFunc1 implements FREFunction ... ... ... |
② JAR export
안드로이드 API함수말고 jat로 된 외부라이브러리를 사용해야 할 경우,
(FlashRuntimeExtensions.jar 제외)대상이 되는 라이브러리 파일을 압축해제(파일명 경로 생성X / 그냥풀기O)를 하고 해당 폴더와 방금 export시킨 jar파일을 같은 폴더 경로에 넣고 CMD등으로 [jar -uf]명령어를 사용합니다.
예. jar -uf text.jar unzipedFolder
(META-INF는 안 해도 무관한거 같습니다.)
2. 플래시 빌더
!!!주의사항!!!
프로젝트 생성시, Library Project를 확인해야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // (프로젝트 폴더)\src\air\analoggreen\AndroidLibrary.as package air.analoggreen { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.StatusEvent; import flash.external.ExtensionContext; public class AndroidLibrary extends EventDispatcher { private static var context:ExtensionContext = null; private var errStr:String; public function ExtensionAPI() { if(context == null) context = ExtensionContext.createExtensionContext("air.analoggreen.AndroidLibrary", null); } public function getAndroidAPI(command:int, msgArr:Array=null):void { context.addEventListener(StatusEvent.STATUS, onStatus); if(command == 0) { context.call("androidToast", msgArr); } else if(command == 1) { context.call("androidVibrate", msgArr); } else if(command == 2) { context.call("androidAlert", msgArr); } ... ... ... } private function onStatus(e:StatusEvent):void { dispatchEvent(new Event(e.code)); context.removeEventListener(StatusEvent.STATUS, onStatus); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- (프로젝트 폴더)\bin\extension.xml --> <extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>air.analoggreen.AndroidLibrary</id> <versionNumber>1</versionNumber> <platforms> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>androidNative.jar</nativeLibrary> <!-- 네이티브 코드 패키지경로 --> <initializer>com.analoggreen.androidNative</initializer> <finalizer>com.analoggreen.androidNative</finalizer> </applicationDeployment> </platform> </platforms> </extension> |
3. ANE빌드
플래시 빌더에서 빌드하면 필요한 ANE파일이 생성될테지만, 에러가 빈번해서 BAT을 이용한 수 빌드 방식을 사용했습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | : (프로젝트 폴더)\create_ane.bat set adt_directory=C:\Program Files\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\bin set root_directory=C:\workspace-flash\Adobe Flash Builder and ANE set library_directory=%root_directory%\androdiANE set native_directory=%root_directory%\androidAne\lib set signing_options=-storetype pkcs12 -keystore "C:\workspace\androidANE\cret.p12" -tsa none set dest_ANE=AndroidANE.ane set extension_XML=%native_directory%\extension.xml set library_SWC=%library_directory%\AndroidLibrary.swc "%adt_directory%"\adt -package %signing_options% -target ane "%dest_ANE%" "%extension_XML%" -swc "%library_SWC%" -platform Android-ARM -C "%native_directory%" . pause |
4. 액션스크립트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package { import air.analoggreen.AndroidLibrary; import flash.display.Sprite; import flash.events.Event; public class ANE_test extends Sprite { private var andLib:AndroidLibrary; public function TestToast() { super(); andLib:AndroidLibrary = new andLib:AndroidLibrary(); ... ... ... } private function onClick(e:Event):void { andLib.getAndroidAPI(0, new Array("test_for_toast")); andLib.getAndroidAPI(1); ... ... ... } } } | cs |
기타. 참고자료
YeonMee's Tistory :: ANE 관련 정리 자료
남자는 코딩 :: AIR Native Extension - ANE 만들기 for Android
Adobe Flash Builder 4.5 - AIR로 iOS, 안드로이드 어플을 개발하자. -지돌스타 - 쿠키랩 블로그-
Android용 ANE 라이브러리 만들기 | sewonist.com
mateuszmackowiak/NativeDialogs · GitHub
Another Boy's Blog - 아는것 보다 할수 있는게 더 많은 사람이 되고파라 :: Adobe AIR로 안드로이드 게임 만들기 -6편
Freshplanet · GitHub
How to debug your Android ANE | DiaDrawDiaDraw
기타. 변경이력
일자 |
변경이력 |
2013-11-28 | 초안 |
'📂게임개발 note > 모바일 개발' 카테고리의 다른 글
안드로이드: 구글 애드몹 (3) | 2014.11.21 |
---|---|
안드로이드: 셀프서명하기 (0) | 2014.03.26 |
안드로이드: 사용자 정의 탭뷰 (0) | 2013.09.26 |
에러: 안드로이드 마켓 등록용 어플 주의사항. (0) | 2013.04.30 |
안드로이드: cocos2d-android (3) (0) | 2013.04.10 |