前面flashdevelop的操作跟调用ios的工程一样的,详见
flashdevelop调用ios方法
在flash工程里我主要用到android和ios的支付,参考了google code上的代码下面是地址
android的支付有点问题没初始化BillingService对象,一下是我修改的地方
1.添加初始化接口
functionMap.put("getProducts", new GetProductsCall() );
functionMap.put("startPayment", new StartPaymentCall() );
functionMap.put("finish", new FinishCall() );
functionMap.put("muted", new MutedCall() );
functionMap.put("restore", new RestoreCall() );
functionMap.put("trans", new GetTransCall() );
functionMap.put("init", new InitFunction() ); InitFunction这份方法他里面已经实现好了
functionMap.put("startPayment", new StartPaymentCall() );
functionMap.put("finish", new FinishCall() );
functionMap.put("muted", new MutedCall() );
functionMap.put("restore", new RestoreCall() );
functionMap.put("trans", new GetTransCall() );
functionMap.put("init", new InitFunction() ); InitFunction这份方法他里面已经实现好了
我在导入eclipse的时候回出现一下没用的引用可以删除,有个builder.sh我也把他上了,我打包ane的方法跟ios一样只是改变一下,具体怎么实现在后面
2.导入jar包
右键AppPurchase导入,在弹出的界面中选择java-》jar file 导出jar包
3.flashbuilder中打开 AS 工程
在你下载的svn目录底下有个 (我的目录结构是F:\android支付工程\svn\svn\branches\v1-And)下面有个as工程,打开工程在AppPurchase.as工程中加入flashdevelop调用的初始化方法
public function initMgr():void
{
ext.call("init");
}
{
ext.call("init");
}
4.右键as导出flash builder项目 生成.swc 文件
5.打包ane
as工程目录下有个extension.xml 可以考出来用,也可以照着ios的自己在搞一个,如果是照ios的方法改下里面的内容就成,我是照ios的下面xml内容
<extension xmlns="http://ns.adobe.com/air/extension/2.5">
<id>com.adobe.appPurchase</id>
<versionNumber>1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>AndroidPurchase.jar</nativeLibrary>
<initializer>com.sbhave.appPurchase.glue.AppPurchaseExtension</initializer>
<finalizer>com.sbhave.appPurchase.glue.AppPurchaseExtension</finalizer>
</applicationDeployment>
</platform>
</platforms>
</extension>
<id>com.adobe.appPurchase</id>
<versionNumber>1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>AndroidPurchase.jar</nativeLibrary>
<initializer>com.sbhave.appPurchase.glue.AppPurchaseExtension</initializer>
<finalizer>com.sbhave.appPurchase.glue.AppPurchaseExtension</finalizer>
</applicationDeployment>
</platform>
</platforms>
</extension>
将.swc ,jar, xml 三个文件拷贝到同一个目录下备份一个.swc改后缀名为.zip解压出library.swf
"D:\flex sdk\4.6.0\bin\adt" -package -target ane aneDemo.ane extension.xml -swc AneFlex.swc -platform Android-ARM library.swf libAneDemo.jar
在cmd下运行生成.ane 文件,这样在flashdevelop里就能调用了
6.调用.ane并配置android属性
将.ane文件放入lib目录加为libary,在手持设备属性里找到mobileAdditions 在android的设置选项卡中输入下面红色的字段就能实现支付功能了
<manifest android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
</manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
</manifest>
注意:要生成.apk或者.ipa包的时候才能用.ane,不然在模拟器上嵌入ane会认不到ane里面配置的id,编译会报错