android NDK 编译 Platinum

2023-10-11 01:38
文章标签 编译 android ndk platinum

本文主要是介绍android NDK 编译 Platinum,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    版本:Platinum-f4d639

    platinum这个开源项目比较强大,直接支持windows、linux、ios、android各种系统!

而且脚本已经帮我们写好了!!非常方便

(1)NDK用 android-ndk-r6(用r7 build失败,在编译到测试程序的时候报很多未定义)

(2)配置NDK环境

    下载ndk r6的版本,配置环境变量就一个即可:

export ANDROID_NDK_ROOT=/home/yanghaibing/android-ndk-r6b



    在ndk根目录下添加一个文件$NDK/out/host/config.mk,文件内容如下:

HOST_TAG := linux-x86
这个文件用来匹配Config.scons中的

### figure out the host config
try:host_config = open(ANRDOID_NDK_OUT+'/host/config.mk')HOST_CONFIG={}for line in host_config.readlines():pair = re.split('\s+:=\s+', line);if len(pair) == 2:HOST_CONFIG[pair[0]] = pair[1].rstrip()host_config.close()
except:platform_map = {'linux2':'linux-x86', 'darwin':'darwin-x86', 'cygwin':'windows'}if sys.platform not in platform_map:raise Exception('Unrecognized host platform')HOST_CONFIG={'HOST_TAG':platform_map[sys.platform]}



( Platinum/Build/Targets/arm-android-linux/Config.scons这个文件完全不需要去修改!不过有兴趣可以去分析下)

(3)指定 target

Command Line Examples (android):

        指定命令行选项执行 scons target=arm-android-linux build_config=Release

        如果没有scons,请先apt-get install下,使用命令方面的帮助请直接man即可

        这个target可以通过阅读README

* Linux, Cygwin, MacOSX, iOS以及android
    Open a shell, go to the Platinum root directory and type 'scons' (http://scons.org). 
    The output of the scons build will be found under Platinum/Build/Targets/{TARGET}/{Debug|Release}. 
    Additionally, the output is copied under Platinum/Targets/{TARGET}/{Debug|Release} for convenience when applicable.

注(如果不是太熟悉脚本,下面这些不修改为妙):

修改 Platinum/Build/Boot.scons 文件中 options.AddVariables(...) 直接写入上述2个选项为默认值,则执行 scons 命令时不必指定选项

options = Variables()
options.AddVariables(
EnumVariable('target', 'build target', 'arm-android-linux', allowed_values=['arm-android-linux']),
BoolVariable('stop_on_warning', 'Stop the build on warnings', False),
ListVariable('build_config', 'build configurations', 'Release', names=['Debug', 'Release'])
)

(4)查看生成的文件

        生成的文件目录在Platinum-f4d639/Platinum/Build/Targets/arm-android-linux/Release下面,

不带后缀的是可以在android上测试的c可执行程序,生成了很多*.a库,以及一个libPlatinumJNI.so库,这个库还没去分析提供了哪些

接口,后面继续研究。

(5)把测试程序和库拷贝到android平台在命令行下测试(我放在hi3716c的海思板子上测试)

         把所有的.a库和so库先拷贝到/system/lib下(测试用),以后java程序调用的时候安装apk后将放在data的某个子目录下

         执行./FileMediaServerTest    /mnt/sda/sda1/....mp3,并查看端口号,若启动正常将阻塞着,并看到一些信息

另一端在pc上用浏览器登录即可,正常情况下就能播放音乐文件了。

         测试程序相当好,对于我们对开源代码的调用有一定的帮助,所以仔细先阅读测试程序的写法相当有帮助,而且已经包含了

DMS、DMC、DMR的功能,目前发现DMP的媒体控制及播放功能测试程序没法测试。


这篇关于android NDK 编译 Platinum的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/184583

相关文章

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问