TVM 安卓环境搭建部署

安装VULKAN 参考:https://blog.csdn.net/luolinll1212/article/details/113261022

在编译TVM,当config.cmake中将USE_VULKAN 设置为ON时
set(USE_VULKAN ON)
需要下载VULKAN

wget https://sdk.lunarg.com/sdk/download/1.3.268.0/linux/vulkansdk-linux-x86_64-1.3.268.0.tar.xz
cd 1.3.268.0
bash vulkansdk  # 编译vulkan
source setup-env.sh # vulkan -> 系统环境变量

安装LLVM

LLVM设置为ON时,需要安装LLVM

apt-get install llvm

安装jdk

从java中https://www.oracle.com/java/technologies/downloads/#java21 中下载jdk 21

jdk版本不能太高,用最新的jdk21版本在进行gradle clean build时,总是报错
D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null,不知道什么原因

最后下载jdk版本17,顺利编译通过

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

解压jdk并将jdk的路径加入系统环境变量中:

export JAVA_HOME=/root/3rd/android_jdk/jdk-17.0.9
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

安卓maven

下载maven:

wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

解压并配置maven环境变量:

export MAVEN_HOME=/root/3rd/maven/apache-maven-3.8.8
export PATH=$PATH:$MAVEN_HOME/bin

在tvm环境中执行make jvmpkg ,然后执行make jvminstall,这个命令执行完之后,输出结果如下:
image

注:

jdk与maven建议手动安装,博主原本直接使用的apt-get install 安装,但在make jvmpkg时总是编译不过去


下载android sdk

首先查看android版本对应的android API对应的level
Android api level对照表

因我的Platform Version为Android 8.1 对应的API Level 为27,在官网下载即可,也可以使用android的命令行工具下载
命令行工具下载地址如下:
https://developer.android.google.cn/studio/command-line/sdkmanager?hl=en

只下载Command line tools only下对应系统的包即可
下载sdkmanager:

wget wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip

也可查看官方的sdkmanager的使用教程:https://developer.android.google.cn/studio/command-line/sdkmanager?hl=en

sdkmanager "platform-tools" "platforms;android-27" --sdk_root=./android_sdk/

android-xx中的xx代表APIlevel ,--sdk_root 为必选参数,sdk_root指定sdk路径,

下载ndk

sdkmanager --install "ndk;21.4.7075529" --channel=3 --sdk_root=./sdkmanager/

下载license

sdkmanager --licenses --sdk_root=./sdkmanager/

--licenses用于创建lincense

sdkmanager安装参考https://blog.csdn.net/qq_38182842/article/details/110170630

在通过源码配置NDK时,报错:
ndk-build提示设置NDK_PROJECT_PATH变量
解决方法:

1 Android.mk和Application.mk应该在一个“jni”为名字的目录下,这样可以直接用ndk-build编译。
2 如果Android.mk和Application.mk所在目录的名字不是“jni”,需要通过变量指定,例如:
ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk
参考链接:https://blog.csdn.net/zqtao0219/article/details/98349905

配置SDK、NDK的环境变量

export ANDROID_HOME=/root/3rd/android_sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools

export NDK_HOME=/root/3rd/android_ndk/ndk/21.4.7075529
export PATH=$PATH:$NDK_HOME

安装gradle ---- 参考:https://gradle.org/install/

unzip gradle-8.5-all.zip

解压并配置环境变量:

export GRADLE_HOME=/root/3rd/gradle/gradle-8.2
export PATH=$PATH:$GRADLE_HOME/bin

执行gradle clean build用于生成apk文件

注:

在执行gradle clean build中出现报错,

Connect to maven.google.com:443 [maven.google.com/142.251.43.14] failed: Connect timed out

查阅资料是:https://maven.google.com 国内用不了
解决方案:
将build.gradle下的maven{https://maven.google.com} 替换成

maven {
           // url 'https://maven.google.com'
            url 'https://dl.google.com/dl/android/maven2/'
        }

保存退出,重新执行gradle命令即可。

在执行gradle clean build中,出现time out超时错误,报错信息如下:
image

原来将https://maven.google.com 修改为:https://dl.google.com/dl/android/maven2/发现,这个修改后的地址,该地址并不能正常访问
后查阅资料,将该url地址修改为阿里云的仓库地址(参考:Android项目报无法连接Connect to dl.google.com:443 dl.google.com/114.250.65.33
在project下的build.gradle修改为阿里云仓库地址

maven { url 'https://maven.aliyun.com/repository/google/'}
maven { url 'https://maven.aliyun.com/repository/jcenter/'}

截图如下:
image


运行结果

gradle clean build之后,会在app/build/outputs/apk生成app-release-unsigned.apk文件
使用dev_tools/gen_keystore.sh生成签名,并使用dev_tools/sign_apk.shapp/build/outputs/apk/release/tvmrpc-release.apk文件进行签名
image

最后就是要将签名的apk文件上传到Android端并安装它:

$ANDROID_HOME/platform-tools/adb install app/build/outputs/apk/release/tvmrpc-release.apk

参考:https://www.runoob.com/java/java-environment-setup.html#linux-install
https://www.runoob.com/maven/maven-setup.html

posted @ 2022-08-27 00:32  牛犁heart  阅读(382)  评论(2编辑  收藏  举报