Android studio在虚拟机上可以正常运行,而在手机上闪退的问题

img

img


有没有兄弟知道怎么解决Android studio在虚拟机上可以正常运行,而在手机上闪退的问题

该回答引用ChatGPT
从错误信息来看,应用在手机上闪退的原因是NullPointerException(空指针异常)。这意味着应用试图使用一个空对象或者没有初始化的对象。

有可能是因为代码中使用了某个变量,但是没有对其进行初始化或为其赋值,导致在运行时发生异常。也有可能是Android系统版本的差异导致的。

因此,建议进行以下步骤尝试解决问题:

1.检查代码中是否存在空指针异常,例如使用变量前是否对其进行了初始化或赋值等。

2.确保应用在手机上的最低支持版本与代码设置的最低支持版本一致。

3.在手机上运行应用时,观察Logcat中的错误信息,尝试定位错误位置。

4.可以使用try-catch语句捕获异常,并在catch块中进行处理。

下面是一个简单的示例:


try{
// 可能发生空指针异常的代码
}catch(NullPointerException e){
// 处理空指针异常
}


希望以上方法可以帮助你解决问题。

基于new Bing 精确模式的回答:

这个问题可能有很多原因。有时候,应用程序在模拟器上运行正常,但在真实设备上会崩溃。这可能是由于 Android 版本不同或设备硬件不同造成的。建议您连接手机到电脑并在 Android Studio 中查看 Logcat 以获取更多关于崩溃的信息12。

您可以尝试更新您的设备驱动程序,特别是如果您使用的是英特尔 HD 4000 GPU3。希望这些建议能够帮助您解决问题。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7604360
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Android studio打包空项目,真机闪退,模拟器正常运行,报错说类找不到
  • 除此之外, 这篇博客: Android Studio环境配置安装、搭建详细步骤及使用方法中的 Android Studio的下载和安装(新建工程和调试运行) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 提供一个国内镜像下载地址https://github.com/inferjay/AndroidDevTools

    下载完之后,如果是安装包,可以直接安装即可;如果是解压包,可以解压后,直接运行(安装目录下的studio.exe文件)。

    安装过程中,由于之前已经下载过SDK,所以跳过SDK的安装,一直next知道finish,运行打开Android studio,然后手动配置SDK,点击SDK Manager,配置已经下载好的SDK所在路径即可,如下图:

    Android Studio的工程目录结构
    当我们新建一个项目的目录结构默认是这样的:
    在这里插入图片描述
    可以看到和Eclipse的目录结构有很大区别,Android Studio一个窗口只能有一个项目,而Eclipse则可以同时存在很多项目,如果你看着不习惯可以点击左上角的Android机器人进行切换:

       将"Android"切换为"Project"后如下图:
    

    感觉这个和Eclipse中的结构很像。

      总的来说和Eclipse的区别有如下:
    
      1、Android Studio中有Project和Module的概念,前面说到Android  Studio中一个窗口只能有一个项目,即一个Project,代表一个 workspace,但是一个Project可以包含多个Module,比如你项目引用的Android Library, Java Library等,这些都可以看做是一个Module;
    
      2、上述目录中将java代码和资源文件(图片、布局文件等)全部归结为src,在src目录下有一个main的分组,同时划分出java和res两个文件夹,java文件夹则相当于Eclipse下的src文件夹,res目录结构则一样.
    
      关于工程目录结构只要使用习惯就可以了,不必过于多说啦,接下来说一下Android Studio的其他使用之处。
    
      3.主要文件和目录:
    
     (1)settings.gradle: 每个Moudle 要在这里注册,可以打开该文件看一下就会明白;
    
     (2)build.gradle:每个Project 的配置
    
     (3)app:每个Module
    
     (4)app/build.gradle:每个Module 配置文件,比如依赖的类库,SDK 版本
    
     (5)app/src/:源码和资源文件都在这里;我们写的文件都在这里面。
    
     (6)app/libs/:添加类库。
    

    Android Studio的基本使用

      之所以使用Android  Studio后都觉得很好用,是因为有很多地方用起来比Eclipse方便,用着非常顺手,看以下几处:
    

    1.Android Studio不用手动保存,他有着自动保存的功能;

    2.“TODO”视图很好的展现当前程序中的位置;
    在这里插入图片描述
    .Android Monitor视图中有Logcat、Memory等界面,关于Logcat使用起来也很方便;
    在这里插入图片描述
    4.对比Eclipse,Android Studio非常有特点的地方要数自带的“Terminal”了,对于Android开发人员来说这比单独开一个cmd方便多了,使用起来特别自如;
    在这里插入图片描述
    5.在Studio菜单栏的右边有这样几个常用的功能,如图分别是 Gradle同步、AVD Manager、SDK Manager、DDMS:

    (1)Gradle同步 在你项目运行或者更改Gradle配置的时候都要点击下这个按钮,会下载相应的依赖

    (2)AVD Manager 模拟器管理

    (3)SDK Manager 就是android 的SDK版本

    (4)DDMS 即 Dalvik Debug Monitor Service,Dalvik调试监控服务。
    在这里插入图片描述

是不是用的Pytorch?模型文件别导出为.pt文件,导出.ptl文件试试

img


这个sdk的jni so文件添加了吗?
pytorch_android_lite版本和转化模型用的版本一致吗?

以下内容部分参考ChatGPT模型:
首先,我们需要查看闪退的具体信息,可以通过Android Studio中的Logcat来查看。根据提问者提供的截图,可以看到闪退时出现了NullPointerException异常,说明代码中某个对象为null导致了异常的抛出。

接下来,我们可以通过debug模式来定位问题。在Android Studio中,可以通过在代码中设置断点,然后在手机上运行应用程序,在断点处停下来,逐步调试程序,找出哪个对象为null,从而解决问题。

另外,我们也可以在代码中添加一些判断语句,避免出现空指针异常。比如,使用if语句来判断对象是否为null,或者使用try-catch语句来捕捉异常并进行处理。

最后,我们还需要注意一些常见的导致闪退的问题,比如内存不足、权限不足、版本兼容性等等。针对这些问题,我们需要进行相应的优化和处理,才能保证应用程序在手机上能够正常运行。

举个例子,如果出现内存不足的问题,我们可以考虑对一些占用内存较大的对象进行释放,或者使用一些优化内存的技术,比如使用缓存等等。如果出现权限不足的问题,我们需要在应用程序中添加相应的权限申请代码,让用户授权后才能正常使用应用程序。如果出现版本兼容性问题,我们需要根据不同的系统版本来进行相应的适配工作,保证应用程序在各个版本的系统上都能够正常运行。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快