Заставить Android Studio скомпилировать ARM64-версии внешних библиотек

Я пытаюсь встроить CrossWalk на родной Android с помощью метода, описанного здесь: вставлять CrossWalk в Android Studio

Проблема, с которой я сталкиваюсь, заключается в том, что Android Studio не создает необходимые библиотеки для ARM64, даже если эти библиотеки находятся в репозитории Maven.

Вот мой файл build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "my.app.id"
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    maven {
        url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'
    }
    flatDir{
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'org.xwalk:xwalk_core_library:22.52.561.4'
    compile (name: 'wikitudesdk', ext:'aar')
    testCompile 'junit:junit:4.12'
}

Есть ли способ сказать Android Studio точно скомпилировать эти библиотеки?

2 ответа

Решение

ОК, я наконец нашел решение здесь: diego.org

В основном, если вам нужна библиотека ARM64, вам сначала нужно загрузить нужную библиотеку самостоятельно:

curl -O https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/22.52.561.4/xwalk_core_library-22.52.561.4-arm64.aar

Затем установите его в локальный репозиторий Maven:

mvn install:install-file -DgroupId=org.xwalk -DartifactId=xwalk_core_library \
  -Dversion=22.52.561.4-arm64 -Dpackaging=aar  \
  -Dfile=xwalk_core_library-22.52.561.4-arm64.aar \
  -DgeneratePom=true

И обновите вашу сборку Gradle, чтобы хранилища указывали на локальное хранилище Maven:

repositories {
    mavenLocal()
}

и вы компилируете правильную библиотеку:

compile 'org.xwalk:xwalk_core_library:22.52.561.4-arm64'

Надеюсь, что это поможет кому-то в будущем.

Взгляните на раздел " Crosswalk AAR Version" в https://crosswalk-project.org/documentation/android/embedding_crosswalk/crosswalk_aar.html:

  1. Поддержка разных архитектур ЦП с каждым APK (например, для ARM, x86).

    Аромат продукта определяет настроенную версию сборки приложения проектом. У нас могут быть разные варианты, которые генерируют apk для каждой архитектуры.

    android {
      ...
      productFlavors {
        armv7 {
          ndk {
            abiFilters "armeabi-v7a", ""
          }
        }
        x86 {
          ndk {
            abiFilters "x86", ""
          }
        }
      }
    }
    

    Получите код версии из манифеста. Добавьте дополнительную цифру в конец кода версии, простота которой определяет архитектуру. Последняя цифра x86 - 4, рука - 2.

    versionCode manifest.versionCode + 4
    
  2. Создайте свой проект с помощью Gradle, следующие команды создадут соответствующий файл apk в каталоге build/apk.

    $ gradle assemblex86
    $ gradle assemblearmv7
    

    использование $ gradle build создать одновременно и arm, и x86 APK.

OpenCV использует эти магические строки для arm64: цифра 3 и abiFilter arm64-v8a (ссылка).

Другие вопросы по тегам