android studio_基于NCNN的Android应用程序环境搭建

Android Studio安装

直接下载Android Studio压缩包,解压放置到合适的位置,命令行调用bin目录下的studio.sh即可运行(相当于绿色软件)。为方便调用,在用户环境变量文件~/.bashrc中加入下述命令,即可在任意控制台内使用studio.sh调用

export ANDROID_HOME=/usr/local/android-studio/bin
export PATH=$PATH:$ANDROID_HOME

安装Android SDK,NDK,Gradle

Android SDK安装

使用 studio.sh运行android studio,提示找不到SDK,不用管一直向下,用Android SDK Manager自动下载相应的版本

NDK安装

单独下载与使用,主要利用它将C++代码编译成.so文件提供给Android调用,这里将其加入到AS中作为外部工具

Gradle安装

AS打开一个工程时,会先读取{your project}/gradle/wrapper/gradle-wrapper.properties 文件,从而知道这个工程需要的gradle版本(由下图最后一句决定),然后就会去保存gradle的文件夹GRADLE_USER_HOME去查看是否存在这个版本的gradle,不存在则会去distributionUrl去下载

v2-876fd4d449f1827549af39c8c0ec9d35_b.jpg

(1)因此,首先修改gradle-wrapper.properties中的gradle的版本,改成想要的,然后去https://services.gradle.org/distributions/下载对应的版本(在线下载太容易成功)

(2)打开项目,此时AS会自动下载gradle,并创建好目录,此时直接退出,可得到gradle的创建目录

linux:~/.gradle/wrapper/dists
windows: C:users{user name}.gradlewrapperdists

将下载的gradle放入对应目录下(一堆乱码文件夹下),不要解压。

错误解决1: 当新建项目clean project等操作时会出现下列问题:

Error:Execution failed for task ':app:preDebugAndroidTestBuild'.

> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

此时需将下面命令添加到 app/build.gradle中

v2-90f6b6dfaf49a11c96b12e78da472f87_b.jpg

错误解决2:AS报错Configuration on demand is not supported by the current version of the Android Gradle, Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.

解决方案1(不好用,因此本来也小于4.6):打开gradle-wrapper.properties文件,修改distributionUrl参数,将版本修改为低于4.6

解决方案2(gradle4.1时亲测好用)

a. 打开gradle.properties文件,共有两个文件global properties和project properties,将其中

org.gradle.configureondemand修改为false或删除/注释该语句

b. 通过File菜单,点击settings,找到build, execution, deployment中的compiler,将其中的Configure on demand取消勾选。


Android JNI开发

试验版本:Android Studio 3.0.1,NDK版本:android-ndk-r15c

创建JNI文件夹

v2-1b5199fa2c534db23ccd63e990e9a496_b.jpg
创建JNI类
  1. 添加javah工具链File->Setting->Tools->External Tools->“+”进入页面

v2-1f0d759559d604468a8a25e960f5aa98_b.jpg
Program:$JDKPath$binjavah.exe
Parameters:-classpath . -jni -d $ModuleFileDir$srcmainjni $FileClass$
Working directory:$ModuleFileDir$srcmainJava
注释:
-classpath classes 指明类所在的位置
-jni com.jni.jnitest.JNITest 类的绝对路径
-d 产生的.h文件放到指定目录下;

2.添加JNI的Java接口

在项目中添加Java调用接口类,其中loadlibrary用来加载之后JNI生成的动态库,带有native的函数为JNI接口

v2-16fa004d0b4fcf5f25e72863d6e0d7a0_b.jpg

使用之前添加的javah工具编译生成JNI接口的.h文件

v2-46d8cccb614d1b00b8bb0cd80edec5ce_b.jpg

正确结果如下所示:

v2-c20d2025590a3effa1028d875b623eb1_b.jpg

3. 创建JNI的.cpp、Android.mk、Application.mk

v2-b8f587a60540f35621f53fcf4f6b5404_b.jpg

其中.cpp文件将通过javah生成的.h文件复制进去,并将函数的参数补全,然后完成函数的定义即可。Android.mk为工程配置文件,例子如下:(ncnn+mobilenet_ssd的mk文件)

v2-543484dda15b69c52bc6c3edf4d622d3_b.jpg

Application.mk文件例子如下所示:

v2-cbb1271ee50203671b3ff6a73a6ade6f_b.jpg
相关配置
  1. 修改app下的build.gradle文件

v2-3e3e710ae2f39651eda3438fa48d8d78_b.jpg

2.项目下的gradle.properties文件,添加代码如下:

android.useDeprecatedNdk=true
执行ndk-build

采用与javah一样的方法,将ndk-build加入外部工具中

v2-a5b5d910e012b294d759ee7b4427f599_b.jpg

选中JNI类右键->New->External Tools->ndk-build,结果如图:

v2-bfe6c1f2cf5819f356f6ff3eb6a3661d_b.jpg

Android Studio下的OpenCV配置

下载好Opencv4Android的SDK 作为Module导入Android Studio

v2-1b63cc059c796bdf93a6c07ac24d21d9_b.jpg

v2-a87bc666f058a369ef43d211d97138ef_b.jpg

v2-c3973fbe8cc97f2d7f18993216c86b5d_b.jpg
修正导入后的错误

将app目录下的build.gradle文件和openCVLibrary320 module 下的build.gradle以下这几项改成一致(改成和app目录下build.grale文件一样即可)

compileSdkVersion
buildToolsVersion
minSdkVersion
targetSdkVersion
加入依赖项

v2-b65ba95323c591fb9864af44ed45bc1c_b.jpg
加入动态库

将Opencv SDK 包下SDK目录下的native文件夹下的lib文件夹复制到JNI生成的libs文件夹中(此步骤用于保证将opencv的动态库打包进最后生成的apk中)

NOTE:使用说明,使用时需要使用下面的代码进行初始化

v2-fdb91a462d51f4d10d4f31d9de8b3ce8_b.jpg

v2-0a348dc2f0de03181989c95c99705037_b.jpg

Android Studio生成发布版Release

Reference Website:

https://blog.csdn.net/to_perfect/article/details/69048419​blog.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值