栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

纯C语言开发无java、无dex的安卓native apk---2022笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

纯C语言开发无java、无dex的安卓native apk---2022笔记

上一篇笔记参照 NDK 示例 samples/native-activity ,验证了用C写纯 native apk 确实是可行的。

native-activity 示例中的C代码,创建了一个使用 EGL 渲染的 ANativeWindow (EGL是opengl 桥接层代码),apk运行后, 只要有屏幕上点一下,就会不断的用egl函数刷窗体背景色。

这篇是参照 samples/native-plasma示例的小笔记,

代码里面不用 egl 的,找出 ANativeWindow 的绘图内存,

然后直接在这个内存区域填充像素数据来刷窗体背景——即 FrameBuffer 直接绘图。

顺便测试了下在 native apk 中集成一个 mini http server——完全没有问题。

编译出来的 apk 超级小巧。

 

 

在自用的oppo手机上验证成功。

关键代码:

static void engine_draw_frame(struct engine* engine) {
    if (engine->app->window == NULL) {
        // No window.
        return;
    }

    ANativeWindow_Buffer buffer;
    if (ANativeWindow_lock(engine->app->window, &buffer, NULL) < 0) {
        LOGW("Unable to lock window buffer");
        return;
    }

    
    fill_fb(&buffer);

    ANativeWindow_unlockAndPost(engine->app->window);
}

对于不想沾java的来人,很不错。

也可以验证很多东西,比如类 aidlux 的 "跨生态融合" linux环境(原 aid learning)

再比如通过一个 apk 来在1024以上的端口上实现ssh连接安卓等等。。。

代码仓库:

build-apk-with-c: 纯C语言开发无java、无dex的安卓apk应用

里面的 no_EGL.zip 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号