web-dev-qa-db-ja.com

Android APKを手動でインストールすると、実際のデバイスでアプリがクラッシュする

私のアプリケーションは、エミュレーター、およびデバッグ目的でAndroid studioによってインストールされた実際のデバイスでさえ、正常に動作していますが、apkファイルを使用して手動でインストールするとクラッシュします。

必要に応じて、アクティビティなどの他のコードを貼り付ける準備ができました。

ここにlogcatがあります:

04-14 12:20:44.392 6220-6220/? I/art: Late-enabling -Xcheck:jni
04-14 12:20:44.465 6220-6220/test.planner W/System: ClassLoader referenced unknown path: /data/app/test.planner-1/lib/arm
04-14 12:20:44.467 6220-6220/test.planner I/InstantRun: starting instant run server: is main process
04-14 12:20:44.470 6220-6220/test.planner D/AndroidRuntime: Shutting down VM
04-14 12:20:44.471 6220-6220/test.planner E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.planner, PID: 6220
Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{test.planner/test.planner.MainActivity}: Java.lang.ClassNotFoundException: Didn't find class "test.planner.MainActivity" on path: DexPathList[[Zip file "/data/app/test.planner-1/base.apk"],nativeLibraryDirectories=[/data/app/test.planner-1/lib/arm, /vendor/lib, /system/lib]]
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2327)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2476)
    at Android.app.ActivityThread.-wrap11(ActivityThread.Java)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1344)
    at Android.os.Handler.dispatchMessage(Handler.Java:102)
    at Android.os.Looper.loop(Looper.Java:148)
    at Android.app.ActivityThread.main(ActivityThread.Java:5417)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)
 Caused by: Java.lang.ClassNotFoundException: Didn't find class "test.planner.MainActivity" on path: DexPathList[[Zip file "/data/app/test.planner-1/base.apk"],nativeLibraryDirectories=[/data/app/test.planner-1/lib/arm, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
    at Android.app.Instrumentation.newActivity(Instrumentation.Java:1067)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2317)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2476) 
    at Android.app.ActivityThread.-wrap11(ActivityThread.Java) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1344) 
    at Android.os.Handler.dispatchMessage(Handler.Java:102) 
    at Android.os.Looper.loop(Looper.Java:148) 
    at Android.app.ActivityThread.main(ActivityThread.Java:5417) 
    at Java.lang.reflect.Method.invoke(Native Method) 
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616) 
    Suppressed: Java.lang.ClassNotFoundException: test.planner.MainActivity
    at Java.lang.Class.classForName(Native Method)
    at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
    at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
            ... 12 more
 Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
9
some user

次の場所に移動:

Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.

instant runを無効にします。

13
Haris ali

Android studio。

このオプションをdisable -> Instant Runにすることはできません。 (メニューにはありません)

新しいAndroidスタジオとGradleのアップグレードでAPKをインストールするには、適切にビルドする必要があるようです。

オプション1:コマンドラインからのgradle

./gradlew :appName:clean  
./gradlew :appName:build

オプション2: from Android studio

Android Studio -> build -> build APK(またはため息をつくAPKを生成)

生成されたapkはデバイスにうまくインストールできます。

注:このバージョンのAndroid studioで新しいapplicateを開始した場合、studioから実行すると、apkが生成されないことがわかります。

5
beee

私も同様の問題に直面しました。

Apkのサイズに注意してください。これは非常に小さいサイズです。これは、インスタント実行機能が有効になっているためです。無効にしてください

Android Studioは、プロセスを高速化するためにインスタントランを使用する場合、Apkのすべてのファイルを含みません。).

なぜこれが起こっているのか知っている人はいますか?

に行く:

Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.
2
Puneet Verma

Android Studio->ファイル->設定->ビルド、実行、デプロイ->インスタント実行。インスタント実行を無効にします。

0
Hamza Abdullah