【问题标题】:Force Android Studio to compile ARM64 versions of external libraries强制Android Studio编译ARM64版本的外部库
【发布时间】:2016-11-09 11:29:28
【问题描述】:

我正在尝试使用此处说明的方法将 CrossWalk 嵌入原生 android: 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 编译这些库?

【问题讨论】:

    标签: android android-studio android-gradle-plugin crosswalk


    【解决方案1】:

    好的,我终于在这里找到了解决方案: 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'
    

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

    【讨论】:

      【解决方案2】:

      看看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. 使用 Gradle 构建你的项目,以下命令将在 build/apk 目录中构建相应的 arch apk。

        $ gradle assemblex86
        $ gradle assemblearmv7
        

        使用 $ gradle build 同时构建 arm 和 x86 APK。

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

      【讨论】:

      • 刚刚抽出时间来测试这个解决方案,不幸的是它不起作用。我仍然没有得到 arm64 版本的人行横道。只有 libnativesdk.so 在 lib 库中
      猜你喜欢
      • 2017-07-27
      • 2014-08-18
      • 2018-07-16
      • 2016-07-08
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多