xiaomi MACE 在ubuntu18.04编译运行纪实

最重要三点:注意版本,注意版本,注意版本!

  1. git pull git@github.com:XiaoMi/mace.git
  2. 照着https://mace.readthedocs.io/en/latest/installation/env_requirement.html#optional-dependencies,Docker不用装 ,把依赖项都装好,请一定要注意版本,TensorFlow不能用最新版,bazel不能用最新版,JDK也不能用最新版!不过我没有安装Docker和ONNX,但也是可以成功编译运行的。
  3. 在path中设置ANDROID_NDK_HOME和JAVA_HOME,NDK使用r15c,JDK使用1.8.0
  4. cd mace/mace
  5. sh build-standalone-lib.sh这个命令是用来编译生成各个平台架构下的libmace.a和libmace.so,当然也可以修改脚本只编译对应平台的静态或动态库
  6. cd mace/examples/android/
  7. sh build.sh,这个脚本脚本里默认的架构是arm64-v8a,执行成功会生成apk,位于app/build/outputs/apk/release/。
  8. cd app/build/outputs/apk/release
  9. adb install -f app-app-release.apk
  10. 应用名默认是“识物”

我在过程中遇到3个问题,前两个是编译库时遇到的,第三个是生成app时遇到的,都与依赖项版本有关,现在贴出来,希望大家遇到了不要慌:

  1. no such package系列,原因时bazel版本过高,我最开始安装的是0.21.0,降到0.19.0以下就可以,最好安装推荐的版本。
ERROR: Analysis of target '//mace/libmace:libmace_dynamic' failed; 
build aborted: no such package '@tflite//': The native http_archive rule is deprecated. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") for a drop-in replacement.
Use --incompatible_remove_native_http_archive=false to temporarily continue using the native rule
  1. 提示tuple没有types属性,原因是TensorFlow版本不对,换成依项推荐版本即解决
AttributeError: 'tuple' object has no attribute
  1. 由于我使用的是ubuntu18.04,所以java版本是10.0.2,gradle是3.0.1,解决这个问题,两个办法,一是升级gradle,二是降级java版本。第一种需要修改工程中的gradle相关文件,推荐使用第二种,下载JDK1.8.0,然后在path中将JAVA_HOME指向JDK1.8.0的路径,问题解决。

Error:Could not determine java version from “10.0.2"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值