环境:Rn项目apk,win10,android手机,as版本为4.2.2。
======================================================================================================
这是由chatGpt给出的解决方案:
1. 内存不足:如果您的应用程序使用了过多的内存,则手机可能无法正常运行它,导致闪退。
2. 配置问题:如果您的应用程序需要特定的配置,而您的手机不满足这些配置,则应用程序可能会闪退。
3. 编译错误:如果您的代码中存在错误或错误的依赖项,则应用程序可能无法正常运行,导致闪退。
4. 应用程序缺少权限:如果您的应用程序需要特定的权限,而您的手机未授予这些权限,则应用程序可能无法正常运行,导致闪退。
如果您想解决这个问题,建议您以下几个方面:
1. 检查应用程序的内存使用情况,并确保它不会使用过多的内存。
2. 检查手机的配置,确保它满足应用程序的所有要求。
3. 检查代码,确保没有编译错误或错误的依赖项。
======================================================================================================
这是其他方案:
解决方案1(经测试,然并卵):
关掉as的instant run(3.0还是3.5版本以上instant run 就改名为了hot swap); 删掉项目中android中的两个build文件夹; 诘责在as里面找到clear project,点击它,作用是清理缓存; 最后重新编译。
解决方案2(经测试,然并卵):
找到android/app/src/main/AndroidManifest.xml文件,在activity里面添加
android:exported="true"
这个的意识就是是否可以启动应用:true 可以启动;false 不可以被启动。
这个方法是网上大多数人推荐的方案,但是并不能解决掉我的问题,而且我手机也有4个g空间又怎么会存在内存不足的情况呢,我觉得还是编译时存在代码错误的问题。
比如:More than one file was found with OS independent path 'lib/armeabi-v7a/libfbjni.so'.
我觉得应该是个这个问题没有完全解决掉,因为我是直接merge合并了这个库(我后来exclude过滤了也不行,还是打包后运行闪退)。
解决方案3(已解决):
排查中,发现了android/app/build.gradle配置有问题,该文件里的defaultConfig对象中的applicationId被我写成了其他的名字,这里应该写com.xxx应用名。
不过,还是闪退。我在报错的信息中找到了一个关键【couldn't find DSO to load: libhermes.so】,然后开始基于它开始搜索,终于,让我找到了这篇文章https://coding.imooc.com/learn/questiondetail/159774.html。
不过,这篇文章并没有解释这个方案具体是怎么用的,为什么会这样做,这对于没有Android基础的我来说,简直就是一头雾水。
只需要在android/app/build.gradle中的android对象中的defaultConfig添加一个对象即可,代码如下:
android { defaultConfig { ... ndk { abiFilters "armeabi-v7a","x86" } } ... }
把这个ndk对象添加进去,然后重新编译打包,运行能打开app即代表成功。
ndk的作用:
ndk{abiFilters:}过滤
这个指令可以配置只打包你配置的so库,没有配置的就不打包。
至于为什么会闪退,从字面上来看就是so库的配置问题从而导致app崩溃。
标签:02,13,app,配置,应用程序,apk,android,闪退,打包 From: https://www.cnblogs.com/iuniko/p/17116211.html