AIDEを使ってandroidアプリ開発をしています。
そこでAppCompatActivityをextendsするとビルドエラーは出ないですが、実行時エラーで落ちてしまいます。
落ちずにするにはどのようにすればいいでしょうか?
以下にソースコードを示します。
MainActivity.java
package com.mycompany.myapp2; import android.app.*; import android.os.*; import android.support.v7.app.*; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
**buile.gradle **
apply
1 2android { 3 compileSdkVersion 27 4 buildToolsVersion "27.+" 5 6 defaultConfig { 7 applicationId "com.mycompany.myapp2" 8 minSdkVersion 14 9 targetSdkVersion 28 10 versionCode 1 11 versionName "1.0" 12 } 13 buildTypes { 14 release { 15 minifyEnabled false 16 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 } 18 } 19} 20 21dependencies { 22 compile('android.arch.core:runtime:+') {force = true} 23 api 'com.android.support:appcompat-v7:27.+' 24 compile fileTree(dir: 'libs', include: ['*.jar']) 25}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mycompany.myapp2" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:resizeableActivity = "true"> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
layout/main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
values/styles.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> </style> </resources>
values-v21/styles.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> </style> </resources>
MainActivity.javaのsuper.onCreate(savedInstanceState);にブレークポイントを設定しstepinするとそこで落ちる為、この部分に問題がありそうです。
その時のエラーメッセージを掲載します。
04-17 20:01:10.902 8162 8162 E AndroidRuntime FATAL EXCEPTION: main 04-17 20:01:10.902 8162 8162 E AndroidRuntime Process: com.mycompany.myapp2, PID: 8162 04-17 20:01:10.902 8162 8162 E AndroidRuntime java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$drawable; 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.widget.AppCompatDrawableManager.<clinit>(AppCompatDrawableManager.java:107) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.widget.AppCompatDrawableManager.get(AppCompatDrawableManager.java:84) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:85) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:128) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:149) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:56) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:31) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegateImplN.<init>(AppCompatDelegateImplN.java:31) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:198) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:183) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:70) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at com.mycompany.myapp2.MainActivity.access$Sandroid$support$v7$app$AppCompatActivity$1(Unknown Source:4) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at com.mycompany.myapp2.MainActivity$0$debug.onCreate(MainActivity.java:12) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at com.mycompany.myapp2.MainActivity.onCreate(Unknown Source:14) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.Activity.performCreate(Activity.java:7196) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.Activity.performCreate(Activity.java:7187) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3027) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3182) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1907) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:106) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.os.Looper.loop(Looper.java:193) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:6894) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at java.lang.reflect.Method.invoke(Native Method) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:883) 04-17 20:01:10.902 8162 8162 E AndroidRuntime Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$drawable" on path: DexPathList[[zip file "/data/app/com.mycompany.myapp2--zrFePYGFB313jKKEgtHqw==/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.myapp2--zrFePYGFB313jKKEgtHqw==/lib/arm64, /system/lib64, /product/lib64]] 04-17 20:01:10.902 8162 8162 E AndroidRuntime at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at java.lang.ClassLoader.loadClass(ClassLoader.java:379) 04-17 20:01:10.902 8162 8162 E AndroidRuntime at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 04-17 20:01:10.902 8162 8162 E AndroidRuntime ... 30 more
またbuild.gradleの
compileSdkVersionや
buildToolsVersion、
targetSdkVersionや
compile('android.arch.core:runtime:+') {force = true}の部分の削除、追加
values/styles.xmlやvalues-v21/styles.xmlのstyle属性のparent要素を元々あったものに戻したり、
AIDEのMarven librariesを再読み込みしたりするとうまく行く場合があります。
上記ファイルを全く同じ状況で再現して出来る場合、出来ない場合があり、問題点がどこにあるかわからない状況です。
また下記のサイトを参考にし、今回設定してみました。(英語Q&Aサイト)
https://discourse.android-ide.com/t/solved-error-with-appcompat-27/22/4
https://stackoverflow.com/questions/47087362/how-to-import-android-support-v7-appcompat-to-aide
他の人もうまく行っていないように見えます。
あなたの回答
tips
プレビュー