|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
父类是NSObjectUIKit里最底层的库可以响应一些触摸事件设置焦点等功能UIView父类是UIResponder所有View的父类方法太多了大部分很有用这个不赘述了目次
- 了解AdobeAIR中的Android受权
- 了解Android受权原生扩大
- 封装Android原生扩大和您的使用程序
- 回护使用程序的技能
- 扫除使用程序的妨碍
需求
准备常识
熟习Android上的AdobeAIR原生扩大、Java和Android受权考证库(LVL)
必要的第三方产物
- Java开辟工具(JDT)
- 包括LVL的GoogleAndroidSDK
用户程度
中级
必要的产物
- FlashBuilder4.5Premium(下载试用版)
- AdobeAIR
示例文件
- AndroidLicensingUsage.zip
- licensing.zip
注重:Adobe倡议利用下一版的FlashBuilder来开辟AdobeAIR的原生扩大。当即注册猎取FlashBuilder4.6的预刊行版。
本教程向您展现针对Android受权的原生扩大的利用和封装,包含回护使用程序的技能。
了解AdobeAIR中的Android受权
Android受权原生扩大为AIR使用程序开辟职员供应了会见AndroidMarket受权服务的才能。此服务可匡助您实行您经由过程AndroidMarket公布的付费使用程序的受权战略。当利用此服务时,您的使用程序可在运转时查询AndroidMarket来猎取以后用户的受权形态,然后同意或克制进一步利用。
- AIR使用程序利用一个原生扩大来会见AndroidMarket受权服务。
- 原生扩大利用受权考证库(LVL)与AndroidMarket受权服务器通讯,将了局传送回AIR使用程序。
- 原生扩大库向LVL发送哀求,将向使用程序供应呼应。
- 您能够修正在AIRSDK中供应的SWC的LVL和源代码。比方,假如您但愿为Android受权完成您本人的自界说战略,您大概但愿变动LVL代码。(默许情形下,LVL利用一种基于服务器的战略)。
利用Android受权原生扩大
入手下手之前:考证您的FlashBuilder正本是不是安装了Java开辟工具(JDT)。您必要JDT来在FlashBuilder中编纂Java代码。关于怎样安装JDT的具体信息,请参阅Jason在FlashBuilder中的Java开辟中的Flex博客文章中先容的步骤。
要利用针对Android受权的原生扩大,您必要创立:
- 1个Java项目
- 一个ActionScript基于
- AIR使用程序
创立Java项目
要创立Java项目,实行以下步骤:
- 启动FlashBuilder并选择Java透视图(拜见):
<br>
.在FlashBuilder当选择Java透视图。
- 选择File>NewJavaProject。
- 关于项目称号,输出AndroidLicensingJavaProject(拜见)。
<br>
.输出您的新Java项目标称号。
- 单击Finish。
- 要援用GoogleAndroidAPI,右键单击您的Java项目,然后选择Properties,然后选择左边面板中的JavaBuildPath,最初单击右边面板上的Libraries选项卡(拜见)。
<br>
.增加内部JAR文件。
- 单击AddExternalJARs并将它指一直自您的AndroidSDK目次的android.jar文件:<AndroidSDKDIR>platformsandroid-11android.jar。注重:倡议利用最新的AndroidAPI级目次。
- 创立来自AdobeAIRSDK的FlashRuntimeExtensions.jar的援用:<AIRSDKDIR>libandroidFlashRuntimeExtensions.jar。您如今必要将GoogleAndroidSDK中可用的LVL复制到您的Javasrc项目。
- 转到<AndroidSDKDIR>extrasgooglemarket_licensinglibrarysrc,复制com文件夹,将它粘贴到您的Java项目标src文件夹中。
- 链接到一切内部库以后,您如今必要我们的Java项目中的AIR原生扩大。转到AIRSDK,复制您的Java项目标src文件夹中的<air_sdk_dir>frameworksprojectsairLicensingAndroidAndroidLicensingJavaProjectsrc中的com文件夹。
如今,您的Java项目应当相似于。
<br>
.FlashBuilder中您的Java项目标包资本办理器
- 编译Java项目,应当没有编译毛病。
- 右键单击您的Java项目并选择Export,然后在Java当选择Jar,最初将Jar文件重定名为SampleAndroidLicensing.jar。
开辟ActionScript库
针对原生扩大设置您的Java项目以后,您必要创立一个ActionScript库,它撑持在Java代码与您的AIR使用程序在运转时通讯。
在今后,您将在AIR使用程序中援用此ActionScript库。
- 要开辟ActionScript项目,在FlashBuilder当选择Flash透视图。在持续之前,确保您在FlashBuilder中改写了最新的AIRSDK。
- 选择File>New>FlexLibraryProject。
- 关于项目称号,键进AndroidLicensingLib(拜见)。
<br>
.为您的新Flex库项目键进一个称号。
- 确保您选择了复选框IncludeAdobeAIRlibraries,不然Flash.external.ExternalContextAPI将不成用于您的ActionScript库。
- 单击Finish。
- 转到AIRSDK,将Flex库代码从frameworksprojectsairLicensingAndroidAndroidLicensingJavaProjectsrc复制到您的Flex库项目标src文件夹。
- 您还必要在Flex库项目中设置您的开辟职员公钥,您的AIR使用程序与AndroidMarket服务器之间的通讯必要它。登录您的GoogleAndroidMarket流派,复制公钥并将它设置为LicenseChecker.as文件中的BASE64_PUBLIC_KEY变量:
- //AddthePublickeyobtainedfromAndroidMarkethereprivatestaticconstBASE64_PUBLIC_KEY:String="";
复制代码 - 编译您的Flex库项目,您应当在项目标bin文件夹中看到AndroidLicensingLib.swc文件。如今,您的项目资本办理器应当相似于。
<br>
.FlashBuilder项目资本办理器显现Java和Flex项目。
开辟示例AIR使用程序
接上去创立一个AIR使用程序,它将经由过程您方才创立的原生扩大利用Android受权。
- 选择File>New>FlexMobileProject。
- 输出一个项目称号,我利用AndroidLicensingUsage(拜见)。确保没有利用不异的项目称号,由于此ID已在GoogleAndroidMarket中利用。
<br>
.键进Flex挪动AIR项目标称号。
- 单击Next,然后单击Finish。
- 接上去您必要增加下面开辟的ActionScript库的援用。右键单击此项目,选择Properties,然后在左边面板上选择FlexBuildPath。单击AddSWC并指向AndroidLicensingLib项目标AndroidLicensingLib.swc(拜见)。
<br>
.援用您的Flex挪动项目标SWC。
- 将SWC的链接范例变动为External,双击LinkType并从弹出菜单当选择External,单击Ok(拜见)。
<br>
.将链接范例设置为External。
- 要向您的项目增加UI组件,切换到计划视图并增加一个按钮,将它标志为CheckforLicense,为该标签供应一个idlbl。
- 切换回源代码视图,在监听器函数中向该按钮增加一个处置函数:
- varlc:LicenseChecker=newLicenseChecker();lc.addEventListener(ErrorEvent.ERROR,errorHandler);lc.addEventListener(LicenseStatusEvent.STATUS,licenseResult);lc.checkLicense();
复制代码 - 确保利用以下语句导进了ActionScript库类:importcom.adobe.air.sampleextensions.android.licensing.*;
- 接上去编写checkLicense办法挪用的一个呼应处置函数。增加以下函数:
- protectedfunctionlicenseResult(event:LicenseStatusEvent):void{lbl.text="status:"+event.status+"statusReason:+"+event.statusReason;if(event.status==LicenseStatus.LICENSED){//Applicationislicensed,allowtheusertoproceed.}elseif(event.status==LicenseStatus.NOT_LICENSED){//Applicationisnotlicensed,dontallowtousertoproceed.switch(event.statusReason){caseLicenseStatusReason.CHECK_IN_PROGRESS://Thereisalreadyalicensecheckinprogress.break;caseLicenseStatusReason.INVALID_PACKAGE_NAME://PackageNameoftheapplicationisnotvalid.break;caseLicenseStatusReason.INVALID_PUBLIC_KEY://Publickeyspecifiedisincorrect.break;caseLicenseStatusReason.MISSING_PERMISSION://LicenseCheckpermissioninAppdescriptorismissing.break;caseLicenseStatusReason.NON_MATCHING_UID://UIDoftheapplicationisnotmatching.break;caseLicenseStatusReason.NOT_MARKET_MANAGED://Theapplicationisnotmarketmanaged.break;default://Applicationisnotlicensed.}}}
复制代码 - 在编写利用Android受权原生扩大的AIR使用程序时,必要在使用程序形貌符中举行以下变动。在application标志以后增加一个扩大ID标志:
- <extensions><extensionID>com.adobe.air.sampleextensions.android.licensing</extensionID></extensions>
复制代码 一切实行允许证反省的使用程序必要一个Android权限,您必要将它增加到<manifest>标志下:- <uses-permissionandroid:name="com.android.vending.CHECK_LICENSE"/>
复制代码 别的,确保使用程序形貌符定名空间设置为3.0:- <applicationxmlns="http://ns.adobe.com/air/application/3.0">
复制代码 - 编译使用程序。这将在输入(bin-debug)文件夹中天生一个SWF/XML。注重:这里天生的SWF是一个调试SWF。在FlashBuilder中完成此义务的一种体例(不管是AIR项目仍是Web项目,大概不管是不是能够导出)是向编译器选项增加一个参数。为此,转到Project>Properties>FlexCompiler,然后向Additional编译器参数增加“-debug=false”。
最初,在单击按钮时,此使用程序将实行一次允许证反省,并在标签文本中打印呼应。
封装Android原生扩大和您的使用程序
关于您本人的项目,请确保浏览了下一节,个中供应了回护您的使用程序的倡议。
要封装您的使用程序,您必要以下文件:
- JAR文件,从Java项陌生成(这里为SampleAndroidLicensing.jar)
- SWC文件,从ActionScript库项陌生成(这里为AndroidLicensingLib.swc)
- AIR使用程序的SWF/XML文件,从您的Flex挪动项陌生成(这里为AndroidLicensingUsage.swf和AndroidLicensingUsage-app.xml)
- extenson.xml(一个示例文件,您能够在AIRSDK中的frameworksprojectsairLicensingAndroidAndroidLicensingLibsrc中找到)
创立一个名为PackageAL的事情文件夹,将一切这些文件复制到此文件夹,然后利用ADT工具(可在AIRSDK中找到)封装使用程序
天生ANE文件
- 在命令提醒符大将目次变动为指向您刚创立的事情文件夹,在这里创立一个名为Android-ARM的文件夹。
- 将SampleAndroidLicensing.jar文件复制到Android-ARM目次。
- 经由过程解压提掏出AndroidLicensingLib.swc,将文件library.swf复制到Android-ARM目次,然后删除catalog.xml,不要删除AndroidLicesingLib.swc。
- 利用以下ADT命令封装ANE文件。
在Windows上- <FullPathtoadt.bat>-package-storetypePKCS12-keystore<pathtoCertificateforNativeExtension>-storepass<password>-targetanecom.adobe.air.sampleextensions.android.licensing.aneextension.xml-swcAndroidLicensingLib.swc-platformAndroid-ARM-C.Android-ARM.
复制代码 在MacOSX上- <FullPathtoadt>-package-storetypePKCS12-keystore<pathtoCertificateforNativeExtension>-storepass<password>-targetanecom.adobe.air.sampleextensions.android.licensing.aneextension.xml-swcAndroidLicensingLib.swc-platformAndroid-ARM-C./Android-ARM/.
复制代码 天生APK文件
有了ANE文件以后,利用以下命令封装APK文件:
在Windows上:- <FullPathtoadt.bat>-package-targetapk-storetypePKCS12-keystore<pathtoCertificateforAIRapplication>-storepass<password>AndroidLicensingUsage.apkAndroidLicensingUsage-app.xmlAndroidLicensingUsage.swf–extdir.
复制代码 在MacOSX上:- <FullPathtoadt>-package-targetapk-storetypePKCS12-keystore<pathtoCertificateforAIRapplication>-storepass<password>AndroidLicensingUsage.apkAndroidLicensingUsage-app.xmlAndroidLicensingUsage.swf–extdir.
复制代码 注重:假如您但愿在设备logcat中检察轨迹,请将方针变动为apk-debug。
当将您的使用程序公布到市场,而且您使用程序的用户已从GoogleAndroidMarket购置了该使用程序,他们将收到呼应“Licensed”。
回护使用程序的技能
参考以下技能,使您的使用程序加倍平安:
- 不要与任何人共享AndroidMarket流派公钥。
- 将LicenseChecker.as中以下行中的函数称号“checkLicenseNative”变动为其他某个称号:
- varlc:LicenseChecker=newLicenseChecker();lc.addEventListener(ErrorEvent.ERROR,errorHandler);lc.addEventListener(LicenseStatusEvent.STATUS,licenseResult);lc.checkLicense();0
复制代码 - 修正AndroidLicensingExtensionContext.java中的以下行以与新函数称号婚配:
- varlc:LicenseChecker=newLicenseChecker();lc.addEventListener(ErrorEvent.ERROR,errorHandler);lc.addEventListener(LicenseStatusEvent.STATUS,licenseResult);lc.checkLicense();1
复制代码 - 依据必要改善AndroidLicensing.java中的SALT变量。
- 在天生SampleAndroidLicensing.jar文件以后,含混化它,然后封装ANE。JAR文件可以使用ProGuard工具含混化。您可使用本教程附带的设置文件(licensing.pro)来含混化JAR文件:
- varlc:LicenseChecker=newLicenseChecker();lc.addEventListener(ErrorEvent.ERROR,errorHandler);lc.addEventListener(LicenseStatusEvent.STATUS,licenseResult);lc.checkLicense();2
复制代码 SampleAndroidLicensing_o.jar重定名为SampleAndroidLicensing.jar并利用它封装ANE。
- 含混化ActionScript代码。
扫除使用程序的妨碍
下表先容了一些大概的毛病动静息争决它们的技能:毛病动静
怎样办理
有效的密钥标准毛病(来自logcat中的LVL)
确保您供应了您的GoogleAndroidMarket流派中可用的完整不异的密钥。
missingPermission(statusReason)
反省您是不是在使用程序形貌符中供应了AndroidPermissionforCheckLicense。
notMarketManaged(statusReason)
ID没法被GoogleAndroidMarket使用程序辨认,由于从未将具有此ID的使用程序上传到GoogleAndroidMarket。上传符合的使用程序。
接洽受权服务器时堕落(来自logcat中的LVL)
确保您登录过您的Android德律风的市场使用程序。另请确保您的设备具有无效的互联网毗连。
延长浏览
在这个示例中,您进修了怎样利用AIR原生扩大受权您的Android使用程序。要懂得关于ANE的更多信息,请会见AIR开辟职员中央中的AdobeAIR原生扩大。
<br>+
<br>
此作品根据CreativeCommonsAttribution-Noncommercial-ShareAlike3.0UnportedLicense受权。超越本允许证局限,与本作品中包括的代码示例相干的权限可在Adobe上找到。
检察原文:LicensingAdobeAIRapplicationsonAndroid
如果同时支持iOS5和iOS4用宏判断下就可以当然也可以直接用assign)还有一点开始学习的时候肯定很疑惑内存管理是基于函数名称的比如带alloccopy的函数用了之后返回的对象一定要release |
|