首页 > 系统相关 >Windows交叉编译MNN-3.0.0安卓版本库

Windows交叉编译MNN-3.0.0安卓版本库

时间:2024-12-25 17:09:43浏览次数:5  
标签:Task Windows 安卓 Studio MNN android 安装 app

一、写在前面

以下的步骤、流程都是基于MNN的文档,再结合自己的实践得出的,仅作为参考。
博主的环境是windows10专业版
MNN文档
MNN的Github仓库地址

二、下载MNN-3.0.0主库

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

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

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

2、使用SDK Manager安装NDK

image

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

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

image

如下就是安装完成了:

image

(2)设置环境变量

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

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

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

image

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

.\ndk-build.cmd --version

image

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

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

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

Cmake官网下载页面

image

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

image

3.4、JDK11的安装

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

四、Andriod Studio配置

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

4.1 配置JDK版本

image
image

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

4.2 配置NDK路径

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

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

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

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

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

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

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

> 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文件

标签:Task,Windows,安卓,Studio,MNN,android,安装,app
From: https://www.cnblogs.com/Vsonic12138/p/18629674

相关文章

  • NSSM工具 : 将 .exe 程序安装成 Windows 服务
    1、下载NSSMNSSM:theNon-SuckingServiceManagerhttps://nssm.cc/usage2、方式一:cmd方式安装服务将下载的压缩包解压,找到nssm.exe,以管理员身份打开cmd,在cmd中定位到nssm.exe所在路径,执行nssminstall服务名:按下enter键会自动弹出nssm的窗体:在Application-Application......
  • Windows 彻底卸载RabbitMQ
    要在Windows系统上彻底卸载RabbitMQ,确保删除所有相关文件和配置,请按照以下步骤操作:1.卸载RabbitMQ和Erlang打开“控制面板”,选择“程序和功能”。在已安装的程序列表中,找到“RabbitMQServer”,右键单击并选择“卸载”。同样地,找到“ErlangOTP”,右键单击并选择“卸载......
  • Windows 11 系统右键菜单默认显示全部选项的方法(亲测有效)
    本章目录:win11中默认右键效果如下:修改后效果如下:Win+R输入CMD打开终端:复制下方命令:输入终端:==重点:重启资源管理器,非常重要(参考其它教程都没有这一步)==输入终端:返回桌面,试验效果如下:win11中默认右键效果如下:修改后效果如下:Win+R输入CMD打开终端......
  • Windows结束指定端口进程
    Windows结束指定端口进程|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|......
  • Windows结束某个端口的进程
    Windows结束某个端口的进程|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------......
  • windows环境下elasticsearch分词器elasticsearch-analysis-ik安装
    windows环境下elasticsearch分词器elasticsearch-analysis-ik安装|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------......
  • windows 批量杀nginx进程
    windows批量杀nginx进程|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|......
  • win2012R2打Windows8
    win2012R2打Windows8.1-KB2919355问题|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-......
  • 针对Windows 11右键菜单显示不全的问题,可以通过如下方法修复
     使用注册表编辑器按键盘上的【Win+X】组合键,或右键点击任务栏上的【Windows开始徽标】,在打开的右键菜单项中,选择【运行】;运行窗口,输入【cmd】命令,按【确定或回车】打开命令提示符窗口;输入并按回车执行以下命令: reg.exeadd"HKCU\Software\Classes\CLSID\{86ca1aa0-3......
  • 开发安卓设备端应用
    开发安卓设备端应用在安卓设备端,开发者需要运行一个安卓应用(文档中也称为小程序Launcher),用来进行设备注册、运行小程序进行VOIP通话等操作。1.接入WMPF并运行小程序在安卓平台上,小程序视频通话能力是在小程序中实现的。需要由设备端运行的安卓应用拉起开发者开发的小程序......