【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )(二)

简介: 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )(二)

6 . 修改脚本权限 : chmod -R 777 build.sh 命令 , 修改 build.sh 脚本权限 ;


root@octopus:~/rtmp/x264-master# ls
AUTHORS         build.sh  config.guess  configure  doc      example.c  filters  Makefile  tools       x264.c     x264dll.c  x264res.rc
autocomplete.c  common    config.sub    COPYING    encoder  extras     input    output    version.sh  x264cli.h  x264.h
root@octopus:~/rtmp/x264-master# chmod -R 777 build.sh




7 . 执行编译脚本 : 执行 ./build.sh 编译脚本 , 编译后 , 生成的结果如下 ;


image.png






三、 Android Studio 导入函数库


1 . 拷贝文件 : 拷贝上面编译好的头文件与函数库到 Android Studio 工程中 , 没有目录的创建目录 ;


image.png




2 . 编辑 build.gradle 构建脚本 : 只在生成的代码基础上 , 添加了 abiFilters ‘armeabi-v7a’ 内容 ;


apply plugin: 'com.android.application'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "kim.hsl.rtmp"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
                abiFilters 'armeabi-v7a'
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}


3 . 编辑 CMakeList.txt 构建脚本 : 这是 src/main/cpp 下的 CMakeList.txt 构建脚本 ;


cmake_minimum_required(VERSION 3.4.1)
# 链接 src/main/cpp/librtmp 目录下的构建脚本
add_subdirectory(librtmp)
add_library( # 函数库名称
             native-lib
             # 动态库类型
             SHARED
             # 源文件
             native-lib.cpp )
find_library( # 日志库
              log-lib
              log )
# 设置头文件搜索路径
include_directories(include)
# 通过设置编译选项, 设置函数库的搜索路径
# 此处的 ANDROID_ABI 是在
# build.gradle android->defaultConfig->externalNativeBuild->cmake
# 下的 abiFilters 中设置
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}")
target_link_libraries( # 链接动态库
                       native-lib
                       # 编译的 rtmp 静态库
                       rtmp
                       ${log-lib} )







四、 交叉编译版本


1 . 交叉编译 Android 库版本 : 在 Ubuntu 中进行交叉编译时 , 使用的是 android-21 版本的函数库与头文件 ,


# 截取的两个配置片段
FLAGS="...-D__ANDROID_API__=21..."
./configure \
...
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
...




2 . Android APP 中的最低版本 : Android 项目中的 build.gradle 中配置对应的最低兼容版本 , 也要是 21 版本 ;


apply plugin: 'com.android.application'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "kim.hsl.rtmp"
        // 核心 ---------------------------------
        minSdkVersion 21
        // 核心 ---------------------------------
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
                abiFilters 'armeabi-v7a'
            }
        }
    }
    ...
}
...



Ubuntu 中的交叉编译版本 , 与 Android 应用的最低兼容版本 , 一定要保持一致 ;






五、 GitHub 项目地址


GitHub 地址 : han1202012 / RTMP_Pusher


目录
相关文章
|
11月前
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
2609 160
|
5月前
|
Ubuntu 编译器 开发工具
在Ubuntu系统上搭建RISC-V交叉编译环境
以上步骤涵盖了在Ubuntu系统上搭建RISC-V交叉编译环境的主要过程。这一过程涉及了安装依赖、克隆源码、编译安装工具链以及设置环境变量等关键步骤。遵循这些步骤,可以在Ubuntu系统上搭建一个用于RISC-V开发的强大工具集。
571 22
|
5月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
235 11
|
8月前
|
Ubuntu 编译器 C语言
在Ubuntu22.04平台上交叉编译针对Rv1126架构的GCC13.2.0编译器的步骤。
遵循上述步骤,您应该能够在Ubuntu 22.04平台上成功交叉编译适用于RISC-V架构RV1126的GCC 13.2.0编译器,允许您为目标硬件构建应用程序和操作系统组件。
492 10
|
10月前
|
Android开发 Windows
Android studio 报错Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused: connect(已解决)
这是一篇关于解决Android Studio报错“Connect to 127.0.0.1:8888 failed: Connection refused”的文章。问题通常因系统代理设置被Android Studio自动保存导致。解决方法是找到系统中Android Studio使用的gradle.properties文件(位于Windows的C:\Users\你的电脑用户名\.gradle或Mac的/Users/.{你的用户目录}/.gradle),删除或注释掉多余的代理配置后保存并重新Sync项目。希望此经验能帮助快速解决同类问题!
1811 36
|
10月前
|
Ubuntu 定位技术 开发工具
在Ubuntu 20.04系统中安装SLAM库的具体操作步骤
以上是在Ubuntu 20.04系统中安装SLAM库的具体操作步骤。就像积木游戏,需要按照正确的步骤,适时地添加正确的部件,才能够构建出我们想要的积木模型。在现实操作中可能会遇到各种问题,就像积木构建中的各种困难,我们要有耐心和决心去解决它们,最后得到我们想要的结果。希望这个有趣的积木游戏比方能帮助你更好地理解SLAM库的安装过程,并在实际操作中得到应用。
250 34
|
8月前
|
Ubuntu 编译器
在Ubuntu中设置QT Creator的交叉编译环境。
在进行交叉编译设置时,请确保遵循你的目标硬件平台和软件的具体指南。以上步骤给出的是一个概括的指南,具体步骤可能因你的特定需求而有所不同。务必参照相关硬件和软件的官方文档进行操作,以获得具体的、针对性的指导。
641 0
|
10月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
855 19
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
496 0

热门文章

最新文章