Android将允许纯C/C++开发应用

Android将允许纯C:C++开发应用 立即下载

对于Android,长期以来,我一直有两件事搞不懂,

  • 一个是为什么Android要选用Java。对于嵌入式开发,CPU和内存都很宝贵,居然还使用Java。
  • 一个是为什么Android的开发站点要被墙。这只是一个技术网站啊。

最近,在一个Android开发人员的Blog上证实了在NDK r5使用C/C++进行开发。(以前,Android 对C/C++开发的支持仅限于用C/C++开发动态链接库,然后在Java中以JNI的形式来调用)现在,你可以用纯C/C++开发了(参看下面的程序代码)。还有一段完整的代码示例在这里(墙,还有XML的manifest,又见XML)。看来,Google终于明白为什么使用Android的手机(如:Moto, 三星、索爱和HTC)的触摸体验远远不及object C搞出来的iPhone。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void android_main( struct android_app* state) {
     // Make sure glue isn't stripped.
     app_dummy();
  
     // loop waiting for stuff to do.
     while (1) {
         // Read all pending events.
         int ident;
         int events;
         struct android_poll_source* source;
  
         // Read events and draw a frame of animation.
         if ((ident = ALooper_pollAll(0, NULL, &events,
                 ( void **)&source)) >= 0) {
             // Process this event.
             if (source != NULL) {
                 source->process(state, source);
             }
         }
         // draw a frame of animation
         bringTheAwesome();
     }
}

我个人估计有两个原因为什么Google回头支持C/C++了,

  1. Google开始觉得自己整的JVM在性能上可以全面超越传统JVM,并接近C/C++,现在发现搞不定了。
  2. Google发现Java的程序员不像C/C++程序员那样注重程序的性能和效率,开发App太耗CPU和内存。

于是只好转回支持C/C++。本来就是用C/C++写出来的Android嘛,居然不能用C/C++而只能用Java,真是太侮辱C/C++了。最后,只希望Google并不是又整了一个C/C++版的Dalvik虚拟机,不然就真是侮辱到极点了。

——— 更新 2011/01/24 ————

谢谢大家对这篇文章的评论,挺有意思的,欢迎讨论,我把我的回复更新在下面。不一定对,仅供大家参考。

Java的学习成本低,开放性好,兼容性也高,我不否认(但请大家也别否认C/C++的效率要比Java要高。而C/C++的程序员在普遍上要比Java程序员更注意性能和效率)。这应该是Andorid的一开始的定位,可见,Google关注的是程序员,而不是用户。现在转回支持C/C++必然有他的原因,如果不是性能上的原因。那么就请大家分析一下别的原因。

Android本来就是用C/C++写的,要跨平台,首先是Android自己跨平台。就像Linux一样,跨平台的首先是Linux,应用开发人员只需要符合Linux的API就OK了。JVM带来的便利只是无需重新编译(就算是无需重新编译,对于开发人员来说也要去那个平台做测试的,因为不同的平台的JVM同样是不一样的)。在Native平台上编译的成本其实并不高,这个编译过程完全可以在部署的时候自动化。

有人说,Java的开发成本比C/C++低,但这和语言没有关系,这其实和封装程度有关系。C/C++同样可以封装得很好。而且,C/C++的程序员比JAVA程序来说,天生就对内存和性能要敏感的多。这更有利于在手机这样资源不足的平台上做开发。

尤其对于像手机这样的时尚终端来说,在用户体验上花的成本要比在开发人员上花成本要大得多的多。我以为,Google 的Android 更多的关注了程序员,而不是用户。而iPhone更多的关注了用户,也让程序员在开发过程上受到了一些牺牲(iPhone的做法是如果程序员的程序要上App Store,先交99美刀的代码审查费,就像申请美国签证一样),但是,iPhone的程序员虽然在开发的方便上有一些牺牲,但是从收入上却得到了保障。最新的消息是苹果已向开发者支付20亿美元 音乐供应商分成达120亿美元。在《偷了世界的程序员》中对此有充分的论述。

最后,请大家思考 几个问题——

  • Android支持C/C++是为什么?如果是为了程序效率,那么这又是为什么?
  • 是开发人员更重要,还是用户更重要?(注意:我说的是“更重要”)
  • 在当今这种诸如iPhone或Andorid的开发模式下,是完全开放好,还是有适当的封闭好?
  • 开发和封闭的背后的商业驱动是什么?如何在开放和封闭中权衡用户、开发者、公司和版权商的利益?

苹果公司给出了一个很不错的商业模式。

(完)

SecureCRT 9.0最新版安装与激活全攻略(附驱动识别技巧) 本文提供SecureCRT 9.0最新版的详细安装与激活指南,并重点解析了嵌入式开发中串口连接的硬件驱动识别技巧。内容涵盖从安全获取软件、解决USB转串口驱动兼容性问题,到配置SSH与串口会话的完整流程,旨在帮助开发者和工程师高效部署并精通使用这款终端仿真利器。 阅读详情

相关推荐

立创EDA + AI 生成 STM32 原理图教程1

AI辅助立创EDA设计STM32原理图教程摘要 本教程系统介绍如何利用AI工具(如Claude Code、DeepSeek等)与立创EDA专业版结合,实现STM32原理图的智能生成与优化。主要内容包括: 技术架构:采用分层设计,AI生成结构化网表数据,由立创EDA执行确定性绘图,确保可审查性 环境搭建:详细说明立创EDA专业版、Node.js等工具的安装配置 五种AI集成方案:包括官方AI Skill、MCP Server等不同实现方式 核心功能: 自动提取STM32引脚定义 智能元件选型与LCSC编号匹配

shihui2003的博客 1531

如何用 纯C++(ndk)开发安卓应用 ?

视频教程请关注http://edu.youkuaiyun.com/lecturer/lecturer_detail?lecturer_id=440  如何安装安卓的开发环境以及怎么设置ndk的环境变量等在前边的文章已经有了详细的讲解,在这里我就不再说明,如果有不会安装和设置环境的,请先参考安卓环境搭建的内容。   好,假设以及安装好了ndk,使用纯c++开发安卓程序,下边是详细的步骤与说明:   1....

weixin_30915275的博客 1086

python监听海康威视报警服务器

因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用。拿到的就是第一张RGB图像。可以点击测试,会显示。

qq_57018478的博客 1157

android alooper,android - ASensorEventQueue_hasEvents返回-1,而ALooper_pollAll返回-4(基本用法) - 堆栈内存溢出...

我正在尝试编写一个将Java SDK用于GUI的Android应用程序,并使用NDK绘制内容并读取线性加速度传感器(基于加速度计,但不包括重力)。 基本上,我想知道何时摇动设备并且我的应用程序处于活动状态。我认为我以相当基本的方式使用ASensorEventQueue_hasEvents和ALooper_pollAll,但它们分别返回-1和-4。 这些都是错误,但是我不知道它们是什么意思,或者...

weixin_30969227的博客 1150

CISP-PTE考前实操练习题

CISP-PTE考前学习练习题目,渗透测试功工程师

2301_79546223的博客 1996

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2665

不会Java?没关系,用C/C++做安卓APP,Qt for Android开发

首先Qt就不多说了,大家应该都有了解,跨平台的应用程序开发框架,Windows、Linux、Android、IOS(网上听说是可以支持的,没有试过)等一些平台都可以使用,最关键的是基本同一套代码,不用怎么修改就可以切换平台,相当方便。1. 下载Qt软件,我用的是Qt-opensource-windows-x86-5.12.0版本的,注意:后续插件的版本和Qt的版本貌似要有对应,有的版本不对可能不行,尽量用我推荐的版本。安装没什么好说的,Qt安装的时候注意选择安卓的插件。3. 下载JDK,版本为8u201。

ic2121的博客 5282

Windows版TASSEL5的下载及安装

TASSEL5是一款用于研究表型和基因型关系的软件,由美国康奈尔大学Buckler实验室所研发。,选择Windows环境安装包下载并安装。1.安装成功后TASSEL5界面。

沉香best的博客 8188

Android 直接C/C++编写Android应用

配置: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xiuye.openggles16"> <application android:allowBackup="true" android:icon="@mipmap/ic_laun

修也 3600

Python与CAD系列基础篇(十)图形复制、移动、删除

①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件。进行图形复制、移动、删除的方法。pyautocad方式。pyautocad方式。

weixin_43894929的博客 2209

【毕设保姆级指南】基于YOLOv8的DAGM 2007工业缺陷检测系统从搭建到落地

本教程基于YOLOv8算法实现DAGM 2007工业缺陷检测系统,包含数据处理、模型训练和可视化界面开发全流程。首先对DAGM数据集进行格式转换和划分,然后通过YOLOv8训练工业缺陷检测模型,最终构建PyQt5交互界面实现缺陷可视化检测。该系统可用于智能制造中的产品质量控制,帮助快速定位工业产品缺陷,提升检测效率和准确性,为工业质检提供高效解决方案。

LXY_LOVE36的博客 182

Native-Activity

NativeActivity的介绍在官网: http://developer.android.com/reference/android/app/NativeActivity.html 使用NativeActivity无需继承这个类,只需要在manifest中进行声明,并使用NDK中的API即可 示例参见:android-ndk-r10e\samples\native-activity这一工

Android系统开发-VR OS-系统安全隐私 2806

你知道几种数字地与模拟地连接方式及优缺点?

频率选择性:磁珠的阻抗特性随频率变化,只对某个频点的噪声有显著抑制作用,对于频率不确定或无法预知的情况,可能不是最佳选择。在实际应用中,选择合适的连接方式需要根据具体的电路频率、信号类型、设计要求等因素综合考虑,以达到最佳的电磁兼容效果.高频信号干扰:在高频电路中,单点接地可能导致信号回流路径过长,增加地线电感,从而引入高频噪声。限制噪声电流:0欧姆电阻相当于一个非常窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。抑制高频信号:电感对高频信号有较大的阻碍作用,可以有效抑制高频噪声。

linkking27的博客 800

Android将允许纯C/C++开发应用(上)

Android将允许纯C/C++开发应用(上) 对于Android,长期以来,我一直有两件事搞不懂, 一个是为什么Android要选用Java。对于嵌入式开发,CPU和内存都很宝贵,居然还使用Java。 一个是为什么Android的开发站点要被墙。这只是一个技术网站啊。 最近,在一个Android开发人员的Blog(无法直接访问)上证实了在NDK r5使用C/C++进行开发

又被扼杀在萌芽 3361

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[转载][整理]Android将允许纯C/C++开发应用

注: Google搜索"andriod c++",找到这篇文章,其中的评论也相当精彩,我把内容与评论整在一起,让它看起来更完整,可以省去你一些时间,希望对你有所帮助。如果对原贴感兴趣,在这里http://coolshell.cn/articles/3549.html, 作者:陈皓。 另外,最新的NDK(Native Development Kit)已更新到r7版本,支持最新的Android 4.

shines77 的博客 1783

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android NDK开发的一些技巧

Android NDK(Native Development Kit)是基于Java JNI的使用C/C++和Java来混合开发应用的一种方式,甚至在Android 2.3(API 9)以后可以用Native(Native这个字在不同的语境中意义是不一样的,这里指的是JNI中的C/C++的代码;如果放在Hybrid中Native就是指平台原生的语言和API)代码来创建标准界面组件Activit

稀有猿诉 2638

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android与python交互_Android与Python混合编程

前言Chaquopy是什么?基础用法-快速入门配置依赖编写代码Python代码Java代码进阶用法生成静态代理第三方库引入完全使用Python开发原理解析文档缺陷前言早在2017年的时候,出于业余兴趣,我就开始研究关于Python移植到Android上的实现方案,我一直希望能实现Android与Python的混合编程,并为此写了一系列博客,我希望借助JNI技术,实现Java与Python的交互。或...

weixin_39864591的博客 521

C4droid:安卓手机最强C/C++编译器

C4droid:安卓手机最强C/C++编译器C4droid 功能简介C4droid 安装步骤C4droid 调试、图形化设置C4droid 图形化编程C4doird 导出程序为手机应用C4droid 小项目俄罗斯方块扫雷数字拼图贪吃蛇   C4droid 功能简介 C4droid 是一款Android设备上的C/C++开发环境,是Google公司开发。 C4droid 支持代码高亮、自动补全、代码缩进等常用功能,支持将程序打包成.apk安装包。 最妙的三个地方是: C4droid 支持图形.

Debroon 5万+
上一篇: EM算法训练GMM的Matlab实现过程(总结)
下一篇: Spine.js vs Backbone.js
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值