5

アプリはデバッグ ビルドで正常に動作し、アプリの機能をテストした各デバイスで Crashlytics の例外が報告されていることを確認できます。ただし、Jenkins を使用してリリース ビルドを取得すると、次のようになります。

a. アプリは空白の起動画面で動かなくなります。

b. 「アプリケーションが停止しました」ダイアログを取得します。

リリース ビルドの実行中にいくつかの logcat メッセージが見つかりました。

最初:次の例外をダンプします

09-30 09:49:05.561: I/Crashlytics(5696): Initializing Crashlytics 1.0.4.15
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): .     |  | 
09-30 09:49:05.591: E/Crashlytics(5696): .     |  |
09-30 09:49:05.591: E/Crashlytics(5696): .     |  |
09-30 09:49:05.591: E/Crashlytics(5696): .   \ |  | /
09-30 09:49:05.591: E/Crashlytics(5696): .    \    /
09-30 09:49:05.591: E/Crashlytics(5696): .     \  /
09-30 09:49:05.591: E/Crashlytics(5696): .      \/
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): Something is missing! Find it here: 
09-30 09:49:05.591: E/Crashlytics(5696): http://www.crashlytics.com/api/v1/[API_KEY]/android/confirm/[PACKAGE_NAME]
09-30 09:49:05.591: E/Crashlytics(5696): .
09-30 09:49:05.591: E/Crashlytics(5696): .      /\
09-30 09:49:05.591: E/Crashlytics(5696): .     /  \
09-30 09:49:05.591: E/Crashlytics(5696): .    /    \
09-30 09:49:05.601: E/Crashlytics(5696): .   / |  | \
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .     |  |
09-30 09:49:05.601: E/Crashlytics(5696): .
09-30 09:49:05.601: D/AndroidRuntime(5696): Shutting down VM
09-30 09:49:05.601: W/dalvikvm(5696): threadid=1: thread exiting with uncaught exception (group=0x40ad8228)
09-30 09:49:05.601: E/AndroidRuntime(5696): FATAL EXCEPTION: main
09-30 09:49:05.601: E/AndroidRuntime(5696): java.lang.RuntimeException: Unable to start activity ComponentInfo{[PACKAGE_NAME]/[ACTIVITY_NAME]}: com.crashlytics.android.CrashlyticsMissingDependencyException: 

2 番目: https://settings.crashlytics.com/spi/v1/platforms/android/apps/[APP_PACKAGE_NAME]/settingsから設定を取得できませんでした[class org.json.JSONException: Type java.lang.String の Value Invalid は JSONObject に変換できません]

3 番目: 多くの場合、マニフェストに API_KEY がないことを訴えます。ただし、マニフェストには既に存在し、デバッグ ビルドでは正常に動作しています。

<meta-data android:name="com.crashlytics.ApiKey" android:value="[crashlytics_api_key]"/>

<application>タグの内側。

私も次のことをしました:

  1. 例外トレースに記載されている URL に従いましたが、crashlytics/downloads ページにリダイレクトされます。おそらく権限がありません。

  2. build.xml に追加 <import file="./ant_tasks/crashlytics_build.xml"/>され、次のソース ファイルが含まれています: crashlytics_build_base.xml、crashlytics_build.xml、crashlytics-devtools.jar、crashlytics.jar

  3. Order & Export / .classpath に crashlytics.jar ファイルをエクスポートしました。

<classpathentry exported="true" kind="lib" path="libs/crashlytics.jar"/>

それでも役に立ちません。

Crashlytics.start(getApplicationContext());Application.onCreate() 内でコメントを外すと

デバッグ ビルドとリリース ビルドの両方が正常に動作します。もちろん、クラッシュ レポートは表示されません。

@Override
public void onCreate() {
    super.onCreate();
    Crashlytics.start(getApplicationContext());
}

誰かが同様の問題に遭遇した場合は、解決を手伝ってください。よろしくお願いします。

私の理解のために:

  1. Crashlytics には、デバッグ ビルドとリリース ビルド用に異なる API_KEY がありますか?
  2. crashlytics ビルド ファイルを使用する必要さえありますか?
  3. リリース ビルドに欠けているものは何ですか?
4

1 に答える 1

1

コンパイル時のライブラリとプロパティを適切な場所に取得していないようです。「私のアプリはデバッグビルドで正常に動作します」から、別のビルド環境 (おそらく IDE) を使用していると推測していますが、Jenkins では Maven のようなものを使用しています。IDE 統合はデバッグに大いに役立ちますが、ビルド機能のコマンドラインを取得するための追加の手順があります。

彼らが推奨するダウンロード ページにアクセスすると、Crashlytics を任意のビルド システムにデプロイする方法が記載されているはずです。適切なものを選択してから、それらが持っているものを正確にコピーしてビルド ファイルに貼り付ける必要があります。私はMavenのためにこれを行いました.POMで正しいものを取得する限り、すべて設定する必要があります. Gradleの場合、さらに簡単になる場合があります。

于 2013-12-03T19:59:47.513 に答える