当前位置: 首页 > 知识库问答 >
问题:

为不同的体系结构生成APK-FFMPEGMediaMetadatareTriever

蓬弘
2023-03-14

我正忙于将FFMPEGMediametadatareTrieverpre-build.aar文件添加到我的项目中,以减小每个体系结构的Apk文件大小。

这篇文章在他的gradle添加了以下内容:

android {
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true

            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for x86, armeabi-v7a, and mips.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"

            // Specifies that we want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
    //...    
}

FFMPEGMediametadatareTriever库提供以下.aar文件:

  • 我应该将.aar文件按原样放置在我的libs文件夹中(不为每个体系结构创建文件夹),还是应该将其添加到文件夹中?
  • <罢工> 以上哪一项 我应该使用.aar文件来支持所有的体系结构吗?
  • <罢工> 在这篇文章中,他还谈到了版本控制,这是必要的吗(我的应用程序是live的,我不想搞砸版本控制 -我的当前版本是21)?

他这样实现了版本控制:

// Map for the version code that gives each ABI a value.
def abiCodes = ['x86':1, 'x86_64':2, 'armeabi-v7a':3, 'arm64-v8a':4]

// APKs for the same app that all have the same version information.
android.applicationVariants.all { variant ->
    // Assigns a different version code for each output APK.
    variant.outputs.each {
        output ->
            def abiName = output.getFilter(OutputFile.ABI)
            output.versionCodeOverride = abiCodes.get(abiName, 0) * 100000 + variant.versionCode
    }
}

我正在寻找一个可能使用过FFMPEGMediaMedaTatareTriever.aar文件的人,该文件可以为我提供如何正确实现它的指导。

在了解了更多关于不同架构/ABI的知识之后,我认为可以肯定地说,如果我只包括armeabi-v7a,那么大多数设备都将被“覆盖”?(我的最小sdk是16)。

那么这是否意味着我不必拆分APK,也不必担心版本控制?

然后我可以像正常一样导入.aar-armv7-fmmr.aar

共有1个答案

田远
2023-03-14

您可以使用指定所需目标ABI的产品口味生成不同的APK。然后可以根据每个产品的口味指定要使用哪个FMMR gradle依赖项或独立的AAR文件。请参阅此build.gradle文件以获取参考:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.wseemann.example"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "version"
    productFlavors {
        fat {
            ndk {
                abiFilters "armeabi", "armeabi-v7a", "x86", "mips", "x86_64", "arm64-v8a"
            }
        }

        armeabi {
            ndk {
                abiFilter "armeabi"
            }
        }

        armeabi_v7a {
            ndk {
                abiFilter "armeabi-v7a"
            }
        }

        x86 {
            ndk {
                abiFilter "x86"
            }
        }

        mips {
            ndk {
                abiFilter "mips"
            }
        }

        x86_64 {
            ndk {
                abiFilter "x86_64"
            }
        }

        arm64_v8a {
            ndk {
                abiFilter "arm64-v8a"
            }
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    // Product flavor, ABI specific dependencies
    fatImplementation 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'
    armeabiImplementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-armeabi:1.0.14'
    armeabi_v7aImplementation'com.github.wseemann:FFmpegMediaMetadataRetriever-armeabi-v7a:1.0.14'
    x86Implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-x86:1.0.14'
    mipsImplementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-mips:1.0.14'
    x86_64Implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-x86_64:1.0.14'
    arm64_v8aImplementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-arm64-v8a:1.0.14'
}
 类似资料:
  • 我想创建一个维护数据库中条目的后端应用程序,并通过提供它们。因此我想使用。 是否有任何工具可以为此自动生成CRUD和服务类?因为对于每个实体,这些类型的操作总是相同或至少相似的。 例子: 或者是否有其他可能简化初始开发?

  • Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。 Cep

  • 本文向大家介绍hdfs的体系结构相关面试题,主要包含被问及hdfs的体系结构时的应答技巧和注意事项,需要的朋友参考一下 解答: hdfs有namenode、secondraynamenode、datanode组成。 为n+1模式 namenode负责管理datanode和记录元数据 secondraynamenode负责合并日志 datanode负责存储数据

  • 本文向大家介绍SAP HANA体系结构中的不同引擎类型,包括了SAP HANA体系结构中的不同引擎类型的使用技巧和注意事项,需要的朋友参考一下 在SAP HANA系统中,有三个基本引擎用于处理SAP HANA中的查询。使用以下引擎- 加入引擎 OLAP引擎 计算引擎 加入引擎 在SAP HANA中查询属性视图时使用 OLAP引擎 分析视图(无派生列)使用OLAP引擎 计算引擎 具有派生列的计算视图

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表

  • 主要内容:1. Data Access/Integration(数据访问/集成),2. Web 模块,3. Core Container(Spring 的核心容器),4. AOP、Aspects、Instrumentation 和 Messaging,5. Test 模块Spring 框架基本涵盖了企业级应用开发的各个方面,它包含了 20 多个不同的模块。 图1:Spring架构图 上图中包含了 Spring 框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选