在看巡检APP和导入千寻RTK SDK的过程中,锻炼了Android开发能力。经验总结如下:
如何导入千寻SDK
导入流程
首先,按照Github上的demo ,在这个项目中,Device文件夹是他的库文件,若以拷贝方式添加,需要导入3个东西:
- Jar包:将
device/lib/文件夹下的Jar包拷贝到自己项目的app/libs文件夹下, - SO文件:将
device/lib/文件夹下的arm64-v8a和armeabi-v7a拷贝到自己项目的app/libs文件夹下,这两个文件夹包含了SO文件,通过这种方式导入SO文件需要同时修改app模块下的build.gradle文件,具体是在android包下添加sourceSets:
1 | android{ |
- Dependencies依赖:千寻RTK-SDK依赖其他的库如串口库,因此还需要导入其他依赖。在app模块下的
build.gradle文件的dependencies包下导入下面依赖(参考SDK的依赖):
1 | dependencies { |
碰到的问题和解决方法
1. 如何导入Jar包、SO文件
这部分对于初学者来说确实很困难,不过找到了一篇总结的很好的博客 ,总结了各种导入方式,可以参考该博客学习如何导入。
2. 导入的依赖库报错找不到指定版本
直接搜一下报错的库,找到官网示例的用法,很有可能是一些前置配置没配好,比如在导入**usb-serial-for-android**这个串口库的时候找不到指定版本,原来是因为需要Add jitpack.io repository to your root build.gradle。按照示例用法加上就解决了问题。
Android开发踩过的坑和新理解
在拿到新Android Project需要在本地允许时,首先需要检查gradle版本和gradle插件版本,可以将其设置为本地的版本,这样就不用在Sync时重新下新的版本。另外gradle版本和gradle插件版本要匹配,另外Android Studio版本和支持的Gradle插件版本也有对应关系,具体关系可参考[https://developer.android.com/studio/releases/gradle-plugin?hl=zh-cn] ,没对上也会报错。其中:
- gradle版本可以在gradle.wrapper.properties文件中查看:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip,表明当前gradle版本为7.0.2 - gradle插件版本在project的build.gradle文件中查看:
classpath "com.android.tools.build:gradle:7.0.3",表明当前gradle插件版本为7.0.3 - Android Studio版本可以在AS->Help->About中查看,当前Android Studio版本为2021.1.1 Patch2.
- gradle版本可以在gradle.wrapper.properties文件中查看:
从Android10.0(API 29)后,组里常用的在SD卡创建文件夹的方法(
Environment.getExternalStorageDirectory())就会失效。但这种方法很好用,因为在SD卡创建文件后,即使卸载APP,数据仍不会被卸载。使用这种方法创建文件夹保存文件时一定要注意targetSdkVersion<=28查看包名、app名称。
AndroidManifest.xml文件是安卓程序的详细清单,这里面有包名(package)和名称(name)Android Studio 如何添加和删除 Library Module。添加Lib后不可以直接删除,具体添加和删除流程可参考[https://blog.csdn.net/zgh0711/article/details/70948532]
各SdkVersion的关系:原则为:
minSdkVersion <= targetSdkVersion <= compileSdkVersion。其中compileSdkVersion是编译使用的SDK版本,这和本地sdk manager里面下载的sdk platform是对应的。如果没有下载该版本,as会自动下载。buildToolsVersion是构建工具的版本,和上面的SdkVersion没有任何关系。buildToolsVersion也是和本地sdk manager里面下载的sdk tools是对应的,如果没有下载该版本,as会自动下载。