web-dev-qa-db-ja.com

Android 8でのINSTALL_FAILED_NO_MATCHING_ABISエラー

Pixelスマートフォンを接続するアプリを作成しようとしています。最近、スマートフォンをAndroid 8.にアップグレードしました。最後のアップグレードまでスマートフォンでアプリをビルドして開くことができましたが、このアップグレード後、Failure [INSTALL_FAILED_NO_MATCHING_ABIS:ネイティブライブラリの抽出に失敗しました、res = -113]エラー。

以下は私のgradleファイルです。誰かが問題を教えてもらえますか?

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 26
    buildToolsVersion '26.0.1'
    defaultConfig {
        applicationId "com.my.app.googlemaps"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }
    lintOptions {
        abortOnError false
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
...
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
7
nikhil n

同じ問題があり、replaceing Apacheライブラリ(commons-io)を別のバンドルからの別のcommons-ioで動作させました。

新しい開発デバイス(Pixel Phone w/Android 8.0 Oreo)に切り替えた後、問題が発生しました。

解決策1

あなたの場合、ファイルシステムからのローカルjarの使用を停止し(compile fileTree(include: ['*.jar'], dir: 'libs'))、bintrayからの適切なgradle依存関係を使用することができます(例)。

元のgradle依存関係(あなたが説明したのと同じエラーをスローしました):

エラー:Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

dependencies {
    compile 'org.Apache.directory.studio:org.Apache.commons.io:2.4'
    compile 'commons-cli:commons-cli:1.4'
}

適切なbuild.gradleアーティファクトでcommons-ioを操作する:

dependencies {
    ...
    compile group: 'commons-io', name: 'commons-io', version: '2.5'
    compile group: 'commons-cli', name: 'commons-cli', version: '1.4'
    ...
}

異なる依存関係の表記を無視してください、それは問題ではありません

解決策2

複数のターゲットABIを定義し、デバイスがどれをサポートしているかを確認しましたか。おそらく、デバイスのABIと互換性を持たせるために、もう1つ追加する必要があります。

Application.mk で定義できます

参照:

20
sweisgerber.dev