前言
今天老板说让我集成下音视频的功能,我到网上搜索了下,发现有云之讯,容联,融云等都在做,这几家公司我都使用了它们提供的apk,对比了下发现云之讯的音视频还不错,就打算开始集成,但是问题来了,现在公司使用的是Android Studio开发工具,但是它们只提供了Eclipse的Demo,然后我就把Eclipse工程导入到Android Studio工程中,发现各种报错,但是最后还是导入成功了。所以这里我自己总结了一下,希望能让其他开发者使用云之讯Demo少走一些弯路。
准备工作
1、电脑配置如下:
- Windows 7/8/10(32位或64位)
- 内存 最低:2GB RAM,推荐:8GB RAM
- 屏幕分辨率 最低:1280x800
3、去官网上下载Android Studio版本,下载地址为 https://developer.android.com/studio/index.html
4、使用Android Studio创建一个简单的Demo,并查看gradle版本和依赖
迁移步骤
1、Eclipse导出gradle项目
右击选择你要导出的项目 -> Export -> Android(Generate Gradle build files) 然后一直下一步,选择你要导出的项目,如下图:
2、修改gradle版本和依赖(此操作最好去做,不然导入时会非常慢)
修改一:找到build.gradle(就在工程目录下)文件,修改gradle版本为Android Studio版本
Eclipse导出的gradle:classpath 'com.android.tools.build:gradle:0.5.+'
Android Studio版本:classpath 'com.android.tools.build:gradle:2.0.0' (此版本以你下载的版本一致)
修改二:找到gradle-wrapper.properties文件(目录结构:gradle -> wrapper),修改distributionUrl的值为Android Studio默认值
Eclipse导出的distributionUrl值:http\://services.gradle.org/distributions/gradle-1.6-bin.zip
Android Studio默认值:https\://services.gradle.org/distributions/gradle-2.10-all.zip
(此值以你创建的Demo一致)
3、Android Studio导入
启动Android Studio进入“Welcome to Android Studio”这个界面,选择“Import project(Eclipse ADT,Gradle,etc)”,一定是这个选项,不然导入有问题。(如果你的Android Studio 不是在这个界面,那么通过File->close project就可以进入这个界面)然后找到步骤1中的那个项目就可以成功导入了。
4、耐心等待
第一次导入差不多需要三四分钟,后面就很快。
5、配置Android SDK(Configure Android SDK),导入Android SDK到工程中,这里你可以在SDK Manager中下载你需要的版本
。
6、跑你导入的工程,在跑的过程中发现一个问题,问题如下:
此问题是因为你的工程中.9图片不标准
,你打开这个图,看下有一些bad patch,修正下就好了(如果没有用,直接删除)。Android Studio导入很方便也很简单的。但是它的lint要求严格,会要求符合标准的文件命名和.9图。
7、修改上面这个错误之后,再次跑应用,发现又出现一个问题,问题如下:
此问题是因为Android Studio检测PNG图片合法性比较严格导致,我们可以在build.gradle里面添加如下代码:
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
改完之后是这样的:
android {
...
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
...
}
8、修改上面这个错误之后,再次跑应用,发现又出现一个问题,问题如下:
此问题是代码的编码格式有问题,原来的代码格式是GBK,但是现在导入的是UTF-8,在Settings -> Editor -> File Encodings下修改,如下图:
并且在build.gradle文件里面设置如下属性:
android {
...
compileOptions {
encoding "GBK"
}
}
9、修改上面这个错误之后,再次跑应用,发现又出现一个问题,问题如下:
此问题是因为这个类是UTF-8编码,但是里面的注释是GBK编码导致。修改如下:
在右边把这个类改成GBK编码,然后选择Convert,就可以。
10、
修改上面这个错误之后,再次跑应用,应用终于安装到手机上并且跑起来了,但是一到开始界面就崩溃了,崩溃日志如下:
java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-yunzhixun_video_SDK_v1000.2.0.1_L.9_release_f3553c742128a5e2c10c1bcab522738ba86a933a-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-yunzhixun_tcp_SDK_ver_3.0.5.8_release_01f592286e3f416819bf231a103a0f68005f98d7-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-yunzhixun_IM_SDK_ver_3.0.4.6_release_7b48dea13a89b8385923a9ac848946ffde24a656-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-uk_e5196f2c62913af8b93f2d3ef99bebaa1c816c41-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-baidumapapi_util_v3_6_1_b0088507dea5143e2e0c0ee3a7180477c7526ec0-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-android-support-v4_d2b240e336213fb31ae6983535f1af4b5f15538d-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-ForwardingDevelopmentTools_ver_1.0_release_32f1db7f6d41f24c0038b43335465e0167a3dffb-classes.dex", dex file "/data/data/com.yzx.im_demo/files/instant-run/dex/slice-BaiduLBS_Android_677ba3e9a86048692ea451f76614b90a2c52e7c4-classes.dex"],nativeLibraryDirectories=[/data/app/com.yzx.im_demo-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libUGo.so"
at java.lang.Runtime.loadLibrary(Runtime.java:379)
at java.lang.System.loadLibrary(System.java:1086)
at com.gl.softphone.UGoManager.<clinit>(Unknown Source)
at com.yzx.a.h.run(Unknown Source)
at java.lang.Thread.run(Thread.java:833)
分析日志发现是找不到.so库,解决办法是在build,gradle文件里面添加jniLibs.srcDirs = ['libs'],如下图:
android {
...
sourceSets {
main {
...
jniLibs.srcDirs = ['libs']
}
}
}
11、
修改上面这个错误之后,应用终于跑起来并且没有问题,但是跑起来的过程中是不是感觉有点慢,主要是因为配置的最大内存不够,下面我们就来配置下最大内存:
找到你安装Android Studio目录 -> bin -> studio64.exe.vmoptions(在这个文件里面配置),配置如下图:
-Xms2048m
-Xmx4096m
-XX:MaxPermSize=2048m
-XX:ReservedCodeCacheSize=1024m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
参考文档:
build.gradle文件参数说明:
http://www.open-open.com/lib/view/open1415793464648.html
Android Studio下载地址:
https://developer.android.com/studio/index.html
Android Studio使用介绍:
https://developer.android.com/studio/intro/index.html
Android Studio添加.so库说明:
http://jingyan.baidu.com/article/e3c78d644baaf23c4d85f57d.html
Eclipse代码导入到Android Studio文档说明:
http://www.cnblogs.com/jhj117/p/5638212.html