守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 1109|回复: 0

[Android] 开发腾讯移动游戏平台SDK Android版Ane扩展 总结

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51717
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-15 13:38:26 | 显示全部楼层 |阅读模式
    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方案

    问题一:编译报错:Unable to resolve target 'android-7':



    将低版本的代码导入eclipse时,常遇到这样的问题:Unable to resolve target 'android-XX'


    这是原代码中project.properties 的 Project target 设置与当前eclipse环境设置不一致所致。


    AVD(Android Virtual Device),是Android的模拟器。具体介绍和命令参数参照http://www.cr173.com/html/19430_1.html


    解决这个问题,只要把project.properties文件用记事本打开,将 Project target.target=android-7 改为你当前支持的AVD版本即可


    一般 android-8 对应的android sdk 是2.2, android-10对应的是2.3




    问题二:android怎么修改gen里的包名?


    gen是根据你的应用程序包名自动生成的,不需要、也不能手动修改


    可以把应用程序的包名改掉,重新编译下,就看到修改的效果


    名字在AndroidManifest.xml的package中,

    1. <font color="#333333"><font face="Arial"><manifestxmlns:android="http://schemas.android.com/apk/res/android"

    2.    package="com.example.flipe"</font></font>
    复制代码
    问题三:打包失败,原因之一是xml代码不规范,xml注释必须严格按照注释符来注释代码

    <!-- 注释 -->
    如果写成这样,则编译时会报错
    <!-- 注释 ------>

    问题四:生成的ane引入后调用sdk代码后无反应,或者出现闪退现象



    定位代码,是调用Activity窗体类时出错导致,但在android项目单独运行这个Activity时正常
    1. Intent intent = new Intent();

    2. intent.setClass(context.getActivity(),SDKActivity.class); //SDKActivity即我们自定义的Activity

    3. context.getActivity().startActivityForResult(intent,0X01);
    复制代码
    后通过logCat打日志发现
    原因1:没有引入msdk中的一个so类库NativeRQD文件,把该文件打包放进apk后ok
    原因2:使用了实例中PlatformTest类,直接使用WGPlatform类则正常

    问题五:调用QQ登录,登录时接口OnLoginNotify报flag=-1错误



    原因是未配置网络文件,需要把assets文件夹里面的内容放到flash项目中打包进去

    问题六:如何把android项目中res里面的资源文件打包进air发布的apk中?



    只需要把res里面的资源文件放到ane Android-ARM文件夹下打包进ane,发布apk时会自动打包进apk中
    注意资源文件分三种:
    • apk/assets文件可以放在air项目工程文件下打包进apk
    • apk/res文件可以放在ANE的打包文件夹中打包进ane
    • 其他位置文件就只有打包apk后在反编译添加进去在打包签名

    问题七:ane项目中如何读取res下的文件(air项目和android项目不同)



    例;drawable是res文件夹的子文件夹,sample_yuanbao是里面的文件名称
    1、android项目:
        通过id获取, int resId = R.drawable.sample_yuanbao;
    1.     Resources r =this.getContext().getResources();  //得到Resources对象

    2.     Inputstream is = r.openRawResource( resId);  //以数据流的方式读取资源
    复制代码
    2、ane项目:
        方法一:
    1.    int resId = cTContext.getResourceId("drawable.sample_yuanbao");

    2.     Resources r =cTContext.getResources();  //得到Resources对象

    3.     Inputstream is = r.openRawResource( resId);  //以数据流的方式读取资源
    复制代码
    方法二:
        使用使用getIdentifier()获取资源Id
    1. getApplicationContext().getResources().getIdentifier(name, defType,defPackage)方法在ane中获取资源
    复制代码
    详情参见:http://blog.sina.com.cn/s/blog_6714fba701018k8h.html

    http://blog.csdn.net/lilu_leo/article/details/6654386

    问题八:如何把so文件打包进apk中



    air项目:把发布的apk文件先用ApkTool工具(或者其他类似工具)解压,然后把so文件或其他资源文件添加进去,重新打包、签名。
    android项目:http://blog.csdn.net/zeng622peng/article/details/6675281

    问题九:为何打包资源里面选择了apk文件,也无法打包进apk



    原因是flash builder工具打包时会过滤apk,即使选择了.apk文件还是会剔除掉,如果要把第三方apk文件打包进去,必须使用命令行方式打包。

    问题十:使用命令行打包apk时,如果获得release的swf文件?



    方法一,使用flash builder导出release版本时,在生成temp文件夹后立刻终止flash builder的发布过程,然后去temp文件夹中找;
    方法二,使用adt命令行发布swf

    问题十一:如何方便的调试ane?



    1、用eclipse连接调试android手机程序(连上手机后,eclipse的 logCat里面能看到整个手机上的日志。偶尔看不到重新启动一下就可以)
    2、用xcode连接调试ios手机程序(XCode的顶部工具栏->Window菜单->Organizer项开启Organizer窗口,选中要用于调试的设备连接 mac .就可以看到详细日志了。)




    【原文链接:http://blog.csdn.net/linguifa/article/details/25832011/  转载请注明出处】




    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-9-15 14:16 , Processed in 0.046997 second(s), 37 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表