質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

2回答

4239閲覧

Android(4.4.4) Kitkatで起動できない.

aglkjggg

総合スコア769

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/10/10 13:04

###前提・実現したいこと
同じAPKをインストールしても、
Android 6.0.1では問題なく実行できるが、
Android 4.4.4では起動すらできません。

開発は Android 6.0.1 の端末で全て行いました。
(Hello Worldから最終的なAPKの署名をするまで)
minSdkVersionを19にしているので Android 4.4.4の端末でも実行できるかと思いましたが、
起動すらできませんでした。

###発生している問題・エラーメッセージ
AndroidのLogcatのログ

10-10 21:49:19.553 2222-2222/net.myapp.myappandroid E/AndroidRuntime: FATAL EXCEPTION: main Process: net.myapp.myappandroid, PID: 2222 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{net.myapp.myappandroid/net.myapp.myappandroid.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "net.myapp.myappandroid.MainActivity" on path: DexPathList[[zip file "/data/app/net.myapp.myappandroid-1.apk"],nativeLibraryDirectories=[/data/app-lib/net.myapp.myappandroid-1, /vendor/lib, /system/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2131) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5179) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:614) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "net.myapp.myappandroid.MainActivity" on path: DexPathList[[zip file "/data/app/net.myapp.myappandroid-1.apk"],nativeLibraryDirectories=[/data/app-lib/net.myapp.myappandroid-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.Instrumentation.newActivity(Instrumentation.java:1061) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2122) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)  at android.app.ActivityThread.access$800(ActivityThread.java:144)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5179)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:614)  at dalvik.system.NativeStart.main(Native Method) 

###試したこと
・AndroidManifest.xmlのcompileSdkVersion 24を19に変更した。
→そもそもコンパイルが通らなくなった為、失敗。

・Kitkatの端末にXposedが入っていたので削除した。
→関係無し

・Kitkatの端末再起動。
→関係無し

・MainActivityが見つけられてないようなログを吐いていた為、
Googleで調べたところEclipseの場合はAndroid Private Librariesにチェックを入れてビルドする必要があるという情報が見つかった。(http://android.keicode.com/devenv/class-not-found.php)
→AndoirdStudioでは同様の設定項目が見つからなかった為、失敗

###補足情報(言語/FW/ツール等のバージョンなど)

  • Java 1.8

  • AndroidStudio 2.2

  • AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.myapp.myappandroid" android:versionCode="1" android:versionName="1.0.0"> <!-- Include required permissions for Google Mobile Ads to run--> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:allowBackup="true" android:icon="@drawable/iv_logo" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <!--This meta-data tag is required to use Google Play Services.--> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name="MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="SecondActivity" android:configChanges="orientation|screenSize" /> <activity android:name="SettingsActivity" /> <!--Include the AdActivity configChanges and theme. --> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" /> </application> </manifest>
  • build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.3" defaultConfig { applicationId "net.myapp.myappvandroid" minSdkVersion 19 targetSdkVersion 19 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true jackOptions { enabled true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8 } productFlavors { } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:support-v13:24.2.1' compile 'com.github.akarnokd:ixjava:0.90.0' compile 'com.google.android.gms:play-services:6.+' }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

原因について

自己解決しました。
原因はmultiDexEnabled trueにありました。
multiDexEnabledはLollipop(5.0)以降でしかうまく機能してくれないようです。
つまり、今回の問題はLolipop(5.0)未満でしか発生しない問題となります。

解決方法について

** 1 build.gradle のdependenciesに以下一行を追加 **

gradle

1dependencies { 2 /* ↓コレを追加する */ 3 compile 'com.android.support:multidex:1.0.0' 4}

** 2 AndroidManifest.xml に以下の一行を追加 **

xml

1<manifest ... 2 <application ... 3 <!-- ↓コレを追加する --> 4 android:name="android.support.multidex.MultiDexApplication" 5 <activity ... 6 </activity> 7 </application> 8</manifest>

** 3 リビルド(再コンパイル)する**
以上です。

解決方法としては簡単ですがハマってしまい解決までに1日費やしました…。

参考文献
http://shinonome.hatenablog.jp/entry/2015/08/19/233716

投稿2016/10/11 06:49

aglkjggg

総合スコア769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MainActivityでどのような処理記述しているか分かりませんが、使用しているライブラリがKitkatでは存在せず、その代わりサポートライブラリを使用しなければならないようなことがある場合にOSのバージョン間で動作しない場合があります。

一度、使用しているライブラリを洗い出して、対応バージョンを確認してみてください。

参考サイト:
http://stackoverflow.com/questions/19523167/android-classnotfoundexception-didnt-find-class-on-path

投稿2016/10/10 13:46

Asunaro

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aglkjggg

2016/10/11 06:55 編集

コメントありがとうございます。 ライブラリについては調べつくしましたがOSのバージョンに依存しているライブラリは無く、今回の問題の解決策としては違ったようです。 1日かけて調べ続けたところ自己解決しましたので、解決方法を記載しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問