Android:无法修复65k问题

时间:2016-06-02 12:41:41

标签: android android-gradle

我已经在这两天了。我尝试了所有与multi-dexing相关的解决方案,但无济于事。我删除了所有内容,以便我可以重新开始。

App gradle:

apply plugin: 'com.android.application'
android {
          compileSdkVersion 21
          buildToolsVersion "21.1.2"
          defaultConfig {
          applicationId "com.bilboldev.joestrategy"
          minSdkVersion 15
          targetSdkVersion 21
          versionCode 1
          versionName "1.0"
          multiDexEnabled true
      }
buildTypes {
    release {
        minifyEnabled false

        proguardFiles getDefaultProguardFile('proguard-android.txt'),     'proguard-rules.pro'
      }
   }
}

dependencies {
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.google.android.gms:play-services-ads:9.0.0'
}

apply plugin: 'com.google.gms.google-services'

Project gradle:

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.1.0'
    classpath 'com.google.gms:google-services:3.0.0'

}
}



allprojects {
repositories {
    jcenter()
}
}

内心最明显:

 <meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
 <application
    android:name="android.support.multidex.MultiDexApplication" ...

我读到的最常见的解决方案是不包含所有Google服务,只包含您需要的内容。因此我只编译一个广告。但它仍然无法发挥作用。

有些课程没有找到:

  

E / dalvikvm:找不到类&#39; android.os.UserManager&#39;,引自com.google.android.gms.common.zze.zzan方法

     

E / dalvikvm:找不到类&#39; android.app.AppOpsManager&#39;,引自com.google.android.gms.internal.zzpv.zzg方法

     

E / dalvikvm:找不到com.google.android.gms.internal.zzamq&#39;中的课程,引自com.google.android.gms.internal.zzdi.zze方法

     

等...

我尝试了我找到的所有方法,其中一种方法是this。 我还使用了最后提到的dexcount插件来计算我的应用程序中的方法。我不知道如何将文件附加到问题,以便您可以从here下载debug.txt。

注意:我认为这是65k限制问题,因为在4.4 Android手机上,广告显示并且错误不会显示在logcat中。但是在两部4.2安卓手机上,广告不显示,错误如何。但是,如果你看一下debug.txt:

  

方法字段包/类名

     

15236 5010 android

     

14282 9575 com

     

休息不到3k

我只是没有看到65k ......除非android及其下的内容(android.something)堆叠

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

添加GMS应该很容易达到64K的限制。

让我们看一下这里的情况:

  • 当你可能已经超过64K时,你就低于64K。
  • 你错过了课程。

没有完整的Gradle文件集,我猜这个问题与Proguard切断你要保留的东西有关。我建议先turning off Proguard obfuscation entirely并测试这是否解决了这个问题。

答案 1 :(得分:0)

ads依赖于其他依赖项,并且不会自行运行。首先,请尝试包含以下内容:

compile "com.google.android.gms:play-services-base:9.0.0"

答案 2 :(得分:0)

这些类似乎没有显示的原因似乎是因为它们与我的某些手机上的谷歌游戏服务不兼容。起初我以为我是最新的,因为我无法再更新谷歌播放服务。但我错了,因为“最新”是基于您的手机可以处理的最大版本(我能提出的最佳解释)

解决方案是更新与相关版本相关的sdk API(Android 4.1.2 Google API等)。

dexing解决方案不起作用的原因是因为它具有类似于65k方法限制的症状,它与过时的API有关。

如果您遇到的情况确实需要德兴,但仍然面临缺课,这可能是您的问题:)

android W / GooglePlayServicesUtil Google Play服务已过期。如果你在logcat中看到即使你的移动gms是“最新的”,那么你有这个问题

编辑:Stackoverflow不会让我接受我自己的答案,但就是这样。我将在两天内更新,除非mod可以将其设置为接受