Заставить 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:
Поддержка разных архитектур ЦП с каждым APK (например, для ARM, x86).
Аромат продукта определяет настроенную версию сборки приложения проектом. У нас могут быть разные варианты, которые генерируют apk для каждой архитектуры.
android { ... productFlavors { armv7 { ndk { abiFilters "armeabi-v7a", "" } } x86 { ndk { abiFilters "x86", "" } } } }
Получите код версии из манифеста. Добавьте дополнительную цифру в конец кода версии, простота которой определяет архитектуру. Последняя цифра x86 - 4, рука - 2.
versionCode manifest.versionCode + 4
Создайте свой проект с помощью Gradle, следующие команды создадут соответствующий файл apk в каталоге build/apk.
$ gradle assemblex86 $ gradle assemblearmv7
использование
$ gradle build
создать одновременно и arm, и x86 APK.
OpenCV использует эти магические строки для arm64: цифра 3
и abiFilter arm64-v8a
(ссылка).