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

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

上一篇笔记参照 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;
    }

    /* Now fill the values with a nice little plasma */
    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 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/919314.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存