【发布时间】:2021-03-20 04:17:30
【问题描述】:
我从 Android Studio 在真机(Android 7.0 Table)上运行一个应用,没关系。
现在我创建应用的 APK 文件,然后将其安装到我的真实设备上,完成运行应用。
我收到以下错误,为什么?
为什么一个应用可以通过Android Studio在真机上运行而安装失败?
E:\>cd E:\Android_SDK\platform-tools
E:\Android_SDK\platform-tools>adb logcat --buffer=crash
03-20 12:05:29.378 15996 15996 E AndroidRuntime: FATAL EXCEPTION: main
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Process: info.dodata.voicerecorder, PID: 15996
03-20 12:05:29.378 15996 15996 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{info.dodata.voicerecorder/info.dodata.voicerecorder.ui.ActivityMain}: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class fragment
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2804)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2875)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.os.Looper.loop(Looper.java:156)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6617)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #25: Binary XML file line #25: Error inflating class fragment
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class fragment
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: java.lang.RuntimeException: Exception inflating info.dodata.voicerecorder:navigation/nav_graph line 66
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.q.r.c()
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at androidx.navigation.NavController.j(:2)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at androidx.navigation.fragment.NavHostFragment.L(:32)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.m.b.r.U(:19)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.m.b.p.onCreateView(:5)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.m.b.e.onCreateView(:4)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:738)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:832)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.b.c.n.v()
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.b.c.k.setContentView()
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at info.dodata.voicerecorder.ui.ActivityMain.onCreate(:2)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6910)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2875)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.os.Looper.loop(Looper.java:156)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6617)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: info.dodata.voicerecorder.model.MVoice
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.q.r.d(:1)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.q.r.b(:1)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at g.q.r.b(:27)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: ... 28 more
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: info.dodata.voicerecorder.model.MVoice
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.Class.classForName(Native Method)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.Class.forName(Class.java:400)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.Class.forName(Class.java:326)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: ... 31 more
03-20 12:05:29.378 15996 15996 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "info.dodata.voicerecorder.model.MVoice" on path: DexPathList[[zip file "/data/app/info.dodata.voicerecorder-1/base.apk"],nativeLibraryDirectories=[/data/app/info.dodata.voicerecorder-1/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64, /product/lib64]]
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
03-20 12:05:29.378 15996 15996 E AndroidRuntime: ... 34 more
添加内容
致阿明:谢谢!
当我在 Android Studio 中运行我的应用时,它可以正常运行。
为了缩小文件大小,我在 Build.gradle 中使用了 Code A,但它可能会导致我在安装和运行单独的 apk 文件时没有映像的错误。
你的意思是我应该像 Code B 一样处理我的课程吗?太复杂了。
顺便说一句,我觉得“minifyEnabled true”太可怕了,缩小的apk文件只会导致运行时出错,我无法在Android Studio中测试。
代码 A
Build.gradle
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
}
}
代码 B
-keep public class info.dodata.voicerecorder.model.**
{
public protected *;
}
【问题讨论】: