About

博客日常

  • 博客上线于2010-12-12,服务器设在在西部数据,感谢一直并未蒙面的东哥四年来对博客维护工作的支持,并祝即将成为父亲的他事业蒸蒸日上,儿女乖巧可人.
  • 博客于2014-04-16迁入阿里云,感谢zrong兄提供的一切帮助.有空一定到武汉拜访.
  • 博客于2014-06-26正式搬到digitalocean,免去了备案的麻烦.
  • 博客于2016-06-03 正常运行将达到2000天,任何简单的事情坚持久了就会成为习惯

博主生涯

技术在于分享,不追求严格的真理只追求突然的认知,这里记录我偶尔的思绪,不限定范围,人总是需要一个自己的地方 说说想说的 谈谈想谈的.内容包括并不限于:技术,生活感悟,日常开发笔记,影评,书评,游戏评.

Valar Morghulis

  • 2012-04-01 只身走出象牙塔.选择了一个叫深圳的城市.
  • 2012-04-23 正式进入IT行业 第一份工作 游戏黑盒测试
  • 2012-09-10 转为程序员,进入一家手游公司
  • 2012-11-24 第一个项目启动.
  • 2013-09-10 码龄满一周年.
  • 2014-02-18 第二个项目启动.
  • 2015-03-02 离开工作三年的中手游,也结束了付诸心血却夭折的海贼项目
  • 2015-03-03 进入朋友开的创业公司
  • 2016-04-01 深圳南飘四周年

推荐书单

人文类

技术类


联系推荐

Email Me …

image

Fork Me …

Rect`s Github

座右铭

光荣在于平淡,艰巨在于漫长

(出处无法考量,我第一次看到它是在0day:软件漏洞分析技术)

感谢

Do

76 评论

  1. 你好,几个问题请教你下。
    1.除了91有提供ane外,哪些运营商还有呢 ?找不到
    2.91的ane会报错?你不会吗?
    ArgumentError: Error #3500: The extension context does not have a method with the name NdInitFunction.
    at flash.external::ExtensionContext/_call()
    at flash.external::ExtensionContext/call()
    at net.nd.extension::NdCommplatform/init91SDK()[D:\91UNDATA\91UU\411250\RecvFile\连金祥_834251\Notification\Notification\NdCommplatfrom_Library\src\net\nd\extension\NdCommplatform.as:82]
    真心求解答额

    1. 你估计没有勾选 把ANE打包,FB-属性-构建打包-Google-android-找到91的ANE打勾

  2. 嗨,请教个问题,91官方安卓ane中虽然两个activity的android:launchMode都=”singleTask”,但是也会出现home出去再回去sdk页面消失的问题,这个是怎么回事?而且我把主activity的launchMode改为standard也不管用。

  3. 请下载我修改版本的打包工具,彻底解决这个问题 地址:http://www.shadowkong.com/archives/1196 @polly

  4. @Rect
    试了下3.7的adt,确实管用了。但是3.5中好像没有对应的adt。还有方便说下原理吗?想深刻理解下,我觉得至少不止是launchMode值这么简单吧?多谢!

  5. 我在公司试了3.5中的“原版”和“自由屏幕”下的adt,都不起作用,然后在家又写了个简单的Starling例子,用的3.7的adt是可以的。还有我在刚才的Starling例子中又测试了下你和zrong贡献的当乐ane,发现每次弹出当乐的登录框都会导致device context lost,之前91的ane是不会的。@Rect

  6. 你adt的路径没配对。注意放到相应的lib文件夹下。原版肯定不起作用,原版就是没修改的版本嘛。(你是否配了adt的系统变量?等等)device context lost 是因为:A.你starling参数没设好。B.你当乐activity的属性设置透明了。C.确定是最新从github下载的?针对GPU加速的当乐ANE我修改了一下,@polly

  7. 1、路径肯定没错,我都是用脚本编译打包项目。好,回头我再确认下。
    2、确实是当乐activity的属性设置透明的问题。
    3、之前说的“原理”其实是想知道具体都修改了adt的哪些东西 ;)
    最后再次表示感谢!长了不少知识。@Rect

  8. adt打包用具主要的操作代码在adt.jar这个库里面。把这个库逆向(或者说反编译),定位到操作打包APK的地方。在不改变代码逻辑的情况下 修改默认值,例如launchMode 等等各种APK的主XML属性都可以修改。(说白了AIR就是用一个原生外壳去调用SWF嘛。)我修改的这仅仅是修改了其中一个小地方,>> 做一个延伸,除了打包工具可以DIY之外 编译工具照样可以DIY。还有证书文件等等。(当然要在你有足够把握的情况下才动手。) @polly

  9. 嗨,用AIR在安卓上播放一段视频后,Jelly Bean 4.1.x + 的系统会出现黑屏的问题。具体操作步骤是:先打开应用,播放一段视频,然后按开关机键关闭屏幕,接着再按开关机键打开屏幕,这时候看到的应用已经黑屏了,但是仍然能够正常摸黑操作。4.1之前的系统不存在这个问题。不知道你有没有遇到听到过这个问题或者有什么好的解决办法?

  10. 显然当前AIR的activity在按下键的时候被从顶端栈堆中切掉了。可以修改AIR主activity的launchMode试试。@polly

  11. 您好,我最近开始转入手机项目,向您请教一下如下问题,恳请您为我解惑。
    1.Flex手机项目和AS手机项目两者的优劣分别体现在哪里,如何选择?
    2.Flash Builder 4.7自带的Air SDK为3.4,而目前Adobe官网最新的Air SDK已经到了3.7,项目中有没有必要一直保持最新的SDK,还是使用一个固定的版本?

  12. 1.建议使用AS手机项目.Flex手机项目相对来说复杂一点,而AS手机项目是单纯的AS代码项目,参数配置也相对简单。2.对于SDK版本的选取 这个要看情况而定,甚至可以在编译和打包上都可以选取不同的SDK版本工具。PS:版本高的SDK BUG修复得肯定比较多,如果是项目刚刚开始 建议使用3.5 3.6 或3.7。3.8的reslease版本还没放出。@airycanon

  13. 斑竹,您好,能加一下您的QQ吗?有些比较棘手的技术问题想你讨教一下,谢谢了,我的QQ:13353679

  14. Rect 你好,我有些ane上的问题处理几天了一直没解决,想请教哈!请加我QQ27437676

  15. 影箜你好,请教一个Android上AS项目的返回键问题,理论上在某个页面按返回键,则退回到上一个页面,但是按返回键时就直接退出程序了,怎样实现按返回键回到上一个页面比较好呢,我考虑把之前的几个页面缓存下来,然后阻止返回键事件的冒泡,可否指点一下,有没有更好的方案,先谢谢了。

  16. HI,RECT;
    你好,看到你的ANE教程,感触颇深,正好最近也在研究ANE,也遇到了问题。我在研究个flash桌面共享功能,但是flash本身没法实现这个功能,我用java写了个jar包去截取系统桌面,然后开放了个接口供air调用,但是我按照天地会ane打包教程生成ANE以后,在调用java接口的时候总是提示"空对象引用属性或方法"。我的这个AIR是打算用在win系统上的。现在几乎所有的ANE打包教程都是android平台。难道win系统上不能用么?

  17. 不是不能用,是就中国区来说,用AIR做桌面应用的非常少,甚至于用AIR做移动非游戏应用的也非常少,这一点除了大部分ASer都是曾经的页游开发者以外,AIR做应用很少人敢冒险也是事实.

    然后针对你的问题,你是否有进行合并jar?

    PS:桌面应用的话我建议尝试下ANE For C++.
    @SepheroH

  18. Rect,您好,不知道你的一些ANE包是不是可以做一些小修改付费使用,或定做一些ANE,可以的话,加下我QQ:1203564875

  19. 你好,能不能把安智的ane lib的源码放出来啊,安智的sdk貌似跟新到2.3版本了,而且好像app-name和anetoolkit的string冲突了

  20. lib源码是指?github上的结构如下:
    1.actionscript ANEas端代码,2.android ANE java端代码。另外,anetoolkit好像并没有使用到资源 怎么会有string?
    @罗胖子

  21. 我看到git上面安智的库里面没有android ane的java代码,只有demo和as端的swc的代码,
    AndroidAnzhiGame / android / src / com / anzhi / ane / AnzhiEvents.as

  22. @Rect,:.
    ├─actionscript
    │ └─mobile
    │ └─src
    │ └─com
    │ └─anzhi
    │ └─ane
    ├─android
    │ └─src
    │ └─com
    │ └─anzhi
    │ └─ane
    ├─aneTest
    ├─buildANE
    │ └─android-ARM
    │ ├─libs
    │ │ ├─armeabi
    │ │ └─armeabi-v7a
    │ └─res
    │ ├─drawable
    │ ├─drawable-hdpi
    │ ├─drawable-mdpi
    │ ├─layout
    │ ├─raw
    │ └─values
    └─buildAPK

  23. aapt tool failed:Warning: AndroidManifest.xml already defines versionCode
    http://schemas.android.com/apk/res/android); using existing value in manifest.
    C:\Users\ADMINI~1\AppData\Local\Temp\a52b19c4-0735-4984-ae2c-b53ab83632db\AndroidManifest.xml:70: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.UPPay’).
    求解 这个是什么原因导致我资源始终打包不进去呢?

  24. 请问大神 QQ是好多呢? 加一个吧 , 我的QQ是368715937 非常,非常感谢啊!


  25. 支持下
    我也遇到个需要ANE的项目
    在android上使用第三方 .so
    需要自己封装下
    ane 打包出来了
    结果在调试的时候 发现会没有任何提示的退出
    不知道该怎么下手了
    你有什么建议和经验吗

  26. HI Rect:
    首先感谢你在 ANE 打包之路上分享了大量有用的填坑技巧。
    我留言 自然又是遇到坑了。
    DuoKu 的SDK进行了混淆加密,导致会在同一路径出现 A.class a.class之类的文件,在合JAR的时候就悲具了。后来使用DouKuSDK做为主jar 再合。合出来的ANE解压出来看。看起来一切都是正常的。但是打包出来的APK一样存在问题。。。解压出classes.dex 破解后,发现然后是 A.class 和a.calss 只会存在一个文件。。搜索到你的RDT..但是最新只有 4.0 我们项目在用13.0的AIRADK 了。。难到要在linux下进行打包才可以解决么?

    1. @tinsgao, “使用DouKuSDK做为主jar 再合”,按照这种方式会报什么错误?错误查看方法:调试的时候,用eclipse的LogCat查看log数据.

  27. Could not find class ‘com.duoku.platform.n.D’, referenced from method com.duoku.platform.ui.DKPaycenterActivity.a

    这个D 是extends d的。。然后 d没有被打包进apk里边。。
    我是通过 反编译apk里的classes.dex 再用jd-ui 在查看的。。

    但是 我查看我生成的ane 里边 是存在这个 d.class的。。。所以我认为是FB4.7 在打包的时候出问题了。。

  28. Rect大神,我是用AIR开发手游的,我发现点返回弹出提示的时候会导致屏幕失去焦点,然后还要设置,很麻烦,
    我想弄个ANE做这些事情,一劳永逸,但是发现ANE里面无法加那个键盘事件。大神有什么办法么?
    另外,如果打ANE行不通,还有别的什么简单有效的办法实现点返回弹出是否退出的提示么,求大神指点,
    另外,AppEnty 里有什么办法加 函数么,

    1. @DH,
      1.键盘事件在AS可以侦听.例子:
      NativeApplication.nativeApplication.
      addEventListener(KeyboardEvent.KEY_DOWN, eMenuBarHandler);

      2.修改AppEnty请参照回调方案①

  29. 大神,求助,在线等,我用RDT方式打包游戏基地ANE,runtime文件夹以及里面的JAR包怎么打进去呢,就是在ANE阶段放进去呢,还是在buildAPK阶段放进去,放在哪呢,求指教,谢谢

      1. @Rect, 感谢大神回复,我先研究下。\android.sdk.online_v21016\SDK\runtime\CMBILLING.jar,这个是基地SDK里的jar包,我不知道怎么引入了。我先研究下你最新的打包方式,说不定能学到些方法。谢谢了。

        1. @DH, 这个jar不能打包进ANE.它只是一个隐射包,只提供编写代码的时候连接作用,切记

    1. @DH, 这个jar的作用不是编译,仅仅是提供eclipse连接时候不报错而已.官方文档里面有说明的.

      1. @Rect, 那是不是意味着,我打ANE的时候不用把这个包放进去,然后打APK的时候也不需要把这个包放到根目录下,就是我不需要这个包,是吧。这个包只是让我程序不报错的,没有真实用途,是不是可以这么理解

  30. 大神,我来了,还是基地ANE的问题需要请教,
    Log.d(“ThranAne”, “加载资源文件”);
    System.loadLibrary(“megjb”);
    Log.d(“ThranAne”, “加载资源文件111111111111111111111″);
    上面代码是 CmgameApplication类中的一部分,这个类我放到了 打包ANE的那个JAR包里了。
    然后我也该了配置文件,android:name=”.CmgameApplication”
    然后我运行的时候查看 LOG 只有 D/ThranAne(28035): 加载资源文件 这一行,
    资源文件我就放在了 buildANE\android-ARM\libs\armeabi-v7a 下面,感觉好像没找到,还是啥原因,麻烦大神指点下。

    1. @DH, 07-25 14:30:50.513: D/ThranAne(28035): 加载资源文件
      07-25 14:30:50.513: D/dalvikvm(28035): Trying to load lib /mnt/asec/com.ourgame.cnchessmobile.ydbase-2/lib/libmegjb.so 0x419c0198
      07-25 14:30:50.514: D/dalvikvm(28035): Added shared lib /mnt/asec/com.ourgame.cnchessmobile.ydbase-2/lib/libmegjb.so 0x419c0198
      07-25 14:30:50.523: D/OpenGLRenderer(908): Flushing caches (mode 1)
      07-25 14:30:50.535: D/dalvikvm(529): GC_CONCURRENT freed 1865K (16780), 28% free 14329K/19884K, paused 15ms+8ms, total 138ms
      07-25 14:30:50.540: D/Launcher(908): Launcher, onTrimMemory: level = 20
      07-25 14:30:50.545: D/OpenGLRenderer(908): Flushing caches (mode 0)
      07-25 14:30:50.560: D/BufferQueue(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x43298060,api:1) cancelBuffer: slot=3
      07-25 14:30:50.570: I/BufferQueue(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x43298060,api:1) disconnect: api=1
      07-25 14:30:50.570: I/SurfaceTexture(129): [com.android.launcher/com.android.launcher2.Launcher] [virtual android::status_t android::SurfaceTexture::forceAuxConversionLocked()] mCurrentTexture:2, mCurrentBuf:0x43298d08
      07-25 14:30:50.570: I/BufferQueue(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x43298060,api:0) getReleasedBuffers: returning mask 0xffffffff
      07-25 14:30:50.570: I/SurfaceTexture(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x432a1328,api:0) destroying EGLImage dpy=0x1 img=0x432b1eb8
      07-25 14:30:50.572: I/SurfaceTexture(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x432a1328,api:0) destroying EGLImage dpy=0x1 img=0x432b2368
      07-25 14:30:50.572: I/SurfaceTexture(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x432a1328,api:0) destroying EGLImage dpy=0x1 img=0x432af560
      07-25 14:30:50.572: I/SurfaceTexture(129): [com.android.launcher/com.android.launcher2.Launcher](this:0x432a1328,api:0) destroying EGLImage dpy=0x1 img=0x432a0ef0
      07-25 14:30:50.577: D/KeyguardUpdateMonitor(529): sendKeyguardVisibilityChanged(true)
      07-25 14:30:50.577: V/WallpaperService(621): Visibility change in com.android.systemui.ImageWallpaper$DrawableEngine@420c6098: 0
      07-25 14:30:50.577: V/WallpaperService(621): onVisibilityChanged(false): com.android.systemui.ImageWallpaper$DrawableEngine@420c6098
      07-25 14:30:50.577: D/KeyguardUpdateMonitor(529): handleKeyguardVisibilityChanged(1)
      07-25 14:30:50.577: D/KeyguardViewMediator(529): handleMessage enter msg name=SET_HIDDEN
      07-25 14:30:50.577: D/KeyguardViewMediator(529): handleMessage exit msg name=SET_HIDDEN
      07-25 14:30:50.580: E/dalvikvm(28035): ERROR: couldn’t find native method

      附带部分LOG

      1. @DH, 大神,我安卓是小白,看不懂LOG,这LOG是没找到资源的节奏么?

    2. @DH, CmgameApplication类在java源码中需要修改包路径(com.xxx.aaa.CmgameApplication,中的com.xxx.aaa就是包路径),这个路径要改为你的包名,一般情况下你的包名是:air.xxx.xxx.xxx,而这个xxx.xxx.xx在 AIR项目文件-app.xml中找.

      1. @Rect, 包名啥的我都改过了,既然能显示这行LOG,D/ThranAne(28035): 加载资源文件 相信程序已经运行到这里了,就是没有显示后面的一行LOG,是不是资源方的位置不对,还是啥原因呢

        1. @DH, 必须打包发行版的apk包.我的ANE so文件位置是对应发行版对应的so文件

        2. @DH, 我没有用你的ANE下的那个SO文件,但是看大小根我的应该是一样的,我用的是RDT打包的,肯定是发行版。求大神,给我点思路,怎么能把这个问题解决了。

        3. @DH, 还需要修改一个地方,修改android-ARM\res\values\g_string.xml中的 g_class_name 对应值为你项目的包名

        4. @DH, 请按照https://github.com/platformanes/AndroidCmgcGame 上面的步骤来做,打包好APK之后 还需要反编译修改androidmainfest.xml文件的

  31. 已经好了,敢接Rect的帮助,之前遇到的各种错误都是由于配置文件放错地方,或者少放资源文件导致的,我是把我的APK根Rect大神的APK一点一点对比哪里不一样,然后最后才走通的,谢谢,

  32. 我这里有个扫描和打印软件要做成ANE,想传给你估一下时间,再进一步洽谈

  33. 大神,在么,我用RDT方式打包支付宝的ANE,然后,我把 alipay20130423.apk ,放到bulidAPK的目录下了,直接打进去了, -package -target apk-captive-runtime -storetype pkcs12 -keystore DH.p12 -storepass 111111 XXXX.apk Main-app.xml Main.swf images cn alipay20130423.apk -extdir .
    pause
    这样直接打进去的,然后发现好像在游戏里面用不成,好像找不到这个apk的样子,没弹出支付界面,请问大神,哪里错了么?

    1. @DH, 刚试验了,先不把alipay20130423.apk 打进去,然后反编译,在放进去,在回编译,还是不行。说支付的时候说解析错误,解析程序包时出现问题。

      1. @DH, 已解决,我的那个支付宝的包邮问题,换了一个就好了。纠结,调了一上午。哎。

  34. 有一些关于安卓去除广告的问题请教,能给个方便的联系方式如QQ吗?谢谢。

    1. @xxoo, android去广告的技术 我的研究还不够深入.推荐你先去看我在about中列的安卓相关的书.

  35. hey,我从你的网站学到很多东西,表示感谢,我从Platorm ANEs 下载 了
    itools 的ane,来为我们的游戏接这个平台,现在平台的SDK有最新的,而且要求最新的,不然不给上线,如果不麻烦的话,可以更新最新的itools 的ANE么,感谢。。。

  36. public class OGLoginActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    if(intent!=null){
    Bundle bundle = intent.getExtras();
    if(bundle!=null){
    String username = bundle.getString(“Account”);

    int type = bundle.getInt(“AccountType”);

    String pwd = bundle.getString(“Password”);

    if(!pwd.equals(“”)){
    pwd = JNIEDTool.decrypt(pwd);
    }

    SysData.username = username;
    SysData.type = type;
    SysData.pwd = pwd;

    Log.v(“testLogin”,username+”,”+type+”,”+pwd);
    }
    }
    }
    }
    我用这个Activity接收了另外一个渠道传过来的账号和密码,然后我切不到我AIR项目的
    AppEntry 上去了,请问 我怎么能切到我AIR游戏的AppEntry上去呢,谢谢

    1. @DH, 修改AIR SDK中的ADT.jar包.你反编译找找其中有一个模版类.用来生成AIR项目的主activity代码.取出来修改之.你可能需要熟悉一点android反编译.

      1. @Rect, 可能我没说明白,感觉没你说的那么复杂下面是 MainFest.xml中的一段配置

        我先切到最开始发的 那段代码的那个Activity里,然后想切到我AIR项目的AppEntry,应该就是几行安卓代码就可以切吧,我估计,因为移动MM以及移动基地等都是运行完启动动画,也就是一个Activity然后切到AIR 的 AppEntry上去。但是我是安卓小白,不知道人家是咋实现的。Intent intent2 = new Intent();

        intent2.setClassName(“com.ourgame.cnchessmobile”, “AppEntry”);
        this.startActivity(intent2); 我曾经试过这样写,但是运行就崩溃了,估计是找不到包或者AppEntry导致的吧。而且不知道可以不可以写多个 Intent。

        1. @DH, 配置没发上 追加下 activity android:name=”com.three.myaneoglogin.OGLoginActivity” 就是吧他设置成主启动项

        2. @DH, 不要估计运行崩溃,而是崩溃的时候查看LogCat 看看具体原因

发表评论

电子邮件地址不会被公开。 必填项已用*标注