android studio 创建的安装包有的机型安装后不能运行

在Android Studio中,直接Build -> Build APK(s)创建apk安装包,给测试人员测试的时候,安装运行后一直卡死在黑屏的状态,测试机是努比亚的一款手机,android 4.4版本,然后拿来联机测试,打印日志显示的是Dalvik虚拟机找不到某些类。

错误信息大致是: dalvik: can not find class xxx.class.

然后我就分析了apk包的结构,查看各个classes.dex文件下的类,发现dalvik找不到的类在包里是有的,后来我就怀疑是不是gradle构建的时候有问题,因为最近把AS从2.1版本升级到了3.1版本,gradle也就升级了。

后来换了gradle的版本,修改如下几个地方:

1. 修改gradle-wrapper.properties文件

将现在的

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-all.zip

1. 修改项目的build.gradle文件

buildscript {
    repositories {
        jcenter()
        // google() 
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'  // 将版本从3.1.1改为2.1.2, 同时注释掉google(), 改为maven库地址
        // classpath 'com.android.tools.build:gradle:3.1.1' 
    }
}

3. 修改module的build.gradle文件,将dependencies中添加依赖的关键字由implementation或api改为compile.

gradle升级后,废弃了compile的方式,改为了impelementation或api(需要了解的请自行查找资料,在此不赘述了)。

=================== 以下才算是我的解决方式 ======================

所有都改完成后运行app,问题解决了,在努比亚4.4这台手机上可以运行了,不会出现黑屏了,但是apk安装后为什么应用名称变了,有时候变成false,有时候变成“搜索”,这是什么原因,然后我又查看了apk包,在resources.arsc ->strings,发现app-name的字段是存在的,而且值也是正确的名称,就没搞懂了,因为一时找不到原因,而项目又急着要提交上去,所以我最后还是把gradle改回以前的版本,在此基础上解决黑屏不能运行的原因。最后终于解决了!一个很简单的原因,android5.0以前的版本是不支持分包的,方法数有65535的限制。而我在build.gradle中尽然配置了multiDexEnabled=true. 只要改为false就可以了。-. -||| 

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled false  // 由 true 改为 false
    }
}

主要是以前的项目是用eclipse开发的,然后我接手后导入到AS中了,AS自动默认的multiDexEnabled=true,最开始没看到,所以浪费了很多时间。

然后再看apk的分析,就不会出现多个 classes.dex,只有一个了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值