目录
一、前言
- 接下来我们将在linux环境下进行 GroundSDK-Android 的安装与调试,Parrot官方给的文档大体上没问题,但是我此前从未接触过Android开发,因此遇到了一些坎,特此记录。
- 以下为官方安装教程链接:
1、Setup Ground SDK AAR
2、Install and build GroundSdk - 如果某些文件无法编辑,可以使用chmod命令改变文件的权限,注意谨慎使用。
二、环境准备
1、Ubuntu 18.04
- 我是使用双系统进行安装测试的,如果使用虚拟机,本文可以当作参考。
- 官网给的提示如下:
2、Android Studio 3.4及以上
-
官方下载地址:Android Studio
下载没反应的话可以尝试把下载网址中的 https 换成 http
-
安装 Android Studio: Android Studio Install
访问不了的看这张图就可以了sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
-
下载并解压到 /opt/ 目录下,执行命令:
cd /opt/android-studio/bin/ ./studio.sh
-
第一次打开Android Studio会提示我们没有SDK,按照提示下载即可,记下来SDK安装的路径。
-
我们需要配置环境变量,这里先不配,等下和NDK一起配置。
3、JDK1.8.0_321(只要是JDK8 都可)
-
从官网下载JDK8到/opt/目录或其它目录下 并解压( 下载链接)
-
配置环境变量: vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_321 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
-
记得保存!然后关闭。为了使改动生效,还需执行:source /etc/profile
-
检查jdk安装是否成功:java -version
4、Android NDK Revision 17c for Linux
-
下载此版本NDK并解压到 /opt/ 目录下:Android NDK Revision 17c for Linux
-
配置环境变量前有一个小插曲,先下载安装 Repo 工具 (以下内容摘自Parrot官网)
- Download it from Google APIs
- Put it in a directory that is included in your path ——>(~/bin)
- Make it executable with chmod a+x repo
-
配置环境变量: vim /etc/profile
###这里配置了SDK、NDK以及Repo的环境变量 export ANDROID_HOME=/home/XXX/Android/Sdk export ANDROID_SDK_ROOT=/home/XXX/Android/Sdk export ANDROID_SDK_PATH=/home/XXX/Android/Sdk export ANDROID_NDK_ROOT=/opt/android-ndk-r17c export ANDROID_NDK_PATH=/opt/android-ndk-r17c export REPO_HOME=~/bin export PATH=$PATH:$REPO_HOME
-
记得保存!然后关闭。为了使改动生效,还需执行:source /etc/profile
5、下载安装编译好的LLVM
-
这里使用编译好的LLVM,也可以自己下载源码在本地进行编译,不过耗时太久,占用空间太多,不建议这么做,有兴趣的话可以深入研究。
-
想本地编译的可以看这位大哥的文章 LLVM_Ubuntu安装,直接下载编译好的步骤也是这位大哥做的,这里我偷个懒,哈哈~
-
安什么版本的一般都没关系,这里我安装的的是 LLVM 8.0.0,选择 Ubuntu 18.04(.sig) ——> LLVM下载官网
-
配置环境变量: vim /etc/profile
export LLVM_HOME=/usr/local/llvm/bin export PATH=$PATH:$LLVM_HOME
-
记得保存!然后关闭。为了使改动生效,还需执行:source /etc/profile
-
附:到这里我们的环境变量已经全部完成了, /etc/profile文件内容为
export JAVA_HOME=/opt/android-studio/jre export ANDROID_HOME=/home/XXX/Android/Sdk export ANDROID_SDK_ROOT=/home/XXX/Android/Sdk export ANDROID_SDK_PATH=/home/XXX/Android/Sdk export ANDROID_NDK_ROOT=/opt/android-ndk-r17c export ANDROID_NDK_PATH=/opt/android-ndk-r17c export LLVM_HOME=/usr/local/llvm/bin export REPO_HOME=~/bin export JAVA_HOME=/opt/jdk1.8.0_321 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$PATH:$LLVM_HOME:$REPO_HOME:${JAVA_HOME}/bin:${JRE_HOME}/bin
-
记得保存!然后关闭。为了使改动生效,还需执行:source /etc/profile
为了环境变量在当前用户下也可以正常生效,将上述文本复制到——> ~/.profilevim ~/.profile source ~/.profile
6、下载GroundSDK
-
首先你需要一个Github账户
git config --global user.name "Your Name" git config --global user.email "you@example.com"
-
选择GroundSDK的下载目录,我放到了 /opt/
cd /opt/ mkdir groundsdk cd groundsdk repo init -u https://github.com/Parrot-Developers/groundsdk-manifest repo sync
-
到这里,我们的工作已经完成一大半了,下面是 build.gradle 的配置, 编辑build.gradle 有两种方式:
1、先将工程导入到Android Studio再使用AS编辑 2、使用vim编辑器编辑: vim /opt/groundsdk/packages/groundsdk-android/groundsdkdemo/build.gradle 需要注意的是,配置的是Module下的build.gradle,也就是 build.gradle(Module:gsdk.groundsdk) 两条线之间的内容是官网给的需要添加的内容,这里有一个十分重要的点,就是这两个依赖的版本号
// Add Ground SDK dependencies implementation 'com.parrot.drone.groundsdk:groundsdk:1.8.0' runtimeOnly 'com.parrot.drone.groundsdk:arsdkengine:1.8.0'
应该和 https://github.com/Parrot-Developers/groundsdk-android 下图所示版本号对应.
PS: MVNRepository(这个网站可以用来查看你所引用的依赖都有哪些版本) -
接下来运行命令
cd /opt/groundsdk/ ./build.sh -p groundsdk-android -t build -j
-
运行成功以后,在你的grandsdk目录下会出现一个 /out文件夹 ,进到内层有以下几个文件夹,代表编译打包过后的程序支持什么系统,我们模拟器选择的系统应该是以下之一。
-
另外:简单来说jcenter马上要停止服务了,所以我们这里需要加上其他仓库,具体可以看官网公告:JFrog官网公告
repositories { // Add jcenter repository (if not already present) jcenter() google() mavenCentral() }
apply plugin: 'com.android.application' android { defaultConfig { // Google Geo API key. Put your own key to enable google Maps related features in demo. resValue 'string', 'gsdkdemo_google_geo_api_key', '' // Set minimum SDK version supported by GroundSdk minSdkVersion 24 } lintOptions { disable 'StringFormatInvalid', 'IconMissingDensityFolder', 'NonConstantResourceId' checkDependencies true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } repositories { // Add jcenter repository (if not already present) jcenter() google() mavenCentral() } dependencies { runtimeOnly project(':arsdkengine') implementation project(':groundsdk') implementation project(':sdkcore') implementation androidXLocalBroadcastManager implementation googlePlayServicesLocation implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.google.android.material:material:1.3.0' // Add Ground SDK dependencies implementation 'com.parrot.drone.groundsdk:groundsdk:1.8.0' runtimeOnly 'com.parrot.drone.groundsdk:arsdkengine:1.8.0' }
三、运行程序
- 此时我们编译运行代码已经不会出错了,也可以正常安装到模拟器上,但是在运行时会出现’groundsdk demo keeps stopping’的问题,是因为模拟器的系统没有选择正确。
- 打开AVDManager
- 随便选择一个设备,之后选择系统
- 打开模拟器,如果出现以下问题,打开终端,输入 sudo chown XXX -R /dev/kvm(XXX是当前登录用户的用户名)
- File ----> Sync Project With Gradle Files
- 运行程序!
- 程序运行结果如下: