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去下载
(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中
错误解决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文件夹
创建JNI类
- 添加javah工具链File->Setting->Tools->External Tools->“+”进入页面
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接口
使用之前添加的javah工具编译生成JNI接口的.h文件
正确结果如下所示:
3. 创建JNI的.cpp、Android.mk、Application.mk
其中.cpp文件将通过javah生成的.h文件复制进去,并将函数的参数补全,然后完成函数的定义即可。Android.mk为工程配置文件,例子如下:(ncnn+mobilenet_ssd的mk文件)
Application.mk文件例子如下所示:
相关配置
- 修改app下的build.gradle文件
2.项目下的gradle.properties文件,添加代码如下:
android.useDeprecatedNdk=true
执行ndk-build
采用与javah一样的方法,将ndk-build加入外部工具中
选中JNI类右键->New->External Tools->ndk-build,结果如图:
Android Studio下的OpenCV配置
下载好Opencv4Android的SDK 作为Module导入Android Studio
修正导入后的错误
将app目录下的build.gradle文件和openCVLibrary320 module 下的build.gradle以下这几项改成一致(改成和app目录下build.grale文件一样即可)
compileSdkVersion
buildToolsVersion
minSdkVersion
targetSdkVersion
加入依赖项
加入动态库
将Opencv SDK 包下SDK目录下的native文件夹下的lib文件夹复制到JNI生成的libs文件夹中(此步骤用于保证将opencv的动态库打包进最后生成的apk中)
NOTE:使用说明,使用时需要使用下面的代码进行初始化
Android Studio生成发布版Release
Reference Website:
https://blog.csdn.net/to_perfect/article/details/69048419blog.csdn.net