Adreno SDK是高通提供的OpenGL开发SDK包,我们可以从里面学习到很多OpenGL知识,也能够加深对高通Adreno GPU特性的了解。
下载并安装Adreno SDK 目前最新的版本是Adreno SDK V5.0。 https://developer.qualcomm.com/software/adreno-gpu-sdk
编译前准备 (1) 进入AdrenoSDK\Development\Tutorials\OpenGLES目录,我们尝试编译里面的01_CreateWindow工程。 (2) 阅读HowToBuildAndroid.txt文件,大致了解我们需要做的工作。由于Adreno SDK V5.0发布于2016年3月,现在的编译环境已经发生了很大改变,我们几乎无法回到当时的编译环境中去。 (3) 安装Android Studio和ndk,并把ndk路径设置到环境变量,也就是要在命令行下能够运行ndk-build.cmd命令。
so库编译 (1) 命令行下进入工程AdrenoSDK\Development\Tutorials\OpenGLES\01_CreateWindow\build\Android\jni目录,输入ndk-build编译。 (2) 修改Application.mk文件可以设置编译某些架构的so,我只想编译arm 64 bit so,就在里面加入一行APP_ABI := arm64-v8a。 (3) 在ndk-build编译时产生如下错误,修改如下: a. strcmp、bzero、memcpy等符号找不到 在FrmApplication.cpp和FrmApplication_Platform.cpp文件中加入相应的头文件#include <string.h>即可。 b. FrmFile_Platform.cpp文件FrmFile_Open函数内报精度错误 做如下修改即可 //LOGI("Opened asset %s at %x", strFileName, (unsigned int)asset); LOGI("Opened asset %s at %x", strFileName, asset); (4) 修改完错误成后,编译生成libCreateWindow.so。
apk编译 (1) 查看01_CreateWindow\build\Android\AndroidManifest.xml文件,可以发现此App是直接从so进入NativeActivity界面,没有任何Java代码,也就是说编译此apk的目的就是把so库和AndroidManifest.xml文件打包进去。 (2) 这个工程我们可以下载一个ADT Bundle来打包apk,ADT Bundle里面包含Eclipse、ADT插件和SDK Tools,是已经集成好的IDE环境,可以从如下网站下载到。 https://www.androiddevtools.cn/ (3) 如果没有JDK则需安装JDK环境。 (4) 有的Android工程目录下有InstallAssets.bat文件,则需要执行此批处理,作用是把资源文件拷贝到当前Android工程的assets目录下,只是InstallAssets.bat里面的文件夹名称要修改为全小写assets,才能被Eclipse认识。 (5) 打开ADT Bundle里面的eclipse软件,将01_CreateWindow\build\Android\工程导入进去编译即可生成apk。
运行 将生成的apk装载进手机并运行,会发生闪退并打印如下Log,是由于FrmApplication_Platform.cpp内BOOL CFrmAppContainer::Initialize()函数最后没有return造成的,这里需在函数最末尾加上return TRUE;。 ERROR: The application failed to initialize, the application will now exit.
谢谢!