自己构建 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:
-
git clone回购。
- 在这个 repo 中打开一个命令提示符。 "cd" 或将目录更改为
它。
git clone .
- 将目录更改为 vlc-android 目录。
git tag
-
git checkout <tag_version>。在这种情况下,2.1.2。
cd ..
- 注释掉
compile/build 的 build.gradle 脚本
你不需要。
./gradlew buildLibVlc
- 您应该使用 Java 源代码和
jniLibs 文件夹中的共享对象 (*.so) 文件。
- 如果您在
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 page 在 Configure 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