2016-06-02 21 views
7

Tôi đã ở đây trong hai ngày. Tôi đã thử tất cả các giải pháp liên quan đến đa dexing và do đó, nhưng vô ích. Tôi đã xóa mọi thứ để tôi có thể khởi đầu mới.Android: Không thể khắc phục sự cố 65k

App gradle: 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' 

dự án:

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() 
} 
} 

Bên manifiest:

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

Giải pháp phổ biến nhất mà tôi đọc là không bao gồm tất cả các dịch vụ của Google, chỉ cần những thứ bạn cần. Và do đó tôi chỉ biên dịch quảng cáo một. Nhưng nó vẫn không hoạt động.

Một số lớp học không được tìm thấy:

E/dalvikvm: Không thể tìm thấy lớp 'android.os.UserManager', tham chiếu từ phương pháp com.google.android.gms.common.zze.zzan

E/dalvikvm: không thể tìm thấy lớp 'android.app.AppOpsManager', tham chiếu từ phương pháp com.google.android.gms.internal.zzpv.zzg

E/dalvikvm: không thể tìm thấy lớp 'com .google.android.gms.internal.zzamq ', được tham chiếu từ phương thức com.google.android.gms.internal.zzdi.zze

vv ...

Tôi đã thử tất cả các phương pháp tôi thấy, một trong số đó là this. Tôi cũng sử dụng plugin dexcount được đề cập ở cuối để đếm các phương pháp trong ứng dụng của tôi. Tôi không biết cách đính kèm tệp vào câu hỏi để bạn có thể tải xuống debug.txt từ here.

Lưu ý: Tôi tin rằng đây là vấn đề giới hạn 65k vì trên thiết bị di động Android 4.4, hiển thị quảng cáo và lỗi không hiển thị trong nhật ký. nhưng trên hai điện thoại di động Android 4.2, quảng cáo không hiển thị và các lỗi như thế nào. TUY NHIÊN, nếu bạn nhìn vào debug.txt:

phương pháp các lĩnh vực tên gói/lớp

15.236 5010 android

14.282 9575 com

Nghỉ ngơi ít hơn 3k kết hợp

Tôi không thấy 65k ... trừ khi Android và nội dung bên dưới (android.something) ngăn xếp

Tôi thiếu gì ở đây?

+0

Tôi không chắc mình hiểu cách "Không thể tìm thấy lớp học" có nghĩa là bạn đang đạt đến giới hạn 65k. Và bạn đã minifyEnabled là sai, vì vậy nó không nên obfuscate những lớp học –

+0

Cảm ơn bạn đã bình luận. Lý do tôi cho rằng vấn đề là giới hạn 65k, là bởi vì đó là những gì tôi tiếp cận trong khi googling. Nó cũng phải đối mặt rất nhiều sau khi mọi người thêm gms. Liên kết này là một ví dụ về những gì đã dẫn tôi đến kết luận này. Những điểm chung: D/dalvikvm, VFY: thay thế mã opcode 0x71 tại 0x0000 vv .. http://stackoverflow.com/questions/35794629/could-not-find-method-android-app-notificationbuilder-setlocalonly/35830652 –

+1

Chắc chắn. Bạn cũng có thể đọc hộp màu xanh thứ hai trên trang này, nhưng bạn đã xử lý đúng cách bằng cách chỉ bao gồm quảng cáo. https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project –

Trả lời

0

Có vẻ như lý do các lớp này không hiển thị vì chúng không tương thích với dịch vụ trò chơi của google trên một số điện thoại di động của tôi. Lúc đầu, tôi nghĩ rằng tôi đã được cập nhật bởi vì tôi không còn có thể cập nhật dịch vụ google play. Nhưng tôi đã sai vì 'cập nhật' dựa trên phiên bản tối đa mà điện thoại di động của bạn có thể xử lý (giải thích tốt nhất tôi có thể đưa ra)

Giải pháp là cập nhật API sdk liên quan đến các phiên bản được đề cập (Android 4.1 .2 Google API và như vậy).

Lý do giải pháp dexing không hoạt động là vì điều này, trong khi có các triệu chứng tương tự giới hạn phương pháp 65k, nó liên quan đến API lỗi thời.

Nếu bạn gặp phải một tình huống mà yêu cầu Dexing nhưng vẫn phải đối mặt với các lớp học mất tích, đây có lẽ là vấn đề của bạn :)

android W/GooglePlayServicesUtil Google Play dịch vụ trong ngày. nếu bạn thấy rằng trong logcat của bạn ngay cả khi gms di động của bạn là 'cập nhật', sau đó bạn có vấn đề này

Chỉnh sửa: Stackoverflow sẽ không cho phép tôi chấp nhận câu trả lời của riêng tôi nhưng đây là nó. Tôi sẽ cập nhật sau hai ngày trừ khi mod có thể đặt thành chấp nhận

1

Thêm GMS bạn sẽ dễ dàng đạt đến giới hạn 64K.

Vì vậy, chúng ta hãy nhìn vào tình hình ở đây:

  • Bạn đang ở dưới 64K phương pháp khi bạn có thể cần phải có được ở trên.
  • Bạn đang bỏ lỡ các lớp học.

Không có tập hợp đầy đủ tệp Gradle của bạn, tôi đoán rằng vấn đề có liên quan đến Proguard cắt nội dung bạn muốn giữ. Tôi đề nghị đầu tiên turning off Proguard obfuscation entirely và thử nghiệm cho dù điều này cố định vấn đề.

+0

Đã cập nhật câu hỏi với dự án và ứng dụng gradle. Ngoài ra phần của tệp kê khai có liên quan. Tôi không tin rằng có một thư mục bảo vệ chuyên nghiệp như đã đề cập trong liên kết bạn đã cho tôi. Không được minifyEnabled giả hiệu quả tắt proguard. Tôi vẫn còn mới với công cụ này :). Tôi thậm chí loại bỏ dòng này "proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.pro'" nhưng vẫn không có may mắn –

+0

Rất cám ơn Ngài đã chỉ cho tôi đúng hướng. Các lớp học bị thiếu do các API lỗi thời liên quan đến các phiên bản Android và không phải proguard loại bỏ chúng. PS: Việc thêm GMS chỉ vượt quá 65k nếu bạn thêm tất cả số đó :) –

0

ads tùy thuộc vào các phụ thuộc khác và sẽ không hoạt động riêng. Để bắt đầu, hãy thử bao gồm điều này:

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

Không may mắn. Ngoài ra mã của tôi hoạt động trên 4.4 điện thoại di động android :). –

+0

'Cơ sở' có phải là phụ thuộc không phụ thuộc không? –

+0

@ cricket_007, Bạn nói đúng, POM đề cập đến nó với phạm vi "biên dịch", vì vậy nó nên được bao gồm. – Egor

Các vấn đề liên quan