2017-07-28 17 views
0

アプリケーションクラスがMultiDexアプリケーションを拡張しているときに、私のテスト用電話の1つでADBでアプリケーションをインストールできません。デバッグビルド用のアプリケーションとリリースビルド用のMultiDexApplicationの切り替え

私のアプリケーションアプリケーションクラスがMultiDexApplicationを拡張しているのに、コンパイルできない実装のthisをbuild.gradleにしようとしました。

buildTypes { 
release { 
    multiDexEnabled false 
} 
debug { 
    multiDexEnabled true 
} 
} 

参考文献: 1. https://developer.android.com/studio/build/multidex.html 2. Can I enable multidex in Android debug build only? 3. Conditionally inherit from class

+0

デバッグ環境でのビルド時間を短縮したいですか? –

+0

ログファイルを表示 –

+0

いいえ、私のアプリケーションクラスがMultiDexApplicationを拡張している限り、ADB経由でその電話機(ZTE Blade A610)にインストールすることはできません。 私の現在の回避策は、デバッグ時に手動でアプリケーションクラスを拡張させることです。 –

答えて

0

たぶん私がお勧めすることができMultidexApplicationを拡張するが、あなたのattachBaseContext

if (BuildConfig.DEBUG) { 
    MultiDex.install(this); 
} 
0

にこの行を追加するには、Applicationクラスをキープ別のアプローチ。 リリースビルドでproguardを使用していると仮定しているため、リリース用にmultidexを使用する必要はありません

デバッグ時にminifyEnabled trueとuseProguard falseを設定すると、ビルドをデバッグしますが、難読化のようなproguardの最適化は使用しません。

あなたのproguardのルール設定をデフォルトの設定に変更しておく必要があります。そのため、minifyはどのファイルを保存するかを知っています。

この方法は、デバッグビルドでmultidexを使用しないようにするのに役立ちます。

defaultConfig { 
    ... 
    proguardFile 'proguard-rules.pro' 
    proguardFiles getDefaultProguardFile('proguard-android.txt') 
} 

debug { 
    ... 
    minifyEnabled true 
    useProguard false 
} 

release { 
    ... 
    minifyEnabled true 
} 
関連する問題