安装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,这个命令执行完之后,输出结果如下:

注:

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超时错误,报错信息如下:

原来将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/'}

截图如下:


运行结果

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文件进行签名

最后就是要将签名的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

TVM 安卓环境搭建部署的更多相关文章

  1. Java ee 与安卓环境搭建个人心得

    最近加了个IT俱乐部,第一次作业就是搞定eclipse,完成Java ee 与安卓环境搭建.为此我上网看了好多教程,之前我安装了Java,可以说省了不少事,而且还了解一点安装方法.流程网上都有,但是不 ...

  2. zabbix环境搭建部署(一)

     Linux高端架构师课程 Linux实战运维国内NO.1全套视频课程 QQ咨询:397824870  > 监控报警 > zabbix环境搭建部署(一) zabbix环境搭建部署(一) 监 ...

  3. VS 2017 开发安卓环境搭建 问题总结

    VS 2017可以开发安卓啦,之前一直想尝试开发安卓,但是由于时间忙, Java只学了个基础,不如C#熟练所以一直没有机会接触安卓开发.既然需要利用VS2017开发安卓,那么第一步就是了解VS2017 ...

  4. 08- Tomcat入门与环境搭建部署

    环境搭建:网站文件(开发人员提供),相关软件(web服务器,应用服务器,数据库软件),硬件(服务器设备上),网络环境. 开发人员提供:部署文档说明书(操作系统版本,硬件配置,服务器软件及相关版本,部署 ...

  5. ionic+angular+cordova 安卓环境搭建

    1.java环境配置 下载java jdk 百度搜索java jdk安装完后在cmd窗口输入Java -version 显示以下即为安装成功.然后把java jdk配置到环境变量. (1)选择[新建系 ...

  6. 安卓环境搭建(1)hellow world

    本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Andr ...

  7. Spark集群环境搭建——部署Spark集群

    在前面我们已经准备了三台服务器,并做好初始化,配置好jdk与免密登录等.并且已经安装好了hadoop集群. 如果还没有配置好的,参考我前面两篇博客: Spark集群环境搭建--服务器环境初始化:htt ...

  8. (转载):ganglia之环境搭建部署

    转载:http://www.360doc.com/content/19/0211/12/62122823_814215724.shtml 借鉴:https://blog.csdn.net/lswnew ...

  9. k8s1.20环境搭建部署(二进制版本)

    1.前提知识 1.1 生产环境部署K8s集群的两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...

  10. Ionic 2+ 安卓环境搭建

    安装 安卓studio https://developer.android.com/studio/index.html 设置一个环境变量 _JAVA_OPTIONS:-Xmx512M 添加androi ...

随机推荐

  1. 【攻防世界】wife_wife

    wife_wife 题目来源 攻防世界 NO.GFSJ1192 题解 本题没有源码,也没有提示,非常困难,在网上搜索此题可以看到源码.由于使用了assign(),因此存在Javascript原型链污染 ...

  2. C#中对面向standard2.0、standard2.1的项目进行单元测试

    单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1. 这是因为.NET Standard只是一个规范,它 ...

  3. 数据挖掘 | 数据隐私(3) | 差分隐私 | 差分隐私概论(上)(Intro to Differential Privacy 1)

    L3-Intro to Differential Privacy 从这节课开始就要介绍差分隐私算法了. 随机响应(Randomized Response) 场景提出 假若你是某一门课的教授,你希望统计 ...

  4. 【前端解决方案】已有本地项目如何建立github仓库

    步骤 1:在本地初始化 Git(如果还没初始化) 如果你的本地项目还没有 Git 仓库,先进入你的项目目录,并初始化 Git:   cd /你的本地项目路径 git init 这样会在你的项目中创建一 ...

  5. Redmine 中,如何新增一个字段名,比如"模块名称":

    why: 用于编写测试报告时能够直接根据模块名称进行统计,不对excel 表格进行自定义拆分-----规范性 登录到 Redmine 平台,并进入你的项目页面. 在项目页面上方的导航栏中,点击 &qu ...

  6. 如何用js精确计算一行文字的宽度

    之前有做过一个业务,需要在文本框输入文字的时候动态计算一行文字的宽度.并由此知道当前输入的这段文字会有几行. 如何计算? 每个文字的个数*宽度?理论上可行,但是有一个问题是不同类型的文字对应的宽度是不 ...

  7. manim边学边做--移动相机的场景类

    Manim作为强大的数学动画引擎,其核心功能之一是实现复杂的镜头运动控制. MovingCameraScene类正是为满足这种需求而设计的专业场景类. 与基础Scene类相比,它通过以下特性拓展了镜头 ...

  8. Golang入门:协程(goroutine)

    goroutine goroutine 是 Go 的并发模型的核心概念.为了理解 goroutine,我们来定义几个术语.第一个是进程.进程是程序的实例,由计算机的操作系统运行.操作系统将一些资源(如 ...

  9. 搭建自己的OCR服务,第一步:选择合适的开源OCR项目

    一.OCR是什么? 光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程. 亦即将图像中的文字进行识别 ...

  10. .NET 10 Preview 2 增强了 Blazor 和.NET MAUI

    .NET 团队 3.18 发布了.NET 10 Preview 2(https://devblogs.microsoft.com/dotnet/dotnet-10-preview-2/)..NET 1 ...