'강좌/FLASH/AS3.0'에 해당되는 글 1건

AIR3 네이티브익스텐션 파일 제작법

강좌/FLASH/AS3.0

이 튜토리얼은 간단한 코드를 사용하여 어도비 AIR에 대한 자신의 기본 확장 기능을 만들기에 대해 소개합니다.
당신에게 코드와 모든 네이티브 확장 (AIR, 액션 스크립트 3, 플래시 빌더)에 걸쳐 일반적인 과정을 보여주는 이외에도
이 튜토리얼은 "안드로이드 플랫폼"에서의 네이티브 코드 컴파일을 다룹니다.


P.S 본 튜토리얼의 원문은 http://www.adobe.com/kr/devnet/air/articles/developing-native-extensions-air.html 이며
원문글 구글번역기로 돌리고 소스까지 번역된부분을 원본 소스로 바꾸었으며 한글로 번역된부분중 어색한부분을 고치는
식으로 번역되었습니다. 이작업은 아직 "현재 진행형" 이므로 보시는데 어려움이 있을수 있습니다.
지금은 원문과 비교해가며 보는것이 좋습니다.

시작하기 전에

이 튜토리얼을 최대한으로활용하려면 다음의 소프트웨어가 설치되어야합니다. 

  • 플래시 빌더 4.6 ( prelease 가입 )
  • 모바일 디바이스용 어도비 AIR 3 (플래시 빌더에 포함) (AIR2.5 or higher for Adobe AIR for TV-based extensions)
  • 어도비 플렉스 4.6 (플래시 빌더에 포함)
  • 확장 (lib/android/FlashRuntimeExtensions.jar 아래의 AIR 3 SDK에 포함) 

당신은 또한 다음이 필요합니다

  • 디바이스 테스트 안드로이드 장치.

    당신은 다른 플랫폼을 사용하도록 선택할 수 있지만이 가이드의 네이티브 코드 부분에서 설명하는 단계는 자신의 기본 빌드 환경을 유지하는 것이 필요합니다.

  • JDK와 안드로이드 SDK.

Native Extensions 은 무엇입니까?

어도비 AIR 애플리케이션 개발자는 AIR 기본 확장으로 알려진 도구 와 함께 런타임의 기능을 확장할 수 있도록 허용했다.
이 기능은 AIR2.5로 시작하는 TV 용 AIR에 대해 활성화되어 있었지만, 이제는 모바일 및 데스크탑 플랫폼에서
작동할 수 있도록 확장되었습니다.

네이티브 확장을 사용하면 응용 프로그램은 런타임 자체가 지원하지 않아도 플랫폼의 모든 기능에 액세스할 수 있습니다.

//현재 여기까지 번역수정이 완료되었습니다. 


이 지점을 설명하려면 안드로이드 장치에 응용 프로그램을 작성하는 상상, 그리고 응용 프로그램이 다운로드를 완료했을 때 휴대폰을 진동 싶습니다. 네이티브 확장 지원이 없다면, 여러분은 자바로 전체 프로그램을 코드를 가지고, 또는 AIR를 사용하여이 작업은 불가 능할 것이라고 받아 들이지. 기본 확장명을 가진 그러나, 당신은 그것이 가능하여 응용 프로그램이 진동 모터를 제어하기 위해 만들어 앞뒤로 지침을 전달할 수 있도록 네이티브 코드와 자신의 애플 리케이션 로직 사이에 걸쳐있는 다리를 만들 수 있습니다. 그런 다음 IOS에이 같은 응용 프로그램을 배포하고, 목표 - C 코드를 포함하여 고유의 확장 기능을 확장하는 공기의 멀티 플랫폼 지원을 활용할 수 있습니다. 너가 진동 기간 및 애플 리케이션이 안드로이드 또는 IOS에서 실행되고 있는지 패턴을 바꿀 수 있도록 플랫폼 알고 있어야하는 원시 코드를 변경할 수 있습니다.

네이티브 확장하면 장치의 독특하고 플랫폼에 특정 기능을 활용하여 수 있도록, 그들은 또한 액션 스크립트 애플 리케이션에서 네이티브 코드를 사용할 수 있도록, 기존의 플랫폼 코드를 재사 용할, 여러분의 애플 리케이션 '처리 능력을 높이기 위해 스레드에서 작업을 수행하고,에 대한 액세스를 제공 네이티브 플랫폼 라이브러리. 네이티브 확장은 다른 모든 액션 스크립트 라이브러리처럼 포장하고 배포합니다 : 당신이 자신의 애플 리케이션 기능에 연결할 수 있도록뿐만 아니라, 다른 개발자에 의해 출판 네이티브 확장을 사용하여 자신의 라이브러리를 배포할 수 있습니다.

어도비는 개발자가 위의 기능을 시작하는 데 도움이됩니다 몇 가지 완벽하게 문서화 네이티브 확장 예제를 제공합니다.

시작하기

이 튜토리얼은 여러분 자신의 고유의 확장 기능을 만드는 시작할 수 있습니다. 당신은 또한 기본 확장명으로 작동 플렉스 모바일 응용 프로그램을 만드는 방법을 배우게됩니다, 그리고 마지막으로 당신이 끝나고, 그것은 네이티브 안드로이드를위한 Java 코드, 액션 스크립트 3 코드와 네이티브 확장 파일을 만들 requried 단계로 해줄께 귀하의 장치에 그것을 테스트합니다. 이것은 "안녕, 월드!"이지만 튜토리얼, 우리는 원시 코드를 통해 일반적인 메시지를 인쇄 피하다, 대신 안드로이드 스마트폰의 진동 모터를 제어하기 위해 선택할 겁니다. 당신이 (또는 다른 플랫폼을 타겟팅할) adventerous 느끼면 당신은 비 안드로이드 플랫폼에 맞게이 가이드의 원시 코드 섹션을 적응하도록 선택할 수 있습니다.

다음은 다음 페이지에 착수한다는 높은 수준의 단계는 다음과 같습니다

네이티브 코드를 생성

  1. 플래시 빌더 4.6에서 안드로이드 개발 환경을 설정합니다.
  2. 당신의 안드로이드 장치를 연결하고 테스트합니다.
  3. 네이티브 안드로이드 프로젝트를 만듭니다.
  4. 확장 컨텍스트를 만드는 Java 코드를 만듭니다.
  5. 액션 스크립트 3로 다시 연결하는 Java 코드를 만듭니다.
  6. 코드를 컴파일합니다.

액션 스크립트 3 코드를 생성

  1. 플래시 빌더 4.6에서 ActionScript를 3 라이브러리 프로​​젝트를 설정합니다.
  2. 당신의 자바 코드에 코드 다리입니다.
  3. 당신의 안드로이드 휴대폰을위한 플렉스 모바일 프로젝트를 설정합니다.

함께 네이티브와 액션 스크립트 3을 묶는,. ANE 파일 만들기

  1. 인증서를 처리할 수 있습니다.
  2. 대서양 서머 타임 명령을 사용합니다.
  3. 귀하의 플렉스 애플 리케이션이 새. ANE 파일을 사용하도록 수정.

모국어 확장 기능을 테스트

귀하의 기본 확장 기능이 작동하는지 증명!

네이티브 코드를 생성

기본 확장자의 핵심은 응용 프로그램 및 제어하려는 기능 사이의 첫 번째 레이어 역할을합니다 원시 코드입니다. 이 예제에서는 네이티브 코드는 진동 모터를 제어할 수 있으며 액션 스크립트 3에서 정보를 보내고받을 수 있습니다. 당신은 진동 모터를 직접 제어하는​​ 기능을 쓸 테니 당신은 액션 스크립트 3로 앞뒤로 데이터를 전송하기 위해 어도비 AIR에서 제공하는 자바 API를 사용합니다.

당신이 라이브러리를 코딩하고 사용을 시작하기 전에, 그러나, 당신은 빌드 환경을 설정해야합니다.

플래시 빌더 4.6을 사용하여 안드로이드 개발 환경 설정하기

당신이 네이티브 안드로이드 코드를 작성 할 것이기 때문에, 당신은 안드로이드 SDK와 함께 작동할 수있는 개발 환경이 필요합니다. 당신이 이미하지 않았다면, 설치하고이 안내서의 시작 부분에 포함된 링크를 따라 안드로이드 SDK를 구성합니다. 일단 이것이 완료되면, 당신은 안드로이드 프로젝트를 생성하고 컴파일 플래시 빌더를 수정합니다 :

  1. 오픈 플래시 Builder와 도움말하기> 새로운 소프트웨어 (OS X에서 플래시 빌더가> 창> 설치 새 소프트웨어)를 설치 이동하십시오. (필요한 경우 폐쇄하고 관리자 권한으로 플래시 작성기를 다시 시작.)
  2. 상자 작업에 구글의 공개 대서양 서머 타임 소프트웨어 저장소에 대한 경로를 입력 https://dl-ssl.google.com/android/eclipse/ . 추가를 클릭하고 저장소 이름을 지정 구글 대서양 서머 타임을 .repostiory을 추가하려면 확인을 누릅니다.
  3. 플래시 Builder는 사용 가능한 소프트웨어의 목록을 다운로드합니다. 안드로이드 DDMS, 안드로이드 개발 툴, 안드로이드 연혁 뷰어, 그리고 안드로이드 Traceview 포함한 모든 개발자 도구를 설치합니다. 두번 EULAs을 검토하고 동의 여부를 결정하고, 패키지가 설치 기다릴 다음을 클릭합니다. 안드로이드 패키지 중 일부는 서명되지 않은 내용을 포함하고 있지만 관계없이 설치를 계속합니다.
  4. 메시지가 나타나면 플래시 빌더를 다시 시작합니다.
  5. 당신은 안드로이드 SDK의 위치에 플래시 빌더를 가리 키도록해야합니다. 창으로 이동> 환경 설정 (플래시 빌더> OS X에서 환경 설정)을 클릭 안드로이드. 찾아보기를 클릭하고 안드로이드 SDK의 루트 위치를 선택합니다 (예 : C : \ 사용자 \ 댄 \ 프로그램 \ 안드로이드-SDK). 당신이 안드로이드 SDK의 구성 요소를 누락하는 경우 안드로이드 SDK 관리자를 실행하고이를 설치하는 명령을 받게됩니다. SDK의 최신 버전을 선택하고 확인을 누릅니다.
  6. 창> 안드로이드 SDK 및 AVD 관리자를 클릭합니다.
  7. 사용 가능한 패키지로 이동하고 최신 안드로이드 SDK 및 API 패키지를 가지고 있는지 확인하기 위해 최신 Google 주식 패키지를 선택합니다. 당신은 또한 장치에 따라 USB 드라이버를 설치하는 것이 좋습니다.
  8. 이 창을 닫습니다. 이제 파일> 새 프로젝트를 클릭하고보고 안드로이드 프로젝트에 대한 항목 수 있어야합니다. 그렇다면 플래시 빌더가 제대로 구성됩니다.

연결 및 당신의 안드로이드 장치를 테스트

그것이 코드를 작성의 세부 사항으로 이동하려면 끌리긴했지만, 그것은 지금 여러분의 휴대폰에 연결할 수 있는지 확인하는 경우 나중에 번거로움을 저장거야, 그리고 안드로이드 SDK에 의해 인정되고 있습니다.

  1. 당신의 안드로이드 장치를 연결
  2. 장치에서 그 개발 모드 설정> 응용 프로그램> 개발을 포기하고 "USB 디버깅"확인란에 체크가있을함으로써 활성화되어 있는지 확인합니다.
  3. 필요한 경우, 드라이버를 설치할 수 있도록 컴퓨터에 대화 상자를 통해 클릭합니다. 윈도우에서는 android_sdk \ usb_driver 폴더에있는 드라이버를 선택하는 것이 좋습니다.
  4. 명령 프롬프트 또는 터미널을 열고 "ADB 장치"를 실행합니다.
  5. 귀하의 장치 ID가 목록에 나타납니다. 그렇지 않은 경우 귀하의 휴대 전화와 협력 ADB 점점 온라인 가이드를 따르십시오. 그 명령은 "명령을 찾을 수 없습니다"또는 유사한 오류를 생성하는 경우 시스템의 PATH 환경 변수에 android_sdk \ Tools 폴더의 위치를​​ 추가하고 다시 시도하십시오.

새로운 안드로이드 프로젝트를 생성

우리는 이제 플래시 작성기에서 새로운 안드로이드 프로젝트를 생성해야하고, AIR SDK와 함께 제공되는 자바 API의 JAR 파일을 찾도록 링커에 지시합니다.

  1. 플래시 빌더에서,> 새로 만들기> 프로젝트를 파일 이동합니다.
  2. 안드로이드 프로젝트를 선택하고 다음을 클릭합니다.
  3. 프로젝트 이름 HelloANENative을 .
  4. (당신이 원한다면 당신은 또한 위치를 변경할 수 있습니다) 프로젝트 위치를 적어 둡니다.
  5. 해당 빌드 타겟에 대해 최근 안드로이드 SDK를 선택하십시오. 당신이 원하는 목표를 보이지 않으면 이클립스의 안드로이드 SDK 내부를 설치 이전 단계로 돌아가거나 원하는 API 및 대상을 포함하도록 SDK를 업데이 트합니다. 튜토리얼의 나머지는 귀하가 안드로이드 2.3.3을 선택한 이상 -하지만 이것은 다음 지침의 영향을주지해야한다는 가정으로 완료됩니다.
  6. 패키지 이름을 입력 com을 입력합니다. <yourdomain>. example.android.helloANE을 . 예를 들어, com.yourDomain.example.android.helloANE.
  7. 마침을 클릭하십시오.
  8. 플래시 빌더 당신을 위해 HelloANENativeActivity.java 파일을 만든 것입니다. 패키지 탐색기를 사용하여 그것을 여십시오.
  9. 패키지 탐색기에서 HelloANENative 프로젝트를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
  10. 자바 빌드 경로를 입력한 다음 라이브러리를 클릭합니다.
  11. 이제 액션 스크립트 3에서 인터페이스를 허용 자바 API를 추가해야합니다. 외부 단지 추가를 클릭하십시오.
  12. FlashRuntimeExtensions.jar 파일 (파일에 대한 경로는 다음과 비슷한 찾아보기를 선택합니다 : C : \ ... \ 어도비 플래시 빌더 4.5 \ sdks \ 4.5.2 \ LIB \ 안드로이드 \
  13. 프로젝트 propeties 대화 상자를 닫습니다 확인을 누릅니다.

이제 한 프로젝트 구성 작업을 갖습 장치의 진동 제어를 사용할 수있는 권한을 가지고 응용 프로그램을 설정합니다.

  1. AndroidManifest.xml 파일을 엽니다. 당신은 안드로이드 참고 문서 권한 화면이 나타납니다.
  2. 추가 및 용도 권한을 선택한 다음 확인을 누릅니다.
  3. 용도 허가에 대한 속성에서 android.permission.VIBRATE를 선택합니다.
  4. HelloANENative 매니 페스트 파일을 저장합니다.

귀하의 네이티브 코드는 네이티브 테스트 케이스를 만들 결정해야 실행하려면 필요한 권한이있는 것이다 있도록이 단계를 수행했습니다. 이 튜토리얼은 액션 스크립트 3에서 이동하기 전에 네이티브 코드를 테스트하고, 그것을 커버하지 않지만 도움 - 특히 고급 네이티브 확장 될 수 있습니다.

확장 맥락은 무엇입니까?

이제 여러분이 안드로이드 프로젝트가 제대로 구성되었는지, 당신은 액션 스크립트와 자바 네이티브 코드 사이에 다리를 형성 구조에 추가 시작합니다. 이러한 구조의 첫 번째 확장 컨텍스트입니다. 확장 컨텍스트는 세 네이티브 연장 관련 항목 (역시 올리버 골드만의 문서를 참조하십시오까지 포함하는 책임이 있습니다 어도비 AIR를 확장 ) :

  1. 액션 스크립트가 참조할 수있는 이름으로 고유의 기능의 매핑. 이것은 액션 스크립트 코드는 특정 네이티브 함수를 호출할 수 있으며 기본 확장자의 심장이다.
  2. 원시 코드와 AIR 애플 리케이션 사이에 공유되는 ActionScript를 개체에 대한 참조.
  3. 네이티브 코드의 구조에 대한 참조, 어떤은 네이티브 코드에서 액세스할 수 있습니다.

귀하의 기본 확장자가 여러 확장 컨텍스트가있을 수 있습니다, 그리고 당신은 기능을 바탕으로 그들을 분리해야합니다. 이 예제에서는, 당신은 안드로이드의 진동 기능에 액세스할 수있는지도를 제공할 것입니다 하나를해야합니다.

진동 확장 컨텍스트 생성

다음 당신은 새로운 VibrationExtensionContext 클래스를 만들 수 있습니다.

  1. 패키지 탐색기에서 src.com.yourDomain.example.android.helloANE 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기> 클래스를 선택합니다.
  2. com.yourDomain.example.android.helloANE.extensions로 패키지를 설정합니다.
  3. 이름 VibrationExtensionContext로 설정합니다.
  4. com.adobe.fre.FREContext로 슈퍼 클래스를 설정합니다. 이 클래스를 선택하고 찾아보기 버튼을 사용할 수 있습니다. 이것은 어도비가 네이티브 확장 교량 작품을 만들기 위해 제공하는 AIR 자바 API이다.
  5. 새 클래스를 만들려면 마침을 클릭합니다.

: 당신은 두 가지 기능이 당신을 위해 만들어진 것으로 볼 수 (공공 무효 처분) 및 공공지도 <String, FREFunction> getFunctions () . 당신이 생각했을지도 모르지만, getFunctions ()는 당신이 다음에 정의 문자열 사이의 키 - 값 쌍 매핑 (귀하의 액션 스크립트 3 코드에서 참조되는), 그리고 모든 FREFunction 클래스를 반환해야합니다. 어도비에서 제공하는 API는 당신에게 플래시 런타임 확장을 의미합니다 FRE 약어로 시작하는 클래스와 함수를 제공합니다.

함수 매핑 만들기

귀하의 기본 확장자로 함수를 정의하는 첫 번째 단계는 새로 만드는 것입니다 지도 돌아가려합니다. getFunctions () 클래스는 추가 :

@Override public Map<String,FREFunction> getFunctions() { Map<String, FREFunction> functionMap = new HashMap<String, FREFunction>(); return functionMap; }

이것은 빈 HashMap를 생성하지만, 분명히 그것이 비어있다면 매우 유용하지 않습니다. 당신은 구현하는 클래스 정의합니다 각각 세 가지 키 값 쌍을, 매핑 것 FREFunction의 인터페이스를 :

  • isSupported VibrationSupportedFunction로. 이것은 몇 가지 논리를 실행하고 액션 스크립트 3 중 하나가 포함된에 FREObject를 전달합니다 사실 또는 허위를 플랫폼은 진동을 지원하는지 여부에 따라.

    참고 : 항상 액션 스크립트 3 코드가 네이티브 확장 다른 기능을 사용하기 전에 호환성 검사를 할 수 있도록 그것은 최고의 연습.

  • vibrateMe VibrationVibrateFunction로. 이 FREFunction는 진동의 기간을 제어하는 액션 스크립트 3에서 매개 변수를 허용 다음 장치의 실제 진동을 수행합니다.
  • initMe VibrationInitFunction로. 이 함수는 다른 함수가 사용될 준비가되기 전에 원시 코드가 수행하고 초기화 작업을 할 수 있습니다. 이 예제에서는 안드로이드의에 대한 참조 만들겠다 VIBRATOR_SERVICEVibrationVibrateFunction (액션 스크립트 3에서 일명 'vibrateMe ")에 사용됩니다.
  • 의 내부 getFunctions () 클래스, 전화 ) (넣어 사용자에 함수 functionMap의 개체를. 첫 번째 매개 변수는 위의 함수 이름, 그리고 두 번째 매개 변수 (아직 만들어지지 않았습니다) 함수의 새 인스턴스를 나타내는 문자열이 될 것입니다 :
functionMap.put("initMe", new VibrationInitFunction()); functionMap.put("isSupported", new VibrationSupportedFunction()); functionMap.put("vibrateMe", new VibrationVibrateFunction());

세 가지 기능의 첫 번째 : VibrationInitFunction

당신은 세 가지 기능을 정의했습니다. 그 다음 FREFunction 인터페이스를 구현하는 클래스로 작성됩니다. 당신이 전화했을 때, 나중에 장치를 진동하는 데 사용됩니다 귀하의 VibrationExtensionContext에 클래스를 설정됩니다, VibrationInitFunction 시작됩니다.

  1. 패키지 탐색기에서 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기> 클래스를 선택합니다.
  2. 패키지 com.yourDomain.example.android.helloANE.extensions를 만들어 VibrationInitFunction로 이름을 설정합니다.
  3. 단지 java.lang.Object로 슈퍼 클래스를 남겨하고, 인터페이스 상자에 새 항목이 추가 com.adobe.fre.FREFunction합니다.
  4. 마침을 클릭하십시오.

코드 힌트 창이 나타하려면 Ctrl 키를-1에 충돌 여러분이 만드는하고자하는 클래스 (VibrationInitFunction,이 예제의 경우)를 클릭하고 "만들기를 선택 사항 : 이클립스의 코드 생성 기능을 사용하여 위의 단계를 단순화 수 있습니다 수업 VibrationInitFunction. " 이것은 자동으로 클래스를 생성합니다.  

넌 알거야됨에 따라 VibrationInitFunction의 내부 기능은 이미 당신을 위해 정의되었습니다 : 전화 ()를 두 개의 인수 소요되는 : FREContext , 그리고 FREObject [] 배열. 기본적으로 이들과 같이 정의됩니다 arg0 및 arg1,하지만 당신은 그들에게 좀 더 자세한 설명 이름을 줄 수 있습니다. 변경 전화 () 이렇게 보이는 함수 선언 :

public FREObject call(FREContext context, FREObject[] passedArgs)

이 함수가 호출되었을 때, 첫 번째 인수는 VibrationExtensionContext에 대한 참조가 될 것이며, 두 번째 인수는 액션 스크립트 3 코드에 의해 계승 모든 인수 (있는 경우)의 배열이 될 것입니다. 이렇게하면 V​​ibrationVibrateFunction 들어, 어떤 그 배열의 첫 번째 인수에 따라 기간을 설정할 것입니다 중요하다.

지금 들어, 초기화 기능을 사용하도록 전달 기능 FREContext 개체 VibrationExtensionContext을 다음 안드로이드 활동은 그것이 속해 있습니다. 할 것 이 활동 기준 사용하면, 그 다음으로 알려진 글로벌 안드로이드 시스템 서비스를 검색할 수있을 것입니다 Context.VIBRATOR_SERVICE 는 진동 모터를 제어할 수 있습니다. 당신은 곧 만들겠다하는 당신의 VibrationExtensionContext에 포함된 새로운 변수에이 시스템 서비스를 공급할 것이다 :

  1. 에 전화 () 의 함수 VibrationInitFunction 에서 통과되었다 FREContext에서 VibrationExtensionContext 잡기 위해 다음 줄을 추가하십시오 :
VibrationExtensionContext vbc = (VibrationExtensionContext)context;
  1. 이제 VibrationExtensionContext를 사용하여 활동 잡을 수 getActivity () 함수를. FREContext 클래스에서이 함수의 포함은 같은 맥락의 받아 귀하의 필요와 같은 일반적인 작업 지원하도록 설계되었습니다 활동을 , 그래서 우리가 필요한 SystemService에 대한 경로를 가지고 있습니다.
Activity a = vbc.getActivity();
  1. 이제 부를 수 a.getSystemService ()를 , 그리고 세계에 대한 참조를 전달Context.VIBRATOR_SERVICE . 이것은 형식 진동기의 객체를 반환합니다. 그래서 새로운 변수에 넣어 당신은 전체 연장 컨텍스트에 사용할 수 있는지 이것을 저장할 장소가 필요 VB VibrationExtensionContext 내에 :
vbc.vb = (Vibrator)a.getSystemService(Context.VIBRATOR_SERVICE);
  1. 이제 VibrationExtensionContext 클래스를 열고라는 공용 변수를 추가해야합니다 VB 클래스를 :
public Vibrator vb = null;

따라서, 귀하 VibrationExtensionContext를 참조할 수있는 클래스에 액세스할 수있는 네이티브 코드 구조, VB 진동기 클래스에 대한 참조를 만들었습니다.

작성된 VibrationInitFunction는 다음과 같이해야합니다 :

public class VibrationInitFunction implements FREFunction { @Override public FREObject call(FREContext context, FREObject[] passedArgs) { VibrationExtensionContext vbc = (VibrationExtensionContext)context; Activity a = vbc.getActivity(); vbc.vb = (Vibrator)a.getSystemService(Context.VIBRATOR_SERVICE); return null; } }

; ActionSscript 3에서 전달 인자를 이해;를 통해 확장 컨텍스트에 액세스 FREFunction를 구현하는 클래스를 만들려면 : 당신은 어떻게 할 배운 FREContext의 인수를, 그리고 당신은 확장을위한 일반적인 초기화 작업을 봤어요.

당신은에서 정의한 다른 두 FREFunctions 구현해야하기 다음 <String, FREFunction>의 getFunctions ()지도 기능을.

세 가지 기능의 두 번째 : VibrationSupportedFunction

앞에서 정의한 두 번째 기능은 VibrationSupportedFunction입니다. 당신에 의해 반환된 HashMap에 표시된 바와 같이 getFunctions () 이 함수는 ActionScript를 세 문자열을 사용하여 호출할 수 isSupported을 . 이 함수의 창조 VibrationInitFunction - 단에 아주 유사하다, 어떻게 FREObject의 부울 내부를 반환하는 방법을 보여줍니다.

  1. 패키지 탐색기에서 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기> 클래스를 클릭합니다.
  2. 패키지로 com.yourDomain.example.android.helloANE.extensions를 선택하고 해당 클래스 이름VibrationSupportedFunction을 뿐 이전 HashMap에 제공된 값으로 기대했다.
  3. 이 클래스가 구현하는 것을 인터페이스로 FREFunction을 선택합니다.
  4. 클래스를 만들려면 마침을 클릭합니다.
  5. 에서이 클래스에서 인자를 변경 arg0 및 arg1 에 컨텍스트 와 passedArgs 각각.
  6. 당신의 결과로 FREObject을 반환하고자 할 전화 () 함수; 만들고 이젠 돌아갑니다. 당신은 또한 당신의 VibrationExtensionContext에 대한 참조를 원하는 있도록 만든 컨텍스트 매개 변수를 캐스팅함으로써 것이다 :
FREObject result = null; VibrationExtensionContext vbc = (VibrationExtensionContext)context; // ... return result;
  1. 이 함수의 논리는 다음과 같이 될 것이다 :
  • VibrationInitFunction 이미 호출되었습니다, 그래서 vbc.vc가 설정되어야합니다.
  • 인가 vbc.vc 비 null이? 그렇다면 결과는되어야 진정한 .
  • 경우 vbc.vc은 Null입니다, 우리는 합리적으로 그 초기화 실패,이 플랫폼 Vibration.result로 설정해야 지원하지 않는다는 결론 지을 수 false로 .

    다음 사항을 작성 하는 경우 성명 :

if (vbc.vb == null) { result = FREObject.newObject(false); } else { result = FREObject.newObject(true); }
  1. 하나의 추가 작업이있다 : 전화 newObject () FREObject에이 던져지지 FREWrongThreadException 예외가 발생할 수 있습니다. 당신은 서라운드 줄게 경우 이 사태를 처리하는 게임일의 catch 블록에서 진술.

작성된 전화 () 함수는 지금과 같이 표시됩니다

@Override public FREObject call(FREContext context, FREObject[] passedArgs) { FREObject result = null; VibrationExtensionContext vbc = (VibrationExtensionContext)context; try { if (vbc.vb == null) { // Not supported result = FREObject.newObject(false); } else { // Supported result = FREObject.newObject(true); } } catch (FREWrongThreadException fwte) { fwte.printStackTrace(); } return result; }

: 이제 네 세가지 기본 확장 기능의 두 번째가 VibrationSupportedFunction을 . ActionScript를 3 문자열에 의해 호출되면 isSupported ,이 함수는 변수가 있는지 확인합니다 VB VibrationExtensionContext "문맥"에서가 아닌 Null입니다. 그것도입니다 FREObject 돌아온다는 사실 이나 거짓 이 조건에 기초를하고, 잠재적 정적으로 던진 것 FREWrongThreadException 잡을 것입니다 newObject () FREObject의 기능을.

세 가지 기능 중 셋째 : VibrationVibrateFunction

당신이 구현해야 할 마지막 네이티브 확장 기능은 모국어 확장 기능의 핵심 임무를 수행합니다 : 그것은 AIR 응용 프로그램이 지정한 기간 동안 장치의 모터를 진동 수 있습니다.

  1. 패키지 탐색기에서 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기> 클래스를 선택합니다.
  2. 패키지로 com.yourDomain.example.android.helloANE.extensions를 선택하고 클래스 이름VibrationVibrateFunction을 .
  3. 클래스 가늘어의 com.adobe.fre.FREFunction을 만듭니다.
  4. 클래스를 만들려면 마침을 클릭합니다.
  5. 함수 정의에서 이름을 변경 arg0를 문맥과에 arg1 에 passedArgs .
  6. 이라고 NULL FREObject 생성 결과를 .
  7. 라는 VibrationExtensionContext 변수에 변수 컨텍스트 캐스트 vbc을 . 당신은 액세스하는 데 이것을 사용할vbc.vb , 진동기 개체를.

    우리는 지금 FREObject로서 첫 번째 전달 인자에 접근할 준비하고, 정수로 설정하려고합니다. 데이터가 잘못된 경우, 예외는 잡을 수있는 던져질 수있다. 귀하의 전화 () 함수는 현재이 같이 표시됩니다 :

@Override public FREObject call(FREContext context, FREObject[] passedArgs) { FREObject result = null; VibrationExtensionContext vbc = (VibrationExtensionContext)context; try { // Vibrate the device } catch (Exception e) { e.printStackTrace(); } return result; }
  1. 의 내부는 {/ /을 시도 ... } 블록, 우리의 첫 번째 요소를 시도하고 잡아 거 passedArgs의 FREObject로 배열 :
FREObject fro = passedArgs[0];
  1. 이제 호출하여 INT를 만들 수 있습니다 getAsInt를 (); 이 FREObject에 :
int duration = fro.getAsInt();
  1. 마지막으로, 우리의 안드로이드 고유의 진동 함수를 호출 VB의 기간에 합격, 진동기 변수를 :
vbc.vb.vibrate(duration);

이제 성공적으로 제공한 HashMap에 문자열로 매핑 세 원시 함수, 만든 getFunctions ()를 , 그리고 네이티브 확장 필요한 모든 작업을 수행하는 기본 논리가 필요 만들었습니다. 이것의 생성 완료VibrationExtensionContext 모국어 연장에 필요한 유일한 확장 맥락이다.

기본 확장 클래스를 생성

귀하의 기본 확장 기능이 필요로하는 유일 무 확장 컨텍스트를 만들었지만, 그래도 우리 확장자의 기본 클래스를 작성하지 않았습니다. 다행히도,이 클래스를 추가하는 것은 간단하다, 우리가 할 일은 FREExtension 인터페이스를 구현 VibrationExtension라는 클래스를 만드는 것입니다.

FREExtesion 인터페이스 정의하고 초기화 , 처분 및 createContext의 기본 확장자의 라이프 사이클에 후크를 허용 기능을. 세 가지 함수를 제공에도 불구하고, 우리는 하나의 사용자 정의해야 할 createContext의 기능을.이 함수는 FREContext를 반환해야한다. 다행히도 당신은 이미 자신의 VibrationExtensionContext을 만들었습니다, 당신은 간단하게이 클래스의 인스턴스를 반환할 수 있습니다.

  1. 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기> 클래스를 선택합니다.
  2. 패키지 이름으로 com.yourDomain.example.android.helloANE.extensions을 선택합니다.
  3. 클래스 VibrationExtension 이름을 지정합니다.
  4. 인터페이스 상자 옆의 추가 단추를 사용하여 클래스 가늘어의 com.adobe.fre.FREExtension을 만듭니다.
  5. 클래스를 만들려면 마침을 클릭합니다.
  6. 기본적으로에 정의된 문자열 인수 createContext ()는 함수는 읽어 보시면 arg0를 . 이 인수는 실제로 (당신이 여러 컨텍스트 유형이있다면 어떤에만 유용) 생성할 컨텍스트의 유형을 정의하는 ID입니다. 변경arg0를 위해 contextType .
  7. 완료하려면 createContext () 함수를, 우리는 우리 VibrationExtensionContext의 새 인스턴스를 반환해야합니다. 교체 , 반환 null을 다음과 코드를
return new VibrationExtensionContext();

이것은 확장 컨텍스트의 초기화와 생성 원인, 그리고 귀하의 기본 확장자로 넣어 네이티브 코드를 사용하실 수 있습니다.

JAR 파일로서 귀하의 네이티브 코드를 내보내기

이 튜토리얼의 다음 섹션에서 우리는 액션 스크립트 3 우리 고유의 확장 측면뿐만 아니라 패키지를 코드와 완료 네이티브 확장 파일과 예제 응용 프로그램을 테스트하는 방법을 확인할 수 있습니다. 이 단계에서는 JAR 파일로서 귀하의 네이티브 코드를 참조하는 포함됩니다. 플래시 빌더에서 JAR 파일을 작성하면 간단하다 :

  1. 패키지 탐색기에서 선택하여 HelloANENative 프로젝트> 내보내기 파일 이동합니다.
  2. 자바> JAR 파일을 선택하고 다음을 클릭합니다.
  3. 내보낼 리소스로 HelloANENative 선택합니다.
  4. "내보내기 생성된 클래스 파일과 리소스"가 선택되어 있는지 확인합니다.
  5. , JAR 파일에 대한 대상으로 HelloANENative 폴더를 선택하고 그것이 HelloANENative 이름을 지정하고 마침을 누릅니다. 당신의 플렉스 라이브러리 프로​​젝트에서 extension.xml 파일을 만들 때, 당신의 기본 확장자 파일을 만들 포장 명령을 실행할 때 둘 다 해당 JAR 파일을 사용합니다.

액션 스크립트 3 코드를 생성

당신은 당신의 기본 확장 기능의 범위를 확장 추가 기능, 논리, 그리고 (필요한 경우)도 추가로 확장 컨텍스트로 확장할 수있는 Java 코드를 만들어 가고 있고, 네이티브 확장 기능을 만드는 코딩 필요한 대부분의 일을했습니다.

대조적으로,이 플랫폼 다리를 완료하는 데 필요한 액션 스크립트 3 코드를 작성하는 것은 간단하다. 당신의 작업은 다음과 같습니다 :

  • 만들기 및 플렉스 라이브러리 프로​​젝트를 구성.
  • 확장을 설명하는 데 extension.xml 파일 만들기.

당신의 ActionScript를 3 라이브러리 코드는 flash.external.ExtensionContext API를 가져오고, 다음과 같은 기능을 제공할 것입니다 하나의 클래스들로 구성됩니다 :

  • 생성자는, 증명서의 새로운 확장 컨텍스트를 만들고자하는, 그리고 호출됩니다 initMe 네이티브 함수를.
  • 함수는 호출 isSupported 우리 지어라하는 isSupported 기본 기능을, 그리고 반환되는 사실 또는 허위의 원시 코드의 응답에 따라.
  • 함수는 호출 진동 번호 기간을 적용됩니다, 그리고 모국어 전화 vibrateMe 매개 변수로이 번호가있는 기능입니다.
  • 이 코드를 완료한 후 액션 스크립트 3 라이브러리 함수가 완료되고, 당신은 포장 및 모국어 확장 기능을 사용하여 이동하실 수 있습니다. 라이브러리 함수가 기본 확장명을 사용하는 데 필요한 액션 스크립트 3 코드를 정의합니다하지만 샘플 응용 프로그램이 아닙니다. 모국어 확장 기능을 사용하려면, 당신은이 가이드의 다음 단원에서 만든 겁니다 플렉스 모바일 응용 프로그램에서이 라이브러리 응용 프로그램을 참조해야합니다.

플렉스 라이브러리 프로​​젝트 만들기

귀하의 액션 스크립트 3 코드는 플렉스 라이브러리 프로​​젝트 내에 존재하는 것입니다 :

  • 플래시 빌더에서 화면의 맨 오른쪽에 선택하여 플래시 관점을 엽니다.
  • 파일> 새로 만들기> 플렉스 도서관 프로젝트를 클릭합니다.
  • 프로젝트 이름을 지정 HelloANELibrary를 .
  • 일반 도서관 라디오 버튼이 선택되어 있는지 확인하십시오.
  • '포함 어도비 AIR 라이브러리 "가 체크되어 있는지 확인합니다. 프로젝트에 따라 달라집니다 네이티브 확장 라이브러리는 AIR API에 포함되어 있습니다.
  • 프로젝트를 생성하려면 마침을 클릭하십시오.
  • 여러분의 패키지 탐색기에서 HelloANELibrary 프로젝트를 열고, SRC 폴더를 마우스 오른쪽 단추로 클릭하고 새로 만들기> ActionScript를 클래스를 선택합니다.
  • 패키지 이름 co.kr을. <yourDomain>. nativeExtensions.Vibrate . 예를 들어,
  • 클래스 이름을 지정 진동 .
  • flash.events.EventDispatcher로 슈퍼 클래스를 설정합니다. 이것은이 클래스가 실제 응용 프로그램에 고유의 확장 기능을 통합할 때 유용 될 것입니다 이벤트를 파견 수 있습니다.
  • 진동 클래스를 만들려면 마침을 클릭합니다.

당신의 원시 코드에 ActionScript를 세 다리를 코딩

이제 당신이 접근할 수 있도록 우리의 확장 컨텍스트에 연결을 만들어야합니다 initMe , isSupported 및vibrateMe 당신이 자바에서 만든 함수를.

  1. 진동 클래스에서 확장 컨텍스트에 전용, 정적 참조를 추가합니다 :
private static var extContext:ExtensionContext = null;
  1. 생성자에서는이 있는지 여부를 확인하는 것 extContext의 변수가 초기화되었습니다. 그렇지 않다면, 당신은 정적 함수를 호출 할게 ExtensionContext.createExtensionContext ()를 , 두 개의 식별자를 전달합니다. 첫 번째는 곧 extension.xml 파일에 설정 할게 ID입니다. 두 번째로 전달되는 것 매개 변수입니다createContext () VibrationExtension의 기능. 당신은 당신이 다른 확장 컨텍스트를 만들 수있는 기억 하겠지, 하나만 가지고 있으니까, 당신은 네이티브 코드에서이 매개 변수를 무시. 이 여러 확장 컨텍스트가있는 경우, 귀하의 원시 코드는으로 전달할 값을 파싱해야 하는 경우 또는 스위치 진술하고, 가능한 공유 문자열 값에 따라 적절한 값을 만듭니다. 다음과 같은 쓰기 :
if ( !extContext ) { extContext = ExtensionContext.createExtensionContext("com.yourDomain.Vibrate","vibrate"); extContext.call("initMe"); }
  1. 당신이 전화를합니다 initMe를 통해 extContext.call () 별도의 매개 변수에 전달합니다. 이것은 함께 매핑됩니다 VibrationInitFunction 당신이 자바로 코딩하는, 그리고 장치를 진동하기는 내부 데이터 구조가 필요한 초기화합니다.

확장 컨텍스트는 현재 생성되고 마자 같이 초기화됩니다 ) (진동 생성자는 새 액션 스크립트 3 라이브러리를 사용하는 모든 응용 프로그램에 의해 호출됩니다. 당신은 여전히 있지만, 구현하는 두 가지 기능이 있습니다. 먼저 만드는 ) (isSupported 기본에 연결됩니다 함수 isSupported 기능 및 응용 프로그램 논리에 의해 반환되는 부울 값을 검사한다.

  1. 라는 정적 게터 만들기 isSupported 부울을 반환 :
public static function get isSupported():Boolean { var supported:Boolean = false; // ... return supported; }
  1. 두 문장 사이에 호출 추가 extContext.call ()을 을 전달 isSupported 문자열 매개 변수로, 그리고 설정하는 지원되는 부울 반환 값으로 변수를 :
supported = extContext.call("isSupported") as Boolean;

만드는이 과정을 반복 vibrateMe 하나에 걸리는 기능, 번호 기간 등 있습니다. 이 함수의 창조는 간단합니다 :

public function vibrate(duration:Number):void { extContext.call("vibrateMe",duration); }

플래시 빌더가 자동으로 프로젝트의 bin 폴더에있는 SWC 파일에 라이브러리를 컴파일됩니다. SWC 파일 library.swf를 포함 아카이브입니다. 당신은 대서양 서머 타임과 ANE 파일을 패키지 때마다 수동으로 SWC와 SWF를 모두 참조해야합니다. 따라서, 지금 library.swf를 추출하고, HelloANELibrary의 빈 / 디렉토리뿐만 아니라 HelloANENative 디렉토리에 배치, 압축 파일 관리 도구에서 SWC 파일을 열어야합니다 :

  1. HelloANELibrary / 빈 /로 이동합니다.
  2. HelloANELibrary.swc 파일을 압축 해제하거나 (예, 7-ZIP) 보관 관리 도구에서 엽니다.
  3. 당신은 SWC 아카이브의 내부 catalog.xml와 library.swf 파일을 확인할 수 있습니다.

    library.swf 파일은 대상 모든 플랫폼의 네이티브 코드 디렉토리의 안에 배치해야합니다. 예를 들어, IOS / 안드로이드 / X86 / 등, 프로젝트의 목표에 따라 내부에이 파일을 배치할 것. (더 고급 ANEs 들어, 귀하의 AS3 라이브러리는 여러 플랫폼에 다른 것을 요구하는 경우가 있지만, 공통 인터페이스를 정의하는 최고의 실천 역행. 다른 library.swf 파일을 지정할 수 있으며, 귀하가 함께 붙어 것을 권장 library.swf의 단일 버전입니다.)

  4. 완료되면, 당신 HelloANELibrary 폴더는 모두 HelloANELibrary.swc를 포함해야하며 HelloANENative가 포함되어야합니다 
    library.swf합니다.

library.swf을 추출함으로써 이제 네이티브 확장 기능을 만드는 데 필요한 모든 파일을 갖고 있습니다. 당신은 당신의 라이브러리 코드를 변경할 때마다 4 단계 1을 반복해야합니다, 그렇지 않으면 library.swf 유효 기간이 경과 될 것입니다.

이 시점에서, 당신은 귀하의 기본 확장명을 사용하는 데 필요한 라이브러리 코드를 모두 작성했습니다.

extension.xml 파일에 기본 확장명을 묘사

당신은 필요한 코드를 만들었지만 ANE 파일에 함께 모든 것을 연결 보지 못했거. 먼저 플렉스 라이브러리 프로​​젝트의 내부 extension.xml 파일을 만듭니다. 각 원시 대상의 경우이 파일의 원시 코드 (귀하의 JAR 파일)을 가리키는하고 (이 예제에서 필요하지 않으며, 선택, finalizer 기능) 초기화 함수의 패키지 위치를 설명합니다. 당신의 ANE 파일 (그런 다음 샘플 응용 프로그램에서 사용할하는) 만들 때 packager이 파일을 넘겨야합니다.

귀하의 플렉스 라이브러리 프로​​젝트의 extension.xml 파일 안에 작성 :

  1. 당신의 HelloANELibrary 프로젝트에 SRC 폴더를 마우스 오른쪽 단추로 누릅니다. 새로 만들기> 파일을 클릭합니다.
  2. 파일 이름 extension.xml을 .
  3. 그것을 마우스 오른쪽 단추로 클릭하고 텍스트 편집기가 아닌 기본 XML 편집기를 선택하여이 파일을 다시 엽니다.
  4. 다음 XML은 사용하는 AIR 네임 스페이스 (2.5), 확장의 ID, 우리는 ( "아이폰 ARM은"다른 일반 대상 플랫폼있다는 점에 유의) 타겟팅할 단일 플랫폼에 대해 설명합니다 :
<extension xmlns="http://ns.adobe.com/air/extension/2.5"> <id>com.yourDomain.Vibrate</id> <versionNumber>1</versionNumber> <platforms> <platform name="Android-ARM"> <!-- ... --> </platform> </platforms> </extension>

내부의 <platform>의 태그, 당신은 지금의 JAR 파일의 위치를 설정하는 겁니다 <nativeLibrary> 태그를, 우리는 (당신이 만든 기억 원시 코드에 설정된 위치로 초기화의 위치 설정 초기화를 ( ) 귀하의 VibrationExtension 클래스의 함수) :

<applicationDeployment> <nativeLibrary>HelloANENative.jar</nativeLibrary> <initializer>com.yourDomain.example.android.helloANE.extensions.VibrationExtension </initializer> </applicationDeployment>

이제 성공적으로 extension.xml 파일을 작성하고, 당신의 ANE 파일을 만드는 데 필요한 모든 구성 요소를 가지고했습니다.

네이티브 확장을 포장

현재 네이티브 확장 기능을 포장하는 것은 커맨드 라인 도구 대서양 서머 타임을 사용하고, 그것을 매개 변수의 개수를 전달해야합니다. 여러분이 만드는거야 스크립트는 스크립트의 상단 부분에 자신만의 변수를 설정할 수 있도록, 나는 OS X (. 일반적으로 쉬 파일)에서 Windows의 배치 스크립트 (. bat 파일) 또는 BASH 스크립트를 작성하는 것이 좋습니다 , 그것은 쉽게 다른 네이티브 확장 프로젝트에 적용할 수 있도록합니다.

당신은 스크립트에 연결해야 할 정보의 작품에는 여러가지가 있습니다. 나는 정보를 나열하고, 당신에게 내 자신의 시스템에 사용할 값을 보여 드릴게요 :

  • 대서양 서머 타임의 위치 C : \ 프로그램 파일 \ 어도비 플래시 빌더 4.5 \ sdks \ ​​4.5.2 \ 빈
  • 프로그래밍 루트 디렉토리 C : \ 사용자 \ 댄 \ 프로그램
  • 액션 스크립트 3 라이브러리 디렉토리 : %의 root_directory %는 \ HelloANELibrary
  • 안드로이드 기본 디렉토리 : %의 root_directory의 % \ HelloANENative
  • 서명 옵션 :-storetype pkcs12-keystore "C : \ 사용자 \ 댄 \ 프로그램 \ cert.p12"
  • 목적지 ANE 파일 : HelloANE.ane
  • extension.xml의 위치 : % library_directory의 % \ SRC \ extension.xml
  • 컴파일된 액션 스크립트 3 라이브러리 SWC의 위치 : % library_directory의 % \ 빈 \ HelloANELibrary.swc

당신은 당신 자신의 시스템에 대한 가치관과 비슷한 목록을 만들어야합니다. 그런 다음 다음과 대서양 서머 타임 명령으로 변수를 참조하여 문제를 플러그인하실 수 있습니다

"%adt_directory%"\adt -package %signing_options% -target ane "%dest_ANE%" "%extension_XML%" -swc "%library_SWC%" -platform Android-ARM bin/library.swf -C "%native_directory%" .

이 명령은 복잡해 보이지만, 그것은 단순히 대서양 서머 타임을 실행 및 옵션에 서명을 전달 대상으로 ane을 지정 extension.xml 파일을 제공 HelloANELibrary.swc 파일을 지정 플랫폼으로 안드로이드-ARM을 타겟으로하고, 어디로 대서양 서머 타임을 말하고 있어요 네이티브 라이브러리 파일을 찾아보십시오.

Windows에서 compile_ane.bat 파일은 다음과 같이 표시될 수 있습니다 :

set adt_directory=C:\Program Files\Adobe Flash Builder 4.5\sdks\4.5.2\bin set root_directory=C:\Users\dan\Programs set library_directory=%root_directory%\HelloANELibrary set native_directory=%root_directory%\HelloANENative set signing_options=-storetype pkcs12 -keystore "c:\Users\dan\Programs\cert.p12" set dest_ANE=HelloANE.ane set extension_XML=%library_directory%\src\extension.xml set library_SWC=%library_directory%\bin\HelloANELibrary.swc "%adt_directory%"/adt -package %signing_options% -target ane "%dest_ANE%" "%extension_XML%" -swc "%library_SWC%" -platform Android-ARM -C "%native_directory%" .

맥 OS X에서 스크립트는 다음과 같이 있습니다 :

#!/bin/bash adt_directory="/Users/Applications/Adobe Flash Builder 4.5/sdks/4.5.2/bin" root_directory=/Users/dan/Programs library_directory=${root_directory}/HelloANELibrary native_directory=${root_directory}/HelloANENative signing_options="-storetype pkcs12 -keystore /Users/dan/Programs/cert.p12" dest_ANE=HelloANE.ane extension_XML=${library_directory}/src/extension.xml library_SWC=${library_directory}/bin/HelloANELibrary.swc "${adt_directory}"/adt -package ${signing_options} -target ane "${dest_ANE}" "${extension_XML}" -swc "${library_SWC}" -platform Android-ARM -C "${native_directory}" .

내 서명 인증서로 P12 파일을 사용합니다. 당신은 일반적으로 AIR 파일을 서명하는 데 사용할 파일을 대체할 수 있습니다. 하나를 만들어야하는 경우 이렇게하는 가장 쉬운 방법은 플래시 빌더에서 플렉스 또는 AIR 프로젝트를 열 수 있으며, 프로젝트로 이동> 내보내기 릴리스 빌드합니다. 두 번째 단계 동안 당신이 GUI를 사용하여 인증서를 만들 수있는 옵션이 있습니다.

커맨드 라인에서 스크립트를 실행하여 CERT의 비밀 번호를 입력하고 %의 dest_ANE의 % 파일이 만들어와 예제 응용 프로그램에서 사용할 준비가되어야합니다!

플렉스 샘플 응용 프로그램에 기본 확장명을 사용하여

이제 기본 확장명을 사용 플렉스 모바일 응용 프로그램을 만드는거야! 프로젝트를 설정하고 안드로이드에 배포하는 과정은 간단하다 :

  1. 플래시 빌더 4.5.2에서 파일> 새로 만들기> 플렉스 모바일 프로젝트를 누릅니다.
  2. 프로젝트 이름 HelloANESample을 .
  3. 가 4.5.2 SDK 이상을 사용하고 있는지 확인하고 다음을 누릅니다.
  4. 오직 구글 안드로이드는 대상 플랫폼으로 선택되어 있는지 확인합니다.
  5. 보기 기반 응용 프로그램을 선택하고 다음을 클릭합니다.
  6. 어떤 서버 설정이 필요하지 않기 때문에, 다음을 클릭합니다.
  7. 귀하의 응용 프로그램이 필요로하는 ANE 파일을 타겟팅할 수 있습니다 NativeExtensions 탭을 클릭합니다.
  8. 추가를 클릭하고 이전 단계에서 포장 ANE 파일을 찾습니다. 그것은 HelloANE.ane라는 HelloANELibrary 폴더에 있어야합니다.
  9. 확인을 누릅니다. 당신은 ANE 파일의 항목 옆에 녹색 확인 표시가 나타납니다. (또는 OS X 용 유사한 메시지) "ASP를 Win32 (윈도우즈 X86)에 시작은 지원되지 않습니다":이 항목을 확장하면 다음 경고가 나타납니다. 우리 네이티브 확장 네이티브 부분을 코딩 할 때 우리가 데스크탑 환경을 타겟으로하지 않았 않으며 우리가 extension.xml 쓴이나 대서양 서머 타임을 실행할 때 우리는 그것을 구성 않았다 때문입니다.
  10. 마침을 클릭하십시오.
  11. 우리는 이제 기본 확장자는 패키지에 포함되어 있는지 확인을 두 배로하고, 빌드 경로에 아니라됩니다. 그것이 올바로 구성되어야지만 당신이 네이티브 확장을 수정해야 다음 단계를 수행 할 수 있습니다. 패키지 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  12. 포장을 빌드 Flex와 구글 안드로이드를 선택 확장합니다.
  13. 네이티브 확장 탭을 클릭합니다.
  14. 당신뿐만 아니라 그 기본 확장을위한 패키지 열에있는 체크 표시로서 모국어 확장 기능 옆에 녹색 확인 표시가 나타납니다. 그렇지 않으면 확인란을 선택합니다.
  15. 프로젝트 속성을 닫습니다.

구성 권한

프로젝트를 설정을 완료하려면 응용 프로그램이 안드로이드 진동 컨트롤의 사용을 필요로하는 지정해야합니다. 당신의 추가 기능을 활용하면이 부분에 특히주의를 기울이 장치는 몇 가지 기능이 추가 사용 권한을 요구하는 간과되는 경우가 많습니다. 당신이 위에와 런타임의 기능을 넘어가는 AIR 응용 프로그램 설명 자 역시 주석 섹션에서 이러한 항목을 사용할 수 있도록해서는 안됩니다. 당신이 적절한 권한을 지정하는 것을 잊지 경우, 원시 코드가 작동하지 않으며, 가능성 권한 관련 예외를 던질 것입니다. (안드로이드에서는이 출력을 사용하여 쉽게 볼 수 logcat을 ADB 쉘에.)

AIR 응용 프로그램 설명 자에 권한을 추가하려면 :

  1. HelloANESample-app.xml 응용 프로그램 설명자를 마우스 오른쪽 단추로 클릭하고 텍스트 편집기로 엽니다 선택합니다.
  2. 이 섹션 아래로 스크롤 :
<android> <manifestAdditions><![CDATA[ <manifest android:installLocation="auto">
  1. 진동 컨트롤을 사용하도록 권한을 추가 :
<uses-permission android:name="android.permission.VIBRATE"/>

모국어 확장자를 사용하여

프로젝트가 구성되어 지금 것을, 당신은 집에서보기로 진동 버튼을 추가할 수 있습니다 :

  1. 사이 의 :보기 태그 (클래스의 주요 본문에), 신규 추가 버튼 : s를 . 그것을의 라벨주세요 ANE를 사용하여 진동을 하고, 새로운 클릭 처리기를 만듭니다. 플래시 빌더는 자동으로 생성해야합니다 FX를 : 스크립트 태그와 당신의 클릭 핸들러 함수를 액션 스크립트 3.
  2. : 액션 스크립트 3 개체를 통해 고유의 확장 기능을 노출됩니다 클릭 처리기의 내부 새로운 진동 클래스를 만듭니다
var v:Vibrate = new Vibrate();
  1. 의 값을 추적 v.isSupported을 다음 모터 실행해야 밀리초의 수를 100의 하드 코드된 값을 전달, 기본 진동 함수를 호출 :
trace("이 네이티브 익스텐션을이 플랫폼에서 지원합니까?" + Vibrate.isSupported);
v.vibrate(100);
  1. 메인 툴바에서 디버그 버튼을 클릭합니다.
  2. 대상 플랫폼으로 구글 안드로이드를 선택하고 USB를 통해 디버깅을 가진 장치에서 실행을 선택합니다.
  3. 디버그를 클릭합니다.

플렉스 애플 리케이션은 현재 장치에서 실행하고, ANE를 사용하여 진동 표시된 버튼을 제공해야합니다. 이 버튼을 두드리고있는 것은 안드로이드 장치의 모터에서 100ms에게 긴 진동을 생산한다! 당신은 또한 플래시 빌더에서 콘솔보기에 다음과 같은 출력을 알 수 있습니다 :

[SWF] com.yourDomain.Vibrate - 2,916 bytes after decompression [SWF] HelloANESample.swf - 2,702,220 bytes after decompression Is this ANE supported on this platform? True

당신은 진동의 기간을 제어하려는 경우 숫자 입력 TextInput이나 양식을 추가할 수 있습니다. 간단히 교체 100우리가 로컬 범위 변수와 하드 코딩된 것을 인수를하고, 컨트롤을 사용하여이 변수를 설정합니다. 이 시점에서 응용 프로그램의 ActionScript를 세 측면을 코딩하는 것은 다른 플렉스 애플 리케이션 개발과는 다른 것이 없습니다.

여기서부터 어디로 가야

이 가이드에서는 대기 원시 확장하면 달리 혼자 런타임 API를 통해 접근할 것입 기기 및 하드웨어 기능으로 애플 리케이션 액세스를 제공하는 어도비 AIR의 capabilties를 확장할 수 배웠습니다. 당신은 안드로이드에 대한 기본 확장 기능을 만드는 방법을 배웠습니다, 다른 플랫폼을 대상으로 이러한 기술을 사용할 수 있습니다. 이 예제에서는 지정된 기간 동안 활성화 안드로이드 디바이스의 진동 모터를 만드는 단순 작업에 초점을 맞춘,이 만들고 초기화 네이티브 확장을뿐 아니라 원시 코드와이 사이에서 앞뒤로 데이터를 전달하는 방법을 그림 AIR 응용 프로그램을 만듭니다.

이를 위해서, 여러분은 :

  1. 어도비 AIR는 (FREObject, FREFunction 등)을 제공하는 네이티브 확장 API를 사용하여 인터페이스에 네이티브 자바로 코딩.
  2. 액션 스크립트 3 API에 구성된 플렉스 라이브러리를 코딩. 다음은 네이티브 API를 맞고.
  3. 우리의 확장을 설명하는 extension.xml을 썼습니다.
  4. 스크립트 배치 / 명령줄 유틸리티 대서양 서머 타임과 함께 우리 고유의 확장 기능을 포장하는 bash가 파일을 만듭니다.
  5. 우리 고유의 확장자를 사용하는 모바일 플렉스 프로젝트를 만들었습니다.
  • 당신은 안드로이드에 집중하지만, 네이티브 확장 TV 방송, IOS에 맥 OS X, Windows 및 어도비 AIR를 작동합니다. 당신은 여러 플랫폼을 대상으로 한 고유의 확장 기능을 만들 수 있고, 특정 기능을 플랫폼별로 플랫폼 기반에서 지원하는 경우 응용 프로그램 논리 (런타임이나 컴파일 타임시) 결정할 수 있습니다.
  • 이제 지식과 자신의 기본 확장 기능을 만드는 데 필요한 능력을 가지고. 귀하의 응용 프로그램은 추가 하드웨어 기능에 액세스 네이티브 최적화된 코드 또는 타사 라이브러리를 활용하고, 심지어 AIR 애플 리케이션을 차단하지 않고 시간이 많이 소요되는 연산을 처리하기 위해 여러 스레드를 산란 수 있습니다.

네이티브 확장으로 자산을 포함

우리의 예제에서는 밖의 자산을 필요로 컴파일된 코드 그러나 이것은 매우 가능, 모바일에 대한 몇 가지 고려 사항을 필요로 이미지, 파일, 데이터베이스 또는 구성 점포 등에 액세스하려면 기본 연장하실 수 있습니다하지 않는다 :

  • 안드로이드에서 당신의 자산 여러분의 안드로이드 프로젝트 경로의 "고해상도"폴더를 포함합니다. 이러한 파일은 기본 응용 프로그램의 리소스 디렉토리로 병합됩니다, 그래서 당신은 다른 자산과 충돌하지 않습니다 고유한 이름을 선택해야합니다. 당신이 그들을 사용하여 액세스할 수있는FREContext.getResourceId ()을 (또한 올리버 골드만의 문서를 참조, 원하는 리소스 ID에 전달하여, 어도비 AIR를 확장 ).
  • IOS에서 자원 NSBundle API를 통해 액세스되며, 프로젝트가 컴파일되었을 때 네임 스페이스가 평평 것을주의하고, 이름은 당신이 (네이티브 코드에만 사용되는 경우에도) 리소스에 대한 선택은 다른 자원에 저촉되지 보장해야 프로젝트. 예를 들어, 프로젝트에 어디서나이 자원을 사용하지 않는 것이 모두 명명된 Localizable.strings (역시 올리버 골드만의 문서를 참조입니다 어도비 AIR를 확장 ).

파견 상태 이벤트

당신은 가능성 모국어 확장 네이티브 코드에서 비동기 작업을 수행해야 찾을 수 있으며 작업이 완료될 때 AIR 응용 프로그램에 알림을 전달하는 방법을 필요로합니다. 이 함수에 의해 accomodated있다 ; dispatchStatusEventAsync (문자열 코드, 문자열 수준) FREContext 클래스 인치 예를 들어, 다음 Java 코드는 "DATA_CHANGED"의 코드와 함께 상태 이벤트가되었다는 가상 네이티브 확장 라이브러리를 지시합니다 :

context.dispatchStatusEventAsync("DATA_CHANGED", stringData);
  • 이 상태 이벤트는 비동기적으로 파견하고, (당신의 AIR 응용 프로그램이 바쁜 아닙니다 제공), 즉시 대응하는 기본 확장자 ActionScript를 3 이벤트 리스너로 사용할 수 있습니다 것입니다. 문맥이 이벤트를 파견이 가능하기 때문에, 당신은 그들을 위해 듣는 모국어 확장 라이브러리를 지시해야 할 것이다 : 
context.addEventListener(StatusEvent.STATUS, onStatus); ... private function onStatus(e:StatusEvent):void { if (e.code == "DATA_CHANGED") { var stringData:String = e.level; // ... } }

상태 이벤트 원시 코드 작업의 상태에서 (그래서 당신의 결과 AIR과 Flex 어플 리케이션)를 기본 확장 라이브러리를 업데이 트하는 편리한 방법을 제공합니다.

기타 학습

당신은이 가이드의 시작 부분에있는 "추가 리소스"절을 참조하여 네이티브 확장에 대해 학습을 계속할 수 있습니다. 이러한 리소스는 어도비가 이미 만들어지고 배포, 당신은 단순히 플렉스와 액션 스크립트 3 응용 프로그램으로 네이티브 확장 파일을 놓아 공기의 기능을 확장할 수있게되었다는 네이티브 확장에 대한 링크가 포함되어 있습니다.

또한 체크 아웃하십시오 네이티브 확장 샘플을 어도비 AIR 개발자 센터에서.


'강좌 > FLASH/AS3.0' 카테고리의 다른 글

AIR3 네이티브익스텐션 파일 제작법  (0) 2012.04.02
Name
Password
Homepage
Secret