首页 > 其他分享 >2023-02-13 Android studio打包apk到手机上(模拟器也一样)运行时闪退

2023-02-13 Android studio打包apk到手机上(模拟器也一样)运行时闪退

时间:2023-02-13 17:00:09浏览次数:51  
标签:02 13 app 配置 应用程序 apk android 闪退 打包

环境: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

相关文章