Arch Linux不依赖32位包安装Android编译环境

在代码中,我发现有三种通知(FLAG_FOREGROUND_SERVICE/FLAG_ONGOING_EVENT/FLAG_LOCAL_ONLY)是不会被发到电脑上的,这三种通知不发到电脑上也合理,会不会是张经理有什么特殊想法,要把微信通知标为其中一种呢?那就魔改一下kdeconnect-android。可是,aur上的android-sdk依赖了lib32的包,在我这个清真64位系统上,该怎么办呢?

注意此方法应该只适合编译不需要NDK的包

背景

在Arch上,只能使用网页版微信,但网页版微信又显示不了企业微信的通知(在补这篇博客时,公司已经关了微信显示企业微信消息的功能-_-,做事不能这么拖延),导致经常晚了回复企业微信的消息(挺好的,可以专注写代码)。所以,我就想到手机上的kdeconnect,为什么微信的通知不能通过kdeconnect显示在电脑上呢?于是,我就把kdeconnect-android的源代码clone下来(一言不合看源代码)。
在代码中,我发现有三种通知(FLAG_FOREGROUND_SERVICE/FLAG_ONGOING_EVENT/FLAG_LOCAL_ONLY)是不会被发到电脑上的,这三种通知不发到电脑上也合理,会不会是张经理有什么特殊想法,要把微信通知标为其中一种呢?那就魔改一下kdeconnect-android。可是,aur上的android-sdk依赖了lib32的包,在我这个清真64位系统上,该怎么办呢?

解决办法

这里可以看到命令行编译(就魔改一下,不可能去装个AS吧)所需要的工具。我需要通过aur安装的包有android-sdkandroid-sdk-build-tools,分别有三个lib32的包被依赖:lib32-gcc-libs、lib32-zlib、lib32-glibc,看了一下两个包的PKGBUILD,发现它们做的事就是去android的官网上去下压缩包并解压,过程中没有编译什么东西,kdeconnect-android也没有用到NDK编译,那么,不依赖这几个包应该也没有问题。不过,我还是把依赖改为这三个包的64位版本。

# android-sdk
depends_x86_64=('java-environment' 'libxtst' 'fontconfig' 'freetype2'
                'lib32-gcc-libs' 'lib32-glibc' 'libx11' 'libxext' 
                'libxrender' 'zlib')
# 改为
depends_x86_64=('java-environment' 'libxtst' 'fontconfig' 'freetype2'
                'gcc-libs' 'glibc' 'libx11' 'libxext' 'libxrender'
                'zlib')

# android-sdk-build-tools
depends_x86_64=('lib32-gcc-libs' 'lib32-zlib')
# 改为
depends_x86_64=('gcc-libs' 'zlib')

安装好了后,去编译了一波kdeconnect-android,还真的编译通过跑起来了。

后记

经过测试,发现微信的通知带了FLAG_LOCAL_ONLY,消息被标为只在本地显示(这会不会是我条同事鱼说微信消息不显示在iWatch上的原因呢?但感觉不太可能,十成是他自己的原因)。
于是,我把是否转发一个应用的只显示在本地的通知作为选项加进kdeconnect-android,并且发起MergeRequest,但kdeconnect-android的开发者们认为这么做过于麻烦,并且认为没有达到修复"bug"的目的(用户还要去选择打开选项,微信通知才会转发),但我又认为把微信hardcode进代码很恶心,也不认同这是bug,所以只能关了MergeRequest,自己维护一份魔改代码。