1

私は Android 開発に不慣れで、奇妙な問題を抱えています。AsyncTask からカレンダー イベントを取得して表示しようとしています。これはデバッグ モードで動作しますが、apk からアプリケーションをインストールしようとすると、アプリケーションが次のエラーでクラッシュします。

12-18 08:57:16.768: E/AndroidRuntime(8642): FATAL EXCEPTION: AsyncTask #2
12-18 08:57:16.768: E/AndroidRuntime(8642): java.lang.RuntimeException: An error     occured while executing doInBackground()
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     android.os.AsyncTask$3.done(AsyncTask.java:299)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at java.lang.Thread.run(Thread.java:856)
12-18 08:57:16.768: E/AndroidRuntime(8642): Caused by:     java.lang.IllegalArgumentException: unable to create new instance of class com.a.b.b.a.a.b     because it has no accessible default constructor
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.e.aa.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.e.aa.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.e.i.b(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)                    12-18 08:57:16.768: E/AndroidRuntime(8642):   at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.g.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.f.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.d.f.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.c.t.a(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.a.b.a.b.d.c.d(Unknown     Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.promevo.bookit.a.f(Unknown     Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.promevo.bookit.a.a(Unknown     Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at com.promevo.bookit.f.a(Unknown     Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     com.promevo.bookit.f.doInBackground(Unknown Source)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     android.os.AsyncTask$2.call(AsyncTask.java:287)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-18 08:57:16.768: E/AndroidRuntime(8642):     ... 5 more
12-18 08:57:16.768: E/AndroidRuntime(8642): Caused by: java.lang.InstantiationException: can't instantiate class com.a.b.b.a.a.b; no empty constructor
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     java.lang.Class.newInstanceImpl(Native Method)
12-18 08:57:16.768: E/AndroidRuntime(8642):     at     java.lang.Class.newInstance(Class.java:1319)  

私が行っている呼び出し:

Events feed = client.events().list(CalendarSampleActivity.getCalId()).setTimeMin(startPass)
        .setTimeMax(endPass).setSingleEvents(true).execute();

誰にもアイデアはありますか?前もって感謝します。

いくつかのトラブルシューティングの後、Proguard の使用時に問題が発生しているようです。project.properties ファイルからこの行を削除すると、アプリケーションが動作するようになりました。

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt:proguard-google-api-client.txt

なぜこれが違いを生むのか、正確に知っている人はいますか?

4

1 に答える 1

2

ここでProguardとAndroidについて読んでください:http://developer.android.com/tools/help/proguard.html

「アクセス可能なデフォルトコンストラクターがありません」という例外が発生しているため、Proguardがこのコンストラクターのユーザーを見つけることができなかったためにパッケージからこのコンストラクターを削除した可能性があります(Proguardはパッケージからアクセスできないコードまたは未使用のコードを削除して小さくします) 。明らかに使用されていない場合でも、パッケージに特定のコードを保持するようにProguardに指示する必要があります。

もう1つの方法は、リリースビルドのProguardを無効にすることです。

于 2012-12-18T16:25:56.557 に答える