lefo的菜鸡实录

又是一个android开发

背景

修复v8::HandleScope::Initialize(v8::Isolate*)+144

接上一篇文章。由于平时更新不算频繁,加上个人也有些懒,一直没有深入思考 Cocos2d-x 2.x 在 Android 15/16 上的 V8 Crash 问题如何彻底修复

最近重新整理这个问题时,想到一个新的思路:
如何可以通过复用同一个 GLThread 来避免问题?

因为之前分析发现,Crash 的核心原因很可能来自 GLSurfaceView 在 View 重建时重新创建 GLThread。如果能够保证整个生命周期中始终使用 同一个 GLThread,也许就可以绕开这个问题。

于是开始重新阅读 GLSurfaceView 的源码,并尝试寻找可行的干预点。

阅读全文 »

问题背景

公司使用 Cocos 2.4.15 开发游戏时,发现一个 crash 在 Android 15 以上的设备上非常频繁。起初以为是 16KB 的兼容性问题,但分析后发现包其实是兼容 16KB 的。

在 Cocos 社区中,也有相关讨论:v8::HandleScope::Initialize(v8::Isolate*)。官方曾提供过基于 Activity 在 onDestroy 时的修复方案,但我们发现还有其它触发场景。

Crash 日志示例:

1
2
(v8::HandleScope::Initialize(v8::Isolate*)+144) (BuildId: a222c0a549189d49b84a5433428e92f58cba47f0)
(se::AutoHandleScope::AutoHandleScope()+36) (BuildId: a222c0a549189d49b84a5433428e92f58cba47f0)
阅读全文 »

前言

前段时间,朋友微信上和我说,NX54升级固件了,升级后,debug模式进不了,telnet也打不开了。至此,我之前分享的ipv6纯定制的方案,失效了,只剩下一种方式:ipv6防火墙开关。当然,也是可以满足ipv6访问的,只不过不可以只开放指定的v6ip了。简单吐槽一下这次升级:

  1. 不可降级。上了v13后,就算你保存了旧固件,也不可以降级。
  2. 不可debug。加了密码被堵死了。
  3. telnet默认关闭。之前配置文件中关于telnet的设置,新版本上没有了。

本篇不算什么黑科技,就是找一找升级的网络,然后停掉,算是一个小思路,但凡懂点网络知识的,应该都能明白。这次升级后,老版本且用且珍惜吧。

阅读全文 »

前言

6月份跳槽来了一家广告公司,整个业务逻辑就是流量玩法,上架市场,买量,赚广告费。因为gp上架越来越难,就衍生出一种玩法叫AB面。关于AB面,这里先不讲,主要说说B包的资源处理。这篇没技术,单纯自己记下来当笔记用。

id

id其实是个整数,应用内的id一般情况是0x7fxxxxxx,这个hex其实是package,type,value的结构。而代码中如果有R.id.xx,会在编译时直接替换成该整数。做AB面的包,B包都是通过动态加载的,这就导致这个整数,必须在使用时,和你的资源对应。10年有,有种粗暴的解决办法,就是构建一个自己的aapt,可以指定package,也就是前面的7f,然后再用添加Resources的方式,将资源添加到资源管理器中。这样就能一劳永逸。B包打包,使用0x7e的资源,A包不处理,这样AB的资源就不会冲突。

1
2
3
4
5
android{
aaptOptions {
additionalParameters "--package-id", "0x7E", "--allow-reserved-package-id"
}
}
阅读全文 »

前言

之前在家里的开发机上配了科技,但是媳妇的遥遥领先手机一直使用不了,大概排查了一下,应该是dns解析的问题,因为我把我路由fake ip的下一跳指到了内网一台设备上,但是我用工具查下一跳还是移动网关(10.41.x.x)。不能忍,开tcpdump查。

阅读全文 »

前言

前两天给模拟器上安装CA证书,发现即使放入/system/etc/security/cacerts/,依然不能用Charles抓包,设置里查看,证书也没有生效,终于找到了一篇详细介绍原因的文章,记录一下,以后更好找。

准备证书

准备你的SSL证书,重命名。

1
2
3
openssl x509 -inform PEM -subject_hash_old -in charles_ssl.pem | head -1
#将证书命名为得到的的结果.0
adb push xxxxxx.0 /sdcard/
阅读全文 »

前言

我主业是安卓开发,但不务正业的我又在折腾别的了。

之前写过一篇关于 NX54 如何配置 iptables 以开放指定 IP 的 IPv6 防火墙规则。最近又把手上的一块 14 年的废弃 ARM 开发板翻出来,挂了块硬盘,让我在任意设备上都能访问家里的网络。要说这块板子,官方系统只到ubuntu 2014,连python3都没法装,之前折腾过armbian,但kernel有问题,usb不工作。最近看论坛去年有人升级了内核了,赶紧换一下系统。

过年期间家属送了一台 Mac mini(现在百亿补贴入手价 2899,血亏 600),于是我又折腾了一下,把整个网络重新整理了一遍。熬了几个夜晚和午休时间,总算弄好了,这里记录一下过程中遇到的问题和解决方案。

之前我做了什么

  1. 桥接路由,这样可以直接获取公网ipv6地址,供自己在外边连接。
  2. 关防火墙。大多数路由器都有ipv6防火墙,像我的NX54就是基于ip6tables的配置,需要关掉。我是只关掉了我的linux的ip。我使用了脚本自动更新,脚本流程如下:
    1
    linux定时任务 -> python脚本 -> 获取ipv6 -> 发现变化 -> 更新nx54防火墙 -> 更新cloudflare dns AAAA(最早做了一版发email的,后来改ddns了)
    不得不说,cloudflare真的是互联网之光,域名便宜,免费加速,还提供Pages,Workers。
  3. linux关闭ssh密码访问,把常用的设备公钥加进去。
    阅读全文 »

背景

越来越多的网站像Github一样开启了2次验证,给你生成一个6位的数字动态口令,这种就叫TOTP,通俗讲,就是基于时间的一次性动态口令。我在家里搭了个Alist文件服务器,也默认支持TOTP,不过我开了HTTPS,用的也不多,TOTP验证就关了。我为什么要看这个呢,上班的地方wifi使用了h3c e盾认证,里面使用了SM3计算口令,每次连wifi还得点开app,索性看看它是怎么计算的。

阅读全文 »

前言

上一篇说到nx54路由器如何在官方防火墙上加一个自己主机允许访问的规则,在不关闭防火墙的情况下,还能走ipv6访问到内网设备,里面有提到ipv6地址变化的问题。这篇主要说说ipv6变化后如何通知你,通知路由器,以及一部分nginx配置心得。

ip变化通知,同时更新路由防火墙规则

注意以下所说的ip都是指ipv6,因为ipv4内网地址可以直接和mac地址绑定,不用通知你。

阅读全文 »

前言

NX54终于更新固件了,新版本支持配置关闭ipv6防火墙,但是,防火墙关闭,相对而言风险也就上来了。其实最好的办法是,在防火墙上稍微开一个小口就行了,也就是,只允许目标地址是你指定IP的数据通过,今天就大概说说如何最小风险去处理这件事情。主要有以下两个操作:

  1. ip6tables限制指定目标ip转发
  2. 关闭要访问的服务器的ssh访问,windows主机可忽略
阅读全文 »
0%