ABIs [arm64-v8a] are not supported for platform. Supported ABIs are [armeabi-v7a, x86].

最近在macOS Big Sur(11.4)编译`Hummer`

$ git clone https://github.com/didi/Hummer.git

# 出问题的提交版本 ece6d899da93e83d58ecbe68659d34cafaed8c38
# git checkout ece6d899da93e83d58ecbe68659d34cafaed8c38

$ cd Hummer

$ cd android

$ bash gradlew clean build 

结果报错如下:

* What went wrong:
A problem occurred configuring project ':hummer-core'.
> ABIs [arm64-v8a] are not supported for platform. Supported ABIs are [armeabi-v7a, x86].

原因为默认引入的构建工具版本如下:

classpath 'com.android.tools.build:gradle:3.4.1'

解决方法为升级到:

classpath 'com.android.tools.build:gradle:3.6.4'

注意 目前测试发现,如果升级到

classpath 'com.android.tools.build:gradle:4.2.1'

不能成功编译。原因为`module.gradle`的配置没有被正确解析。

取消WordPress中h5/h6/h7英文强制大写

在使用WordPress写文章的时候,如果使用H5及以下字体,英文字母会被强制转换成大写,导致布局非常难看。

解决方法是通过覆盖默认的 text-transform属性,如下:

<h5 style="text-transform: none;">1.JavaScriptCore</h5>

参考链接


WordPress主题Twenty Sixteen错误解决

移动端 JS 引擎哪家强

在一般的移动端开发场景中,每次更新应用功能都是通过 Native 语言开发并通过应用市场版本分发来实现的。但是市场瞬息万变,Native 语言在开发效率上存在一定不足,并且从`APP版本更新`到`应用市场审核发布`再到`用户下载更新`,总会存在一定的时间差,这样就导致新的功能无法及时覆盖全量用户。

为了解决这个问题,开发者们一般会在项目里引入一门脚本语言,提速APP的研发流程。在移动端应用比较广泛的脚本语言有 LuaJavaScript,前者在游戏领域用的比较多,后者在应用领域用的比较多。本篇文章主要是想探讨一下移动双端(`iOS` & `Android`)的JavaScript引擎选型。由于个人水平有限,文章总会有遗漏和不足的地方,还请各位大佬多多指教。

JS 引擎选型要点

JavaScript作为世界上最热门的脚本语言,有着非常多的引擎实现:有Apple御用的 JavaScriptCore,有性能最强劲的V8,还有最近热度很高的QuickJS......如何从这些JS引擎里选出最适合的?我个人认为要有几个考量:

  • 性能:这个没话说,肯定是越快越好
  • 体积JS引擎会增加一定的包体积
  • 内存占用:内存占用越少越好
  • JavaScript 语法支持程度:支持的新语法越多越好
  • 调试的便捷性:是否直接支持debug?还是需要自己编译实现调试工具链
  • 应用市场平台规范:主要是iOS平台,平台禁止应用集成带JIT功能的虚拟机

比较麻烦的是,上面的几个点都不是互相独立的,比如说开启JITV8引擎,性能肯定是最好的,但它引擎体积就很大,内存占用也很高;在包体积上很占优势的QuickJS,由于没有JIT加持,和有JIT的引擎比起来平均会有5-10倍的性能差距。

下面我会综合刚刚提到的几个点,并选择了JavaScriptCoreV8HermesQuickJS4JSVM,说说它们的优点和特点,再谈谈他们的不足。

继续阅读移动端 JS 引擎哪家强