0%

千寻RTK-SDK添加以及Android开发踩坑经验小结

在看巡检APP和导入千寻RTK SDK的过程中,锻炼了Android开发能力。经验总结如下:

如何导入千寻SDK

导入流程

首先,按照Github上的demo ,在这个项目中,Device文件夹是他的库文件,若以拷贝方式添加,需要导入3个东西:

  • Jar包:将device/lib/文件夹下的Jar包拷贝到自己项目的app/libs文件夹下,
  • SO文件:将device/lib/文件夹下的arm64-v8aarmeabi-v7a拷贝到自己项目的app/libs文件夹下,这两个文件夹包含了SO文件,通过这种方式导入SO文件需要同时修改app模块下的build.gradle文件,具体是在android包下添加sourceSets
1
2
3
4
5
6
7
android{
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
  • Dependencies依赖:千寻RTK-SDK依赖其他的库如串口库,因此还需要导入其他依赖。在app模块下的build.gradle文件的dependencies包下导入下面依赖(参考SDK的依赖):
1
2
3
4
5
6
7
8
9
10
11
dependencies {
// rtk模块所需依赖
api 'com.github.mik3y:usb-serial-for-android:3.4.6'
implementation 'com.squareup.okio:okio:3.0.0'
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation 'io.reactivex.rxjava3:rxjava:3.1.0'
api files('libs/device.jar')
implementation files('libs/cmcc.jar')
implementation files('libs/qx.jar')
implementation files('libs/sixents.jar')
}

碰到的问题和解决方法

1. 如何导入Jar包、SO文件

这部分对于初学者来说确实很困难,不过找到了一篇总结的很好的博客 ,总结了各种导入方式,可以参考该博客学习如何导入。

2. 导入的依赖库报错找不到指定版本

直接搜一下报错的库,找到官网示例的用法,很有可能是一些前置配置没配好,比如在导入**usb-serial-for-android**这个串口库的时候找不到指定版本,原来是因为需要Add jitpack.io repository to your root build.gradle。按照示例用法加上就解决了问题。

Android开发踩过的坑和新理解

  1. 在拿到新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.
  2. 从Android10.0(API 29)后,组里常用的在SD卡创建文件夹的方法(Environment.getExternalStorageDirectory())就会失效。但这种方法很好用,因为在SD卡创建文件后,即使卸载APP,数据仍不会被卸载。使用这种方法创建文件夹保存文件时一定要注意targetSdkVersion<=28

  3. 查看包名、app名称。AndroidManifest.xml文件是安卓程序的详细清单,这里面有包名(package)和名称(name)

  4. Android Studio 如何添加和删除 Library Module。添加Lib后不可以直接删除,具体添加和删除流程可参考[https://blog.csdn.net/zgh0711/article/details/70948532]

  5. 各SdkVersion的关系:原则为:minSdkVersion <= targetSdkVersion <= compileSdkVersion。其中compileSdkVersion是编译使用的SDK版本,这和本地sdk manager里面下载的sdk platform是对应的。如果没有下载该版本,as会自动下载。

  6. buildToolsVersion是构建工具的版本,和上面的SdkVersion没有任何关系。buildToolsVersion也是和本地sdk manager里面下载的sdk tools是对应的,如果没有下载该版本,as会自动下载。