一、写在前面

以下的步骤、流程都是基于MNN的文档,再结合自己的实践得出的,仅作为参考。

博主的环境是windows10专业版

MNN文档

MNN的Github仓库地址

二、下载MNN-3.0.0主库

在GitHub仓库进行项目克隆,截至2024.12.25,最新版本就是为3.0.0:

git clone https://github.com/alibaba/MNN.git

三、环境安装

在windows下面交叉编译MNN对环境有要求,主要是:

  • Android Studio
  • NDK
  • CMake >= 3.10
  • JDK 11

3.1、下载Android Studio

安装参考这篇博客:

Android Studio安装流程

由于只是利用Android Studio来编译MNN库,所以链接当中的步骤只需要看到应用安装完成之后即可。

3.2、Android Studio 当中 NDK 的安装

1、使用Android Studio打开克隆的MNN工程的项目文件

路径如下:

D:\DeskTop\MNN\project\android\demo



选择这个demo文件夹,然后打开即可。

2、使用SDK Manager安装NDK

(1)按照图中步骤,点击即可。有几点需要注意

  1. 选择好安装路径,后续设置环境变量是需要用到这个路径的
  2. 选择好需要安装的内容,这里指的是NDK
  3. 安装的时候注意网络环境,能科学就科学

如下就是安装完成了:

(2)设置环境变量

安装好的NDK还无法直接使用,需要设置环境变量,



然后在系统变量这里新建如下:

  • 变量名:ANDROID_NDK
  • 变量值:D:\MyApplication\Android\Sdk\ndk\28.0.12674087

在箭头处点击编辑,然后填入安装的NKD路径即可。之后确认设定,可以在powershell当中进行验证,进入到ndk的路径下,然后执行

.\ndk-build.cmd --version

如果是在Android Studio当中进行安装的,还需要重启应用。

3.3、Cmake下载以及系统变量配置

打开cmake官网,然后选择大于要求版本的cmake即可:

Cmake官网下载页面

之后将cmake文件夹下面的bin文件夹路径添加到系统变量当中即可:

3.4、JDK11的安装

JDK的版本要求是MNN-3.0.0的工程要求的,安装的流程参考下面的链接:

JDK11安装流程

四、Andriod Studio配置

新安装的Andriod Studio使用的JDK是最新的,与MNN3.0.0的安卓demo使用的JDK版本不一样,在上一节我们安装了JDK11,配置了环境变量,并且也在cmd当中确认了安装是成功的。

4.1 配置JDK版本



按照图上步骤配置JDK11,选择JDK11的路径即可。

4.2 配置NDK路径

还记得我们之前使用SDK Manager按照的NDK吗,此时找到demo项目根目录下面的local.properties文件,然后配置sdk.dir和ndk.dir的路径:

4.3 Studio编译配置的解决方式:

新版本Andriod Studio编译旧版本工程问题解决

之后点击下图的,继续编译即可:

之后就会打开设备模拟器。

然后编译apk应用,具体如下:

这里编译可能会遇到报错如下:

> Task :app:compileDebugUnitTestJavaWithJavac FAILED
D:\DeskTop\MNN\project\android\demo\app\src\test\java\com\taobao\android\mnndemo\ExampleUnitTest.java:3: 错误: 程序包org.junit不存在
import org.junit.Test;
^
D:\DeskTop\MNN\project\android\demo\app\src\test\java\com\taobao\android\mnndemo\ExampleUnitTest.java:5: 错误: 程序包org.junit不存在
import static org.junit.Assert.*;
^
D:\DeskTop\MNN\project\android\demo\app\src\test\java\com\taobao\android\mnndemo\ExampleUnitTest.java:13: 错误: 找不到符号
@Test
^
符号: 类 Test
位置: 类 ExampleUnitTest
D:\DeskTop\MNN\project\android\demo\app\src\test\java\com\taobao\android\mnndemo\ExampleUnitTest.java:15: 错误: 找不到符号
assertEquals(4, 2 + 2);
^
符号: 方法 assertEquals(int,int)
位置: 类 ExampleUnitTest
4 个错误 > Task :app:compileDebugAndroidTestJavaWithJavac
> Task :app:compileDebugAndroidTestSources
> Task :app:dexBuilderDebugAndroidTest
> Task :app:packageDebug
> Task :app:assembleDebug
> Task :app:mergeDexDebugAndroidTest
> Task :app:packageDebugAndroidTest
> Task :app:assembleDebugAndroidTest FAILURE: Build failed with an exception. * What went wrong:
Execution failed for task ':app:compileDebugUnitTestJavaWithJavac'.
> Compilation failed; see the compiler error output for details. * Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4m 49s
55 actionable tasks: 35 executed, 20 up-to-date

解决办法是通过修改 app/build.gradle 文件来解决这个问题:

dependencies {
// 现有的依赖保持不变
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0' // 添加以下测试相关依赖
testImplementation 'junit:junit:4.12' // 添加这行
}

之后再次编译即可。最终可以在以下路径可以得到APK应用。

D:\DeskTop\MNN\project\android\demo\app\build\outputs\apk\debug

最后通过解压这个apk应用为文件夹,然后在lib文件夹下面可以找到包含mnn的*so文件

Windows交叉编译MNN-3.0.0安卓版本库的更多相关文章

  1. windows下 ionic 打包app --以安卓版本为例

    环境安装 1.nodejs 安装版本5.7,尽量不要安装太新的版本,因为可能会出现兼容性问题,一开始本人安装的是6.+的版本,后来出现问题的,马上换回5.7的,问题就不会出现了. 安装教程网上教程很多 ...

  2. Git学习之路(2)-安装GIt和创建版本库

    ▓▓▓▓▓▓ 大致介绍 前面一片博客介绍了Git到底是什么东西,如果有不明白的可以移步 Git学习之路(1)-Git简介 ,这篇博客主要讲解在Windows上安装Git和创建一个版本库 ▓▓▓▓▓▓ ...

  3. Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)

    大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...

  4. windows下安装 mysql 8.0 以上版本以及遇到的问题

    Windows 上安装 MySQL Windows 上安装 MySQL 相对来说会较为简单,地那就链接 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql ...

  5. 第二步 使用Cordova 3.0(及以上版本) 创建安卓项目(2014-6-25)

    参考资料: http://www.cnblogs.com/numtech/p/3233469.html http://blog.sina.com.cn/s/blog_9e245c690101jurr. ...

  6. MySQL8.0 zip压缩包版本 Windows下安装

    MySQL zip压缩包版本 Windows下安装 Download MySQL Community Server 解压到相应的目录 我的解压目录:D:\Program Files\mysql-8.0 ...

  7. 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

    关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  8. Windows下VTK6.0.0安装详解(CMake使用说明)

    操作系统:Windows7,用到工具:Visual studio.CMake. 1.准备工作 VTK下载: 下载最新VTK稳定版(6.0.0,截至2013年7月)http://www.vtk.org/ ...

  9. 转发 win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NE ...

  10. 当前标识(IIS APPPOOL\dfcreport)没有对“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files”的写访问权限。

    Asp.NET网站部署到IIS上面,浏览出现如下图所示错误. 原因原因最 原因: 1.IIS对该文件夹没有写的权限. 2.IIS和asp.net安装顺序错误,应该先IIS,然后asp.net. 3.没 ...

随机推荐

  1. query和params的区别

    2者都是编程式路由跳转用来存放传递数据的位置,query使用path引入,数据显示在地址栏上,params使用name引入,传递的数据在页面看不见 :

  2. 0503-autograd实战之线性回归

    0503-autograd实战之线性回归 目录 一.用 variable 实现线性回归(autograd 实战) 二.第五章总结 pytorch完整教程目录:https://www.cnblogs.c ...

  3. 妙用编辑器:把EverEdit变成计算器

    妙用编辑器:把EverEdit变成计算器 应用场景 日常工作过程中,会存在需要计算一些数据的场景,调用系统的计算器当然可以完成这项工作,但是需要来回切换,且系统自带的计算器没有表达式计算功能,真是不方 ...

  4. 5.15 相约上海!2021 年度首届云原生 Meetup | KubeSphere & Friends

    时至今日,Kubernetes 虽然变成了云原生这套系统化方法论和开源技术的核心一环,但已经无法独立存在,而是与云原生生态中所有的技术形态息息相关.为了将云原生生态中的各个技术形态结合起来,帮助企业最 ...

  5. redis的主从复制master/slaver

    什么是Redis的复制 ​ 就是我们常说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 复制原理 Slave启动成 ...

  6. Git仓库操作笔记[Git repositories]

    指令操作:Git Bash 重点:远程库和本地库之间操作 首先得在github网站 上创建一个 repository ,才能同步. 命令前提是进入githubLib 下的当前目录. 1.从远程库克隆到 ...

  7. Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList

    文章目录 一.Redis数据结构概述 1.1 Redis有哪些数据类型 1.2 Redis本质是哈希表 1.3 Redis的哈希冲突与渐进式rehash 1.4 数据结构底层 1.4.1 简单动态字符 ...

  8. 基于sqli-labs Less-7 的sql高权读写注入详解

    1. MySQL高权限读写简介 1.1 前置知识 数据库的高权用户对服务器上的文件进行读取写入操作,从而可以进行写入一句话木马来获得服务器权限或者读取服务器上的配置型文件等注入行为. select l ...

  9. J2eefast页面调试状态下自动进入debugger断点

    将fastJS.min.js 替换为 fastJs.js 将所使用到的模块的min.js 替换为js文件

  10. Nuxt.js 应用中的 vite:compiled 事件钩子

    title: Nuxt.js 应用中的 vite:compiled 事件钩子 date: 2024/11/19 updated: 2024/11/19 author: cmdragon excerpt ...