【已解决】 是否可以将Android端的大部分业务功能封装到c层?
这里有一个思考就是,我们能不能把功能的具体实现都用c\c++封装起来,然后打包成arm、x86等多平台的包,然后供web、pc(linux、windows)、android、ios这些平台使用,这些平台仅是作为一个数据显示和数据输入的设备而已。因为目前发现在移动端绝大多数的时候都是获取服务端的数据和往服务端传输数据,而较为复杂的功能都会封装成SDK,然后去依赖这个SDK,我们是否也可以把这些复杂的功能封装成so库或是动态库例,如向服务器请求数据,请求各种资源,我们在c层进行封装就行了(据我所知,像是音视频的播放ffmpeg就是封装在了c层,然后供上功能的开发,层应用去调用的),这样就能做到一个多端共用,甚至都不用混淆了,因为动态库的反编译难度很大,而各端仅是作为一个UI显示和数据输入即可。不知道这个想法是否可以,或是有什么我没有考虑到的缺点,希望各位可以提一下各自的想法。
1,你提到的作为公共库提供数据,也就是你要在c层实现网络请求,可以的,有相关的库。
如果是单个请求还好处理,也就是调用一次等结果嘛。
2,客户端情况如果复杂一点,比如,a请求完成后,根据结果请求b,b请求完成后根据结果请求c,如果客户端调用c层,是c层支持还是客户端套娃呢。又比如3个网络请求并发的,当他们都完成之后,才合并结果,不知道c层是否支持这样做。
3,如果让客户端所属的语言自己做请求,有很多解决方案。包括串联请求,并发都有。
4,上面距离ffmpeg能行得通,因为这东西就是一个盒子,前端给视频,他处理,返回结果,功能单一,就是处理视频数据,解码===。有固定的协议。不像网络哪有复杂。
5,c层做工具类比较多,比如加密字符串,服务器返回数据,客户端验证结果是否被篡改,或者发送服务器数据的时候,通过c层做一个签名,让服务器验证,如果Java做,拿到dex直接cv代码了,相对来说c层看到的是伪代码,但是对于大佬来说,一样的,混淆也没有用。