2017-08-18 11 views
0

私は、複数のモジュールで構成されたアプリケーションをrxjava1からrxjava2に更新しました。今、アンドロイド10デバイスやエミュレータにインストールする方法はありません。コンパイル時に、エラーは発生しませんが、インストールはAndroidスタジオまたはコマンドラインから失敗します。ここ は私の設定の一部です:Android搭載アプリのインストール失敗[INSTALL_FAILED_DEXOPT] Android 2.3.xデバイス

compileSdkVersion = 25 
buildToolsVersion = "25.0.1" 
minSdkVersion = 10 
targetSdkVersion = 21 

./gradlew app:dependencies

compile - Classpath for compiling the main sources. 
+--- com.android.support:appcompat-v7:25.3.1 
| +--- com.android.support:support-annotations:25.3.1 
| +--- com.android.support:support-v4:25.3.1 
| | +--- com.android.support:support-compat:25.3.1 
| | | \--- com.android.support:support-annotations:25.3.1 
| | +--- com.android.support:support-media-compat:25.3.1 
| | | +--- com.android.support:support-annotations:25.3.1 
| | | \--- com.android.support:support-compat:25.3.1 (*) 
| | +--- com.android.support:support-core-utils:25.3.1 
| | | +--- com.android.support:support-annotations:25.3.1 
| | | \--- com.android.support:support-compat:25.3.1 (*) 
| | +--- com.android.support:support-core-ui:25.3.1 
| | | +--- com.android.support:support-annotations:25.3.1 
| | | \--- com.android.support:support-compat:25.3.1 (*) 
| | \--- com.android.support:support-fragment:25.3.1 
| |   +--- com.android.support:support-compat:25.3.1 (*) 
| |   +--- com.android.support:support-media-compat:25.3.1 (*) 
| |   +--- com.android.support:support-core-ui:25.3.1 (*) 
| |   \--- com.android.support:support-core-utils:25.3.1 (*) 
| +--- com.android.support:support-vector-drawable:25.3.1 
| | +--- com.android.support:support-annotations:25.3.1 
| | \--- com.android.support:support-compat:25.3.1 (*) 
| \--- com.android.support:animated-vector-drawable:25.3.1 
|   \--- com.android.support:support-vector-drawable:25.3.1 (*) 
+--- com.android.support:recyclerview-v7:25.3.1 
| +--- com.android.support:support-annotations:25.3.1 
| +--- com.android.support:support-compat:25.3.1 (*) 
| \--- com.android.support:support-core-ui:25.3.1 (*) 
+--- com.android.support:design:25.3.1 
| +--- com.android.support:support-v4:25.3.1 (*) 
| +--- com.android.support:appcompat-v7:25.3.1 (*) 
| +--- com.android.support:recyclerview-v7:25.3.1 (*) 
| \--- com.android.support:transition:25.3.1 
|   +--- com.android.support:support-annotations:25.3.1 
|   \--- com.android.support:support-v4:25.3.1 (*) 
+--- com.google.android.gms:play-services-maps:7.5.0 
| \--- com.google.android.gms:play-services-base:7.5.0 
|   \--- com.android.support:support-v4:22.0.0 -> 25.3.1 (*) 
+--- com.google.android.gms:play-services-gcm:7.5.0 
| \--- com.google.android.gms:play-services-base:7.5.0 (*) 
+--- org.ocpsoft.prettytime:prettytime:3.2.4.Final 
+--- com.google.maps.android:android-maps-utils:0.4 
+--- com.fasterxml.jackson.core:jackson-databind:2.4.4 
| +--- com.fasterxml.jackson.core:jackson-annotations:2.4.0 
| \--- com.fasterxml.jackson.core:jackson-core:2.4.4 -> 2.8.7 
+--- com.google.code.gson:gson:2.7 
+--- com.jakewharton.timber:timber:4.3.1 
+--- com.google.dagger:dagger:2.8 
| \--- javax.inject:javax.inject:1 
+--- com.jakewharton:butterknife:8.5.1 
| +--- com.jakewharton:butterknife-annotations:8.5.1 
| | \--- com.android.support:support-annotations:25.1.0 -> 25.3.1 
| +--- com.android.support:support-annotations:25.1.0 -> 25.3.1 
| \--- com.android.support:support-compat:25.1.0 -> 25.3.1 (*) 
+--- com.getsentry.raven:raven-android:8.0.2 
| \--- com.getsentry.raven:raven:8.0.2 
|   +--- org.slf4j:slf4j-api:1.7.24 
|   \--- com.fasterxml.jackson.core:jackson-core:2.8.7 
+--- com.github.bumptech.glide:glide:3.8.0 
+--- com.squareup.sqlbrite2:sqlbrite:2.0.0 
| +--- io.reactivex.rxjava2:rxjava:2.1.0 
| | \--- org.reactivestreams:reactive-streams:1.0.0 
| \--- com.android.support:support-annotations:25.3.1 
+--- io.reactivex.rxjava2:rxandroid:2.0.1 
| \--- io.reactivex.rxjava2:rxjava:2.0.1 -> 2.1.0 (*) 
+--- io.reactivex.rxjava2:rxjava:2.1.0 (*) 
+--- project :domain 
| +--- com.google.dagger:dagger:2.8 (*) 
| +--- io.reactivex.rxjava2:rxandroid:2.0.1 (*) 
| \--- io.reactivex.rxjava2:rxjava:2.1.0 (*) 
+--- project :data 
| +--- project :domain (*) 
| +--- project :database 
| | +--- com.jakewharton.timber:timber:4.3.1 
| | +--- com.squareup.sqlbrite2:sqlbrite:2.0.0 (*) 
| | +--- io.reactivex.rxjava2:rxandroid:2.0.1 (*) 
| | \--- io.reactivex.rxjava2:rxjava:2.1.0 (*) 
| +--- com.google.dagger:dagger:2.8 (*) 
| +--- com.squareup.retrofit2:converter-gson:2.3.0 
| | +--- com.squareup.retrofit2:retrofit:2.3.0 
| | | \--- com.squareup.okhttp3:okhttp:3.8.0 
| | |   \--- com.squareup.okio:okio:1.13.0 
| | \--- com.google.code.gson:gson:2.7 
| +--- com.squareup.okhttp3:logging-interceptor:3.6.0 
| | \--- com.squareup.okhttp3:okhttp:3.6.0 -> 3.8.0 (*) 
| +--- com.squareup.retrofit2:adapter-rxjava2:2.3.0 
| | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) 
| | \--- io.reactivex.rxjava2:rxjava:2.0.0 -> 2.1.0 (*) 
| +--- com.jakewharton.timber:timber:4.3.1 
| +--- com.squareup.sqlbrite2:sqlbrite:2.0.0 (*) 
| +--- io.reactivex.rxjava2:rxandroid:2.0.1 (*) 
| \--- io.reactivex.rxjava2:rxjava:2.1.0 (*) 
\--- project :database (*) 

を実行している私は他の同様のスレッドが言ったすべてのもの、きれいなプロジェクトをやった、フォルダを構築削除し、私はそうであっても、別のコンピュータ上の新鮮なビルドを開始しましたアプリが以前にインストールされたことはありません。

rxjava2とrxandroid2の依存関係を削除し、それらを使用するすべてのコードをコメントアウトすると、アプリは正常にインストールされます。私がそれらを再び有効にするとすぐに、私は再びエラーを取得します。スタディオンでは、エラーは次のとおりです。

Installation failed since the device possibly has stale dexed jars 
that don't match the current version (dexopt error). 
In order to proceed, you have to uninstall the existing application. 

WARNING: Uninstalling will remove the application data! 

Do you want to uninstall the existing application? 

もちろん、私はアプリがインストールされていないと知っていても、もちろん失敗します。私はこの方法は、このツールで https://github.com/KeepSafe/dexcount-gradle-plugin メソッドをカウントしようとしている

は64000の下に残っているが、ここで説明したようにしても私はmultidex追加:https://developer.android.com/studio/build/multidex.html が、それでも、それは動作しません! ターゲットSDKを使って試してみましたが、さらに最近のgradleラッパーを使用して26までビルドツールを25に増やしました(現在は3.5です)。私はrxjava1に戻す以外に何を試みるのか分からないが、私が最初に更新した理由は、あまりにも多くのアイテムがあり、これを読んだ後にアンドロイド10にOOMEを取得したからです。https://github.com/ReactiveX/RxJava/wiki/Whatの-sales different-in-2.0 #which-type-to-use私はアップグレードすることを決めました。それはrxjava2がアンドロイド10と互換性がないどこにも言いません。 アプリケーションは、アンドロイド19 ++でうまくインストールされます()私はhttps://github.com/square/sqlbriteからサンプルを試してみました。それはアンドロイド10にうまくインストールされます。 それ以外のアイデアを試すことはできますか?

更新:

56.584 1186-1207/system_process E/PackageManager: Package com.mypackage.myapp has mismatched uid: 10070 on disk, 10040 in settings 
08-18 11:47:56.784 1853-1853/? E/dalvikvm: LinearAlloc exceeded capacity (5242880), last=220 
08-18 11:47:56.784 1853-1853/? E/dalvikvm: VM aborting 
08-18 11:47:56.804 1132-1132/? E/installd: dexopt failed on '/data/dalvik-cache/[email protected]@[email protected]' res = 11 

アップデート2:これらは、エミュレータからのログがある私は、ProGuardのを追加してリリースが

+0

です。これらのデバイスにRxJava 2アプリをインストールしようとしましたか?単純なこんにちは、Rx以外の依存関係はありませんか? – akarnokd

+0

私はsqlbriteのサンプルアプリケーションがrxjava2とsqlbriteを使用していると言っていますが、うまくいきますので、ちょうど動作しないlibsの組み合わせでなければなりません – vallllll

答えて

0

(ProGuardので)ビルドをインストールしようとしたときにもまだ同じエラーを取得しています残念ながら私は除去以外の解決策を見つけられませんでした

com.fasterxml.jackson.core:jackson-databind 

ライブラリ。私もGsonを使っているので、代わりにGsonを使うためにそのライブラリを使ってコードを修正しました。

このエラーが発生したときは、multidexを追加して2つのdexファイルに分割するようにしてください。これはうまくいきません。

たとえば、すべてのライブラリをhttp://www.methodscount.com/で調べて、大きなライブラリを見つけて、小さなライブラリで削除または置き換えてください。メソッドを追跡する

の有用なプラグインは、あなたのアプリでカウントRxJava 2は、APIレベル9+あるhttps://github.com/KeepSafe/dexcount-gradle-plugin

関連する問題