Android ClassNotFoundException: Không tìm thấy lớp trên đường dẫn


97
10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561):     ... 11 more

Tôi không thực sự chắc chắn điều gì đang gây ra nó vì nó được liệt kê chính xác trong tệp kê khai:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gvg.simid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_OWNER_DATA" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-feature android:name="android.hardware.usb.host" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.gvg.simid.Login"
            android:label="@string/app_name" 
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Tôi cũng đã thêm "Thư viện riêng của Android" để xây dựng đường dẫn và di chuyển nó lên đầu "Đặt hàng và xuất", nhưng nó vẫn cho tôi lỗi tương tự.

CHỈNH SỬA: Tôi đã xây dựng lại dự án hoàn toàn và không thể tạo lại lỗi. Không chắc chắn điều gì đã gây ra nó.


2
bạn đang sử dụng proguard?
Juangcg

Proguard không được bật.
Phito

Kiểm tra bài đăng này: stackoverflow.com/questions/10866431/…
Juangcg

hãy thử ".Login" trong android: name để thay thế, Android sẽ tự thêm phần còn lại của tiền tố nếu nó không thể phát hiện ra nó. Chỉ có thể là một vấn đề phân tích kỳ lạ với Eclipse
Darryl Bayliss

@Juangcg Tôi đã đọc bài đăng đó trước khi thực hiện bài viết này, nhưng tiếc là mọi thứ tôi đã cố gắng từ đó không hoạt động.
Phito

Câu trả lời:


76

Tôi đã có cùng một vấn đề cho dự án của tôi. Nó xảy ra do xung đột trong phiên bản thư viện hỗ trợ android giữa dự án của tôi và dự án thư viện mà tôi đã thêm vào dự án của mình. Đặt cùng một phiên bản thư viện hỗ trợ android vào dự án của bạn và các dự án thư viện mà bạn đã đưa vào và xây dựng sạch sẽ ... Mọi thứ sẽ hoạt động ...


3
Cảm ơn anh bạn !!! Tôi chắc chắn rằng tôi đã làm điều đó, nhưng tôi đã kiểm tra và các phiên bản khác nhau! Cảm ơn rất nhiều!
Rodrigo Venancio

2
mình comment cái này để lần sau nhớ "update" sdk, xem câu trả lời này nhé
Enrique San Martín

1
Bất kỳ ý tưởng tại sao sự cố xảy ra nếu tôi không sử dụng thư viện hỗ trợ?
Budda

33

Phương pháp sau đây phù hợp với tôi

  • Nhấp chuột phải vào của bạn projectvà chọnproperties
  • Bảng "Thuộc tính cho" sẽ mở ra. Từ menu bên trái, chuyển đến Java Build Path->Order and Export
  • Từ danh sách bên dưới, bỏ chọn hộp bên cạnh "Android Dependencies"
  • Cuối cùng clean your projectvà chạy

8
Điều đó đã làm việc cho tôi. Ý nghĩa của "Sự phụ thuộc Android" là gì và tại sao nó lại giúp ích trong trường hợp cụ thể này?
Oleg Gryb

Làm việc hoàn hảo cho tôi! Cảm ơn rất nhiều!
prajitdas

7
Đây có phải là những hướng dẫn cho nhật thực không? Tôi không thể làm theo các hướng dẫn này cho studio android. Của tôi là projectgì? Điều đó nghĩa là gì?
Adam Johns

1
Có, những hướng dẫn này dành cho nhật thực
Chris

2
Liên kết này có các bước dành cho Android Studio stackoverflow.com/questions/18533054/…
Joseph Selvaraj

13

Đối với những người bạn đang gặp sự cố này trên Android Studio, tôi đã gặp phải vấn đề tương tự sau khi hợp nhất và vì một số lý do mà nó thậm chí vẫn tồn tại sau đó cleanvà các invalidate cash/restarthoạt động khiến tôi phát điên.

Hóa ra, nó có thể được sửa bằng cách chạy xây dựng gradle một lần từ dòng lệnh. Đơn giản chỉ cần chạy sau trong thư mục dự án:

./gradlew assemble clean
./gradlew assemble

Tôi hy vọng nó sẽ tiết kiệm cho ai đó sự lãng phí thời gian và sự thất vọng mà tôi đã phải trải qua.


Làm việc cho tôi quá
davedavedave

12

Tôi đã gặp vấn đề tương tự, điều này đã làm việc cho tôi

1) Đường dẫn đầy đủ của hoạt động trong tệp chính thay cho đường dẫn tương đối.

2) Xóa thư mục 'xây dựng' và làm sạch dự án.


Xóa thư mục xây dựng đã làm việc cho tôi. Tôi đã mất một vài giờ về vấn đề này, Cảm ơn bạn
Guy S

Làm việc cho tôi quá. Cảm ơn.
Dushyant Suthar

Đây là thỏa thuận thực sự. XD
Noob-Sci-Bot

9

Nếu bạn đang sử dụng Eclipse, hãy thử Project -> Clean


Hoạt động cho studio android - Dọn dẹp / Xây dựng lại dự án và chạy
frcake

8

Nếu bạn đã thêm một Library Projectmô-đun mới vào dự án Android của mình và bạn đang sử dụng Kotlintrong thư viện của mình, đừng quên thêm

apply plugin: 'kotlin-android'

lên đầu tệp Gradle của mô-đun của bạn. Android Studio không thêm dòng này khi bạn tạo một mô-đun mới và điều này có thể lãng phí hàng giờ của bạn như tôi.

Chỉnh sửa: Sau một thời gian, tôi lại phải vật lộn với vấn đề này và lần này tôi đã quên thêm mô-đun của mình làm phụ thuộc vào dự án. :)


Đã giải quyết nó cho tôi và tôi chỉ muốn đăng một câu trả lời. Ai bỏ qua trang hai trên SO để tìm giải pháp?
Kuno

Sự cố này xảy ra khi chúng tôi sử dụng dự án thư viện java ... giải pháp này đã khắc phục sự cố của tôi
Devrath

Điều này đã giúp tôi, cảm ơn :)
Sreekanth Karumanaghat

7

Điều này xảy ra nếu chúng tôi thay đổi Đường dẫn xây dựng của APP, điều này có thể xảy ra trong mọi trường hợp Thêm hoặc Xóa hoặc Thay đổi Thư viện hoặc tệp .jar. Giải pháp tốt nhất là Khởi động lại Eclipse.


6

Nếu bạn gặp lỗi này khi sử dụng tính năng Chạy tức thì mới trong Android Studio 2.0 trở lên thì đây là một số loại lỗi từ phía họ.
Để khắc phục điều này, bạn sẽ phải dừng ứng dụng của mình theo cách thủ công trên Thiết bị / Trình mô phỏng nếu ứng dụng vẫn chưa dừng thì hãy chọn từ Android Studio BuildRebuild Project.
Sau đó nhấp vào nút Run hoặc SHIFT + F10


6

Đối với bất kỳ ai đang có multidex, hãy viết điều này

bên trong build.gradle

apply plugin: 'com.android.application'

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

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

viết một lớp EnableMultiDexnhư dưới đây

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

AndroidManifest.xmlviết className này bên trong thẻ Application

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/wowio_launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

ohhhhh mahn ... câu trả lời hoàn hảo..tôi đã thấy câu trả lời này nhưng không có ai bình chọn nên tôi đã bỏ qua câu trả lời này và đã đi tìm câu trả lời đã bình chọn nhưng không hiệu quả.. cuối cùng tôi chỉ kiểm tra câu trả lời này và tôi đã nhận được nó, cảm ơn mahn. :) :) :) :)
Sachin Varma

rất vui vì nó đã giúp :)
Manohar Reddy

2
Điểm chính là mở rộng ứng dụng từ MultiDexApplicationlớp thay vì Application.
VSB

Cảm ơn. Tôi đã có một số Ứng dụng trong Tệp kê khai. Đã mở rộng nó từ MultiDexApplicationvà ngoại lệ đã biến mất trên Android 4.4.
CoolMind

6

Nếu bạn đang sử dụng Multidex trên Android 4.4 trở về trước, vấn đề của bạn có thể là lớp hoạt động của bạn nằm trong tệp dex thứ hai và do đó hệ thống android không tìm thấy.

Để giữ lớp hoạt động của bạn trong tệp dex chính, hãy xem trang này:

https://developer.android.com/studio/build/multidex.html#keep


Để tìm các lớp nằm trong tệp dex, hãy sử dụng Android Studio .

Chỉ cần kéo và thả apk của bạn vào Android Studio. Bạn sẽ có thể xem các tệp dex của mình trong trình khám phá apk.

Sau đó chọn tệp dex để xem những lớp nào bên trong.


một thay thế khác là dexdump:

Bạn có thể kiểm tra nội dung của các tệp dex có trong gói ứng dụng của mình bằng cách sử dụng lệnh dexdump có thể được tìm thấy trong

android-sdk / build-tools / 27.0.3 / dexdump

Đối với người dùng windows, hãy xem công cụ này mà tôi đã tạo để dễ dàng quá trình


1
Khi liên kết công cụ của riêng bạn, hãy nhớ tuyên bố bạn sở hữu nó .
LW001

5

Trong trường hợp của tôi, quá trình rút gọn proguard đã loại bỏ một số lớp quan trọng khỏi apk sản xuất của tôi.

Giải pháp là chỉnh sửa tệp proguard-rules.pro và thêm những thứ sau:

-keep class com.someimportant3rdpartypackage.** { *; }

3

1) Tạo thư mục libs dưới gốc dự án
2) Sao chép và dán tệp jar vào đó
3) Định cấu hình đường dẫn xây dựng (Thêm jar)
4) Làm sạch và chạy

hoan hô :-)


3

Tin tôi hay không ... Tôi đã thử hầu hết mọi câu trả lời tôi đã tìm thấy ở đây trên stackoverflow. Không có gì có thể giúp ích, cho đến khi tôi khởi động lại máy. My Android Studio hoạt động trên Ubuntu 16.04 LTS.


Tương tự ở đây, đã thử tất cả và bắt đầu lại sau nhận xét của bạn. Tôi thấy trong đầu ra của tôi một tài liệu tham khảo một tên lớp refactored rằng "Không thể được tìm thấy" mặc dù tôi xóa toàn bộ thư mục build .. chỉ mới bắt đầu android
Alwin Kesler

2

Tôi đã gặp phải lỗi này một lần khi tôi xác định một lớp mở rộng một chế độ xem nhưng lại tham chiếu đến chế độ xem tùy chỉnh này trong tệp bố cục với tên sai. Thay vào đó <com.example.customview/>, tôi đã đưa <com.customview/>vào tệp bố cục XML.


2

Tôi đã đối mặt với vấn đề tương tự và giải quyết nó bằng cách làm như sau:

Từ menu xây dựng, hãy chọn

1- sạch Dự án.

2- Xây dựng APK.


Tôi luôn dành hàng giờ để tìm kiếm giải pháp trên SO và hóa ra Clean -> Build là tất cả những gì tôi phải làm.
Shishir Shetty

2

Tôi đã gặp vấn đề tương tự và tôi nhận thấy mã mẫu được đặt trong thư mục "java" thay vì thư mục "src". Sau khi chuyển mã sang src, vấn đề đã được giải quyết.

Đồng thời đảm bảo rằng thư mục ứng dụng được chia thành nhiều thư mục. ví dụ như /main/com/site/appname/không/main/com.site.appname/

Hy vọng nó hoạt động ~


Bạn đã đóng đinh vấn đề tôi gặp phải trên đầu! Không ngủ đủ giấc, thậm chí không nhận ra rằng các lớp học trong thư mục Java :)
bran.io

2

Tôi gặp phải vấn đề tương tự, và sau rất nhiều công việc và tìm kiếm, tôi đã tìm ra giải pháp: Tôi chỉ cần dọn dẹp dự án sau đó xây dựng apk. -Build-> Clean Project -Build-> Build (các) APK Tôi hy vọng nó hữu ích .....


1

Tôi đã gặp sự cố này gần đây và tôi đang sử dụng Android Studio 0.8.4

Vấn đề là tôi quyết định đổi tên tệp bố cục menu XML có tên là main.xml.

Nhấp chuột phải vào nó và chọn Refactor -> Rename . Trước khi đổi tên, hãy nhớ bỏ chọn "Tìm kiếm trong nhận xét và chuỗi" và nhấn Refactor .

Bởi vì tệp của tôi ban đầu được đặt tên là 'chính' , nó đã đổi tên các đường dẫn quan trọng trong app.iml và build.gradle, chủ yếu là java.srcDirs trong build.gradle, vì đường dẫn được định nghĩa là 'src/main/java'.

Tôi hy vọng điều này sẽ giúp bất kỳ ai có thể gặp phải vấn đề này.


1

Tôi gặp sự cố này sau khi nâng cấp từ phiên bản 18. Sau khi nâng cấp, tôi gặp lỗi sau: Mục tiêu xây dựng dự án là 5.01, targetSDKVersion = 21

Nhưng: Công cụ xây dựng vẫn có từ Android 4.3.1 (18) Điều tôi nhận thấy là những ứng dụng bắt nguồn hoạt động của chúng từ ActionBarActivity đã bị lỗi với lỗi ở trên, những ứng dụng vẫn không chạy.

Vì vậy, cách khắc phục đơn giản là sử dụng Công cụ xây dựng SDK Android mới nhất 21.1.2 thay vì chỉ sử dụng Công cụ xây dựng SDK Android 18, có vẻ như bằng cách nào đó là mặc định.

Vì vậy, thủ phạm dường như là thư viện Appcompat, mà tôi sử dụng cho khả năng tương thích ngược của Actionbar.

nhân tiện : bằng cách sử dụng thư viện appcompat, tôi đã phải đặt / sửa: $SDKInstallDIR$\Android\android-sdk\extras\android\support\v7\appcompat\project.properties target=android-21(được đề xuất trong một số bài đăng hữu ích khác và có giá trị là 19 theo mặc định))


1

Tôi đã gặp vấn đề tương tự trên Windows. Tôi đã đổi tên đường dẫn đến dự án thành một thứ có chứa khoảng trắng.

Đảm bảo rằng đường dẫn đến dự án của bạn không chứa khoảng trắng.


Bạn đang nói về con đường nào?
Chất lượng Catalyst

1

Giải pháp được đề cập ở đây -> Giải pháp vấn đề Multidex phù hợp với tôi. Dưới đây là những gì cần được thêm vào ngữ cảnh Ứng dụng:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

0

Tôi đã gặp sự cố này, do một số nguyên nhân gây ra, nhưng tôi thấy điều này trong stacktrace của bạn " **Unable to instantiate activity ComponentInfo{...}: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**", tôi tìm thấy một điểm khác biệt trong của tôi .classpathtrước khi nó ngừng hoạt động.

 <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Tôi đã THÊM dòng:

<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>

đây là phiên bản cuối cùng:

  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Bây giờ nó hoạt động! =)


0

Tôi đã có cùng một vấn đề chính xác. Như @weiweia đã đề xuất, hãy chuyển mã từ thư mục java sang src phù hợp với tôi. Tôi cũng đã xóa Phụ thuộc Android khỏi Dự án -> Thuộc tính -> Đường dẫn xây dựng Java -> Đặt hàng và xuất và đảm bảo chỉ bao gồm Dự án thư viện trong màn hình Android.


0

Tôi đã gặp vấn đề này khá lâu và giống như mọi người khác, các câu trả lời ở trên không áp dụng cho dự án của tôi.

Trong dự án của mình, tôi đã liên kết một dự án với dự án của mình và nó sẽ ném ClassDefNotFoundError mỗi khi một số mã cho dự án khác được thực thi.

Vì vậy, đây là giải pháp của tôi. Tôi đã đi đến các thuộc tính dự án của dự án của tôi và Đường dẫn xây dựng Java. Nhấn "Nguồn" -tab và "nguồn liên kết" từ thư mục src của dự án khác vào dự án của riêng tôi và đặt tên cho một thư mục mới là "core-src".

Hy vọng giải pháp này sẽ giúp ai đó


0

Tôi gặp vấn đề tương tự. Tôi đang sử dụng Xamarin.Android.

Vấn đề trong trường hợp của tôi là tôi đã thay đổi Mã phiên bản và Tên phiên bản.

Tôi không gặp vấn đề gì khi đặt chúng như thế này:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pac.ka.ge" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">

Sự cố xuất hiện khi tôi thay đổi nó thành này (Phiên bản 2 và Tên phiên bản 0.0.1):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="0.0.1" android:installLocation="auto">

Tôi đã khắc phục sự cố bằng cách thay đổi thành versionCode 2 và versionName 1.0.0.1, như sau:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="1.0.0.1" android:installLocation="auto">

Tôi không chắc tại sao đây lại là sự cố, có thể Android không thích Tên phiên bản thấp hơn có Mã phiên bản cao hơn?

Tôi tìm thấy thông tin sau trên http://developer.android.com/guide/topics/manifest/manifest-element.html#vname

android: versionCode Một số phiên bản nội bộ. Con số này chỉ được sử dụng để xác định liệu một phiên bản có gần đây hơn một phiên bản khác hay không, với những con số cao hơn cho biết các phiên bản mới hơn. Đây không phải là số phiên bản được hiển thị cho người dùng; số đó được đặt bởi thuộc tính versionName. Giá trị phải được đặt dưới dạng số nguyên, chẳng hạn như "100". Bạn có thể xác định nó theo cách bạn muốn, miễn là mỗi phiên bản kế tiếp có số cao hơn. Ví dụ, nó có thể là một số xây dựng. Hoặc bạn có thể dịch số phiên bản ở định dạng "xy" sang số nguyên bằng cách mã hóa "x" và "y" riêng biệt ở 16 bit dưới và trên. Hoặc bạn có thể chỉ cần tăng số lượng lên mỗi lần một phiên bản mới được phát hành.

android: versionName Số phiên bản được hiển thị cho người dùng. Thuộc tính này có thể được đặt dưới dạng một chuỗi thô hoặc là một tham chiếu đến tài nguyên chuỗi. Chuỗi không có mục đích nào khác ngoài mục đích hiển thị cho người dùng. Thuộc tính versionCode chứa số phiên bản quan trọng được sử dụng nội bộ.


0

Đề phòng trường hợp ai đó gặp phải vấn đề tương tự như tôi và không có câu trả lời gợi ý nào ở đây giúp ích.

Đối với tôi, nguyên nhân là do bộ tái cấu trúc của Android studio bị lỗi. Tôi đã di chuyển một lớp bên trong ra bên ngoài một lớp, đó là một Chế độ xem và do đó cũng có một xml, nơi đặt đường dẫn trực tiếp. Đường dẫn này sẽ không được cơ cấu lại bởi studio! Và không có lỗi sẽ được ném ra.

Hy vọng điều này sẽ giúp bất kỳ ai. Chúc mừng.


0

Trong trường hợp của chúng tôi, chúng tôi muốn biên dịch phiên bản Vagrant và gặp lỗi tương tự. Chúng tôi đã sửa nó bằng clean projectrebuild projecttrong menu Build


0

Tôi vừa khởi động lại thiết bị và chạy ứng dụng. Nó hoạt động mà không có bất kỳ vấn đề nào. Hy vọng điều này sẽ giúp ai đó :)


0

Tôi đã tìm thấy lỗi này trong Android Studio khi thử gỡ lỗi trong thiết bị có API 23 , vì vậy, tôi đã kiểm tra Android Studio và nhận thấy rằng tôi chưa cài đặt phiên bản API 23 này . Sau khi cài đặt, tôi đã giải quyết được vấn đề.


0

Tôi đã gặp vấn đề này vài lần và thường thì tôi không làm gì sai rõ ràng với các phụ thuộc.

Bạn nên kiểm tra xem lớp 'không tìm thấy' này có trong apk cuối cùng hay không. Nếu nó xảy ra, giống như nó đã xảy ra trong trường hợp của tôi, vấn đề thường là:

Không phải là không tìm thấy lớp đã cho, nhưng không thể tải được vì thiếu lớp siêu của nó.

Kiểm tra xem lớp mà bạn mở rộng có khả dụng không và sau đó cố gắng sửa tập lệnh xây dựng hoặc các phần phụ thuộc của bạn cho phù hợp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.