如何学习android的底层开发?
1.基于Android的CPU+GPU异构编程开发。目前主要有以下平台:
1.OpenCL
广泛应用于桌面系统和大规模并行计算的底层API。最近主流芯片厂商的旗舰或者准旗舰芯片都开始支持OpenCL1.1或者1.2标准,包括高通、三星、联发科、瑞芯微等厂商的芯片,都可以找到OpenCL支持。
2.库达
目前只有NVIDIA自己的Tegra K1芯片级设备(NVIDIA Shield)支持CUDA,所以支持范围比较窄。
3.渲染脚本(RS)
Google推广的异构编程的目的是平台帮你选择运行的处理器,也就是说你不知道你的程序运行在CPU还是GPU上,这是由系统的驱动决定的。想法很美好,但现实是开发者并不买rs的账。大家都觉得RS的性能不可控,灵活性太差,缺少文档也饱受诟病。另外,芯片厂商对rs的优化一般都处于比较低的水平,导致RS在实际应用中很少使用。
第二,由于OpenCL的普及,以下部分只针对OpenCL。
目前支持OpenCL的设备和芯片
1.支持OpenCL的GPU
高通几乎所有的GPU,包括但不限于以下GPU(adre no 305,320,330,405,420,430,530...).
ARM Mali的6系和7系GPU,比如T628和T760。
2014以来比较新的Imagination PowerVR GPU,比如G6430。
2.支持OpenCL的芯片。以下是支持OpenCL的主要芯片的粗略列表。
高通8064,8974(小龙800,801),8084(骁龙805),8994(骁龙810)等。
三星Exynos猎户座5420、5433(内置ARM Mali GPU)
联发科MT6752(内置ARM Mali T760 GPU)
瑞芯微RK3288(内置ARM Mali GPU)
3.支持OpenCL的手机和平板电脑。这是无止境的。这里只是举几个例子供大家参考。(注:Google Nexus系列手机或平板电脑虽然在硬件上支持OpenCL,但基本不支持OpenCL,因为OpenCL的驱动已经被删除;值得注意的是,据国外博客报道,可以将相应的OpenCL驱动推回到设备上,重启OpenCL支持。详见maxlv.net的页面。)
三星银河S4,S5,S6,Note 3,Note 4。
LG G2、G3、G4
HTC One M7、M8、M9
小米使用高通芯片的手机和平板电脑。
魅族M1 Note
台积电P90HD
等等,等等,等等。。。
如果不确定手头的设备是否支持OpenCL,可以使用OpenCL-Z Android进行检测。该软件可以显示OpenCL设备的详细信息,并运行微基准来检测设备的计算能力。
三、需要掌握的知识:
1.简单的GPU基础知识
2.OpenCL并行编程
3.安卓NDK知识
4.Android JNI界面的编程
5.Android程序开发的简单知识
四、开发的步骤(这只是步骤的简化版,只说明操作,不做解释):
1.编写OpenCL的C/C++程序,实现GPU的核心计算代码。
2.用安卓NDK编译之前写的C/C++代码。在这个阶段,您可以在纯C/C++环境中工作。可以编写主函数来测试实现的功能,用NDK把代码编译成可执行代码(BUILD_EXECUTABLE),然后用ADB把可执行程序推送到设备上运行。运行可执行程序要求设备具有root权限。如果没有root权限,可以通过Native Program Launcher(androidative Launcher github,可能需要翻墙)这个工具在设备上执行二进制代码。
3.最后一次测试后,功能基本正常。开始编写JNI界面。
4.开始编写Android应用程序,并使用JNI封装本机功能。将C/C++代码编译成动态链接库。
5.在Android程序中,以静态方式加载上一步编译好的动态链接库。
6.在需要的地方(比如点击按钮事件)调用相应的原生函数,实现相应的功能。