【问题标题】:Using Gradle flavors on vlc-android-sdk在 vlc-android-sdk 上使用 Gradle 风格
【发布时间】:2017-12-26 12:36:50
【问题描述】:

在我的应用中,我使用的是 "de.mrmaffen:vlc-android-sdk:2.0.6" 库,它占用了大量存储空间,但我找不到更小的替代方案。
所以我决定以CommonsWare mentioned 的身份使用拆分或产品风味,但我无法让它发挥作用。
我试图遵循文档但没有运气。
任何帮助表示赞赏。

【问题讨论】:

  • 这是一个相当省力的问题。你试过什么?你是什​​么意思你不能让它工作?
  • 正如我在问题“我试图按照文档但没有运气”中提到的那样。
  • 您遵循文档的示例在哪里?它以什么方式不适合您?您没有提供足够的信息让某人帮助您。如果您不添加这些详细信息,则不太可能找到您正在寻找的答案。

标签: android android-gradle-plugin vlc-android


【解决方案1】:

自己构建 LibVLC Android SDK

如果您使用的是"de.mrmaffen:vlc-android-sdk:2.0.6"buid the LibVLC Android SDK yourself

正如here 解释的那样,之后只需运行这个 Gradle 命令:./gradlew buildLibVlc


构建特定版本的 LibVLC Android SDK

cd vlc-android          // if this folder doesn't exist yet, simply run ./gradlew cloneVlcAndroid
git tag                 // to list all release versions
git checkout {tag-name} // to checkout the git repo at the given tag
cd ..
./gradlew buildLibVlc   // build it  

确保您在依赖项方面遵循 Android 编译说明并检查 this:

  1. git clone回购。
  2. 在这个 repo 中打开一个命令提示符。 "cd" 或将目录更改为 它。
  3. git clone .
  4. 将目录更改为 vlc-android 目录。
  5. git tag
  6. git checkout <tag_version>。在这种情况下,2.1.2。
  7. cd ..
  8. 注释掉 compile/buildbuild.gradle 脚本 你不需要。
  9. ./gradlew buildLibVlc
  10. 您应该使用 Java 源代码和 jniLibs 文件夹中的共享对象 (*.so) 文件。
  11. 如果您在jniLibs 文件夹旁边创建一个libs 文件夹 更新了 gradle 版本。

通过 Maven CentralJCenter 获取

只需将此依赖项添加到您的项目中即可。

dependencies {
    implementation 'de.mrmaffen:libvlc-android:2.1.12@aar'
}

我正在使用这个版本。记得将 JCenter 添加到项目的build.gradle 文件中:

allprojects {
    repositories {
        jcenter()
    }
}

通过 JCenter 的 VLC Android SDK 支持下一个 ABI:armeabi-v7a、arm64-v8a、x86 和 x86_64。

您可以在应用的 build.gradle 文件中过滤特定的 ABI(x86_64 和 arm64-v8a 除外):

android {
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}

可以通过最新的 Android Studio 版本检查 mrmaffen's repository 中包含的文件:


为 ABI 配置多个 APK

在里面添加一个 abi 块 你的splits 块。在您的 abi 块中,提供 list of desired ABI。 Source

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 and armeabi-v7a.

      // Resets the list of ABIs that Gradle should create APKs for to none.
      reset()

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

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

构建多个 APK

点击 Build > Build APK 为当前选定的 APK 构建所有 APK 项目窗格中的模块。

Gradle 为每个 ABI 创建 APK 进入项目的build/outputs/apk/ 目录。


配置构建变体

This pageConfigure Your Build Overview 的基础上构建,向您展示如何配置构建变体以创建不同版本的应用。


结合 abi 过滤器并构建变体

Exclude abi from apk

android {
    productFlavors {
        x86 {
            ndk {
                abiFilter "x86"
            }
        }
        arm {
            ndk {
                abiFilters "armeabi-v7a", "armeabi"
            }
        }
    }
}

多 APK 通过 ABI 和密度拆分

How to reduce the number of APKs with ABI splits

Here的 一个代码 sn-p,您可以使用它来设置 ABI 拆分的版本代码。

为 x86_64 和 x86 提供比 ARM 更高的版本号,与 x86 一样多 设备可以通过仿真层运行 ARM 代码,尽管使用 性能较低。

如果您不想管理太多 APK,请定位最流行的 带有拆分 APK 的(通常是 ARM 和 x86)并提供 其他所有人的通用 APK。

在 Play 商店发布通用 APK 并以更低的价格发布至关重要 版本号高于所有其他 ABI 特定包。

如果您需要更灵活的多 APK 设置,请查看 Multi-APK through product flavors.


推荐的 Medium 帖子以选择支持的 ABI

In this post 我们将了解什么是 ABI,ABI 拆分的问题,以及 避免这些问题的替代方法...例如,Android 支持以下 ABI:

mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a

因此,您必须致电支持基于以下标准的 64 位库 大小与性能标准,但 mips、mips-64 和 armeabi 应该是 毫不犹豫地删除了。


解决部分设备上的 UnsatisfiedLinkError 问题

As explained here,64 位处理器生成并检查 arm64 文件夹以加载本机库。

如果您的项目没有 arm64 文件夹。这是解决方案:

build.gradle

defaultConfig {
    ...

    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

}

您需要将此过滤器(abiFilters)添加到您的应用模块的 build.gradle 文件。因此,当您的设备尝试运行您的应用程序时,它会 检查 gradle 文件并了解它不应该生成任何 文件夹并使用现有的本机库资源。繁荣。几乎解决了。 但还有一件事。将此行添加到您的 gradle.properties 以使用已弃用的 Ndk。

gradle.properties

android.useDeprecatedNdk=true

【讨论】:

    【解决方案2】:

    您可以使用 app bundle,因此您无需处理多个 apk。 Google Play 会自动为您处理。此外,这种方法可以提供额外的好处。更多详情:https://developer.android.com/guide/app-bundle

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2015-09-03
      • 1970-01-01
      • 2013-10-01
      • 2015-06-06
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2014-07-29
      相关资源
      最近更新 更多