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.
谢谢!