强制Android Studio编译ARM64版本的外部库

时间:2016-11-09 11:29:29

标签: android android-studio android-gradle crosswalk

我正在尝试使用此处解释的方法在本机android上嵌入CrossWalk: embed crosswalk in 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 expicitly编译这些库?

2 个答案:

答案 0 :(得分: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 repo:

repositories {
    mavenLocal()
}

并编译正确的lib:

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

希望它可以帮助某人作为未来的参考。

答案 1 :(得分:1)

查看https://crosswalk-project.org/documentation/android/embedding_crosswalk/crosswalk_aar.html中的 Crosswalk AAR版部分:

  
      
  1. 支持每个APK的不同CPU架构(例如ARM,x86)。

         

    产品风格定义项目构建的应用程序的自定义版本。我们可以有不同的风格,为每个架构生成apk。

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

    从清单中获取版本代码。在版本代码的末尾添加一个额外的数字,其中含义指定了体系结构。 x86最后一位是4,arm是2。

    versionCode manifest.versionCode + 4
    
  2.   
  3. 使用Gradle构建项目,以下命令将在build / apk目录中构建相应的arch apk。

    $ gradle assemblex86
    $ gradle assemblearmv7
    
         

    使用$ gradle build一次构建arm和x86 APK。

  4.   

OpenCV将这些魔术字符串用于arm64:数字3和abiFilter arm64-v8a (reference)