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

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

Проблема, с которой я сталкиваюсь, заключается в том, что студия Android не создает необходимые библиотеки для 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, чтобы скомпилировать эти библиотеки?


person Julio Garcia    schedule 09.11.2016    source источник


Ответы (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'

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

person Julio Garcia    schedule 11.11.2016

Взгляните на раздел Версия Crosswalk AAR в 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 ( ссылка).

person nandsito    schedule 09.11.2016
comment
только что нашел время протестировать это решение, и, к сожалению, оно не работает. Я до сих пор не понимаю версию пешеходного перехода для arm64. Только libnativesdk.so находится в библиотеке lib - person Julio Garcia; 10.11.2016