Android Studio升级遇到的问题记录
来源:互联网 发布:汉诺塔递归算法图解 编辑:程序博客网 时间:2024/05/16 23:52
Ⅰ.前言
博客,似乎好久不见了,一段时间的迷茫和忙碌,所以学习中的笔记记录也都未整理。看着PC桌面满满的笔记,是该静下心来整理整理。不积跬步,无以成江河,所以笔记还是必须要整理的。前几天安装了Android Studio开发工具正式版3.0.,看了AS3.0的功能介绍也尝试了,工具方面确实比2.3版本完善了很多,但是在项目的维护中,AS版本3.0仍遇到几个问题,刚好记录下.
Ⅱ.AS3.0遇到的问题
1.libsupportjni.so包运行失败
在真机(Android6.0)上是可以正常生成apk并运行的,而在夜神(Android4.4)模拟器则运行失败,报如下异常信息
dlopen("/data/app-lib/com.wyk.android-2/libsupportjni.so") failed: dlopen failed: cannot locate symbol "strtof" referenced by "libsupportjni.so"... 11-24 17:29:29.855 3513-3513/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wyk.android, PID: 3513 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "strtof" referenced by "libsupportjni.so"... at java.lang.Runtime.loadLibrary(Runtime.java:364) at java.lang.System.loadLibrary(System.java:526) at com.android.tools.profiler.support.ProfilerService.<clinit>(ProfilerService.java:41) at com.wyk.android.base.MyApplication.<init>(MyApplication.java:31) at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1208) at android.app.hInstrumentation.newApplication(Instrumentation.java:1007) at android.app.Instrumentation.newApplication(Instrumentation.java:992) at android.app.LoadedApk.makeApplication(LoadedApk.java:511) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345) at android.app.ActivityThread.access$1500(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5045) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)
简单分析:
可以在异常信息中看到 “libsupportjni.so “这个关键字眼,而在android4.4 的手机运行就会报错,6.0则没有问题,那么到底是Android版本的问题还是模拟器的问题,而之前没升级AS是可以运行在模拟器上的,这个问题只能待定了;
尝试了N多解决方法之后,找到了解决方法,即去掉 AS设置中的”Enable advanced profiling”选项,则可以在模拟器中正常运行。这是因为在5.0以上最好使用推荐的设置,Profiler工具可以帮助更好的分析内存、网络等情况,可以在AS的下方看到profier这个工具,而5.0以下则不支持。
解决:
单击AS菜单 run —-> Edit Configurations… 去掉 “Enable advanced profiling”的打勾选项
2.FileProvider类找不到,Apk运行则崩溃
解决了上面libsupportjni.so包导致运行失败的问题后,接着遇到下面这个问题
FATAL EXCEPTION: main Process: com.wyk.android, PID: 3976 java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.wyk.android-2.apk"], nativeLibraryDirectories=[/data/app-lib/com.wyk.android-2, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:4821) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4413) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4353) at android.app.ActivityThread.access$1500(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5045) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.wyk.android-2.apk"], nativeLibraryDirectories=[/data/app-lib/com.wyk.android-2, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.ActivityThread.installProvider(ActivityThread.java:4806) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4413) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4353) at android.app.ActivityThread.access$1500(ActivityThread.java:135) ...
简单分析:
FileProvider是Android7.0用于访问文件的ContentProvider的子类,主要用于解决Android7.0的文件访问的适配问题,在司的项目中已使用FileProvider做了文件访问的适配.那么怎么会在AS版本升级后,出现FileProvider找不到的异常?
其实这是由于项目方法数过多,已经超出65535,所以早期在项目中使用multidex分dex包,而没有正确配置引起的, ” MultiDex.install(this); ” 这个初始化方法一般是建议写在application继承类的attachBaseContext方法里,而项目中则是写在onCreate方法里的。AS3.0之前一直没有出现该问题,可能是3.0版本,工具的检查变得严格了
解决:
将 “MultiDex.install(this);” 这个初始化方法写在application继承类的attachBaseContext方法里,则解决
class MyApplication extends Application{ @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this);//解决65535 }}
Ⅲ.总结
AS3.0, Gradle版本也要升级到4.1,不过这个在AS3.0安装包里已经备好;
而由于项目中已经改为kotlin开发,在AS3.0中,Kotlin的插件插本也可以相应的升级.
参考:
http://blog.csdn.net/likuan0214/article/details/78539853
https://jingyan.baidu.com/article/00a07f3875e20482d128dc7e.html
- Android Studio升级遇到的问题记录
- Android Studio升级时遇到的问题。
- 升级Android Studio 3.0 遇到的问题
- android studio 版本升级及迁移遇到的问题
- android studio 升级常遇到的问题以及解决方法
- Android studio 2.2.3 升级到2.3遇到的问题
- android studio 3.0 升级 项目遇到的问题更改
- 升级Android Studio到3.0遇到的一些问题
- Android Studio升级至3.0所遇到的问题
- android studio、gradle升级后遇到的问题
- Android studio 升级到3.0时项目遇到的问题
- android studio 3.0 升级问题,遇到的坑;
- 记录android studio 配置遇到的各种问题
- 使用Android studio中遇到的各种问题记录
- android studio使用中遇到的问题记录
- android studio 编译时遇到的各种问题(持续记录)
- android studio遇到的问题及解决方案记录
- Android Studio遇到的问题
- 欢迎使用CSDN-markdown编辑器
- Unity 发布webgl 网页自适应
- Android 7.1 GUI系统-vsync信号的产生和接收(五)
- Shingling算法-简单说
- 198. House Robber
- Android Studio升级遇到的问题记录
- MySQL练习
- 模拟memcpy和memmove函数,以及他们的区别。。
- 几款移动跨平台App开发框架比较
- 自上而下,逐步求精的方法
- NB连网过程简介
- 566. Reshape the Matrix。
- TCP/IP协议族体系结构以及主要协议(下)
- 一行代码,让网站无限刷新