【问题标题】:How to use .so file to create an .apk file in android application for my custom video codec如何使用 .so 文件在 android 应用程序中为我的自定义视频编解码器创建 .apk 文件
【发布时间】:2014-02-20 07:31:10
【问题描述】:

我想创建一个可以播放特定格式视频的应用程序或 .apk 文件。

为此,我编译了我的源文件并获取了目标文件, 从目标文件中,我使用命令生成了一个共享库文件 (.so)

gcc -c -fPIC hello.c -o hello.o
gcc hello.o -shared -o libhello.so 

有人可以帮助我在 android Eclipse 或 android sdk 中从 .so 文件创建 apk 文件的步骤

创建apk文件时java文件的重要性...

【问题讨论】:

    标签: android frameworks android-ndk android-mediaplayer video-codecs


    【解决方案1】:

    根据您上面的内容,我认为您没有使用 android ndk 提供的工具链编译自定义解码器代码。我已经完成了你应该做的同样的任务。

    First of all what you need to do is:
    

    1) 创建一个安卓项目

    2) 在Android项目的根目录下,创建一个名为“jni”的文件夹

    3) 将所有“C”代码(自定义解码器代码)转储到此文件夹中。

    4) 在具有解码器代码的同一 /jni 文件夹中创建一个文件,并将该文件命名为 Android.mk 。如果你知道linux中make文件的概念,这里也有同样的含义,只是语法发生了变化。(可以参考android ndk自带的一些示例)。

    5) 从developers website 下载Android-ndk(也有样例,大家可以参考学习)。

    6) 将 PATH 变量配置到 ndk 目录。

    例如:导出 NDK_PATH=/home/myPC/android-ndk-r7b

    7) cd 到 jni 目录并输入命令ndk-build。如果一切顺利,您现在将生成一个 .so 文件,这意味着您的代码已成功交叉编译到 android 平台。

    8) 现在在 /src 文件夹中,您将有一个 .java 文件,您必须从中加载生成的 .so 文件。为此,您可以参考 android ndk 中的示例示例。

    9) 使用 JNI 在您的应用程序和生成的 .so 之间进行接口。例如,如果您的自定义解码器设计为采用输入文件指针来解码文件,则相应地您将必须实现 JNI 代码。

    10) 最后,当您完成所有操作后,如果您的解码器正在为您提供 RGB 数据,那么您可以使用 openGL ES 仅显示来自本机代码的解码图片。

    【讨论】:

    • 感谢您的回复,我尝试了以上步骤。当我尝试在 Visual Studio 2010 上运行我的代码时,它没有错误并且输出完全正常。当我使用上述步骤在 Eclipse 中运行相同的源代码时,直到第 6 步,我没有发现任何问题。在第 7 步中,我发现了大量的错误和警告。 eclipse里有没有设​​置帮帮我……
    • @sayedjuned:您不需要导出路径,以防万一您发现它很困难。您可以做的是,跳过第 6 步并转到第 7 步。这里不是 ndk-build,而是给出 ndk-build 的绝对路径。
    • @sayedjuned: 你也不需要在eclipse中这样做,通过终端你可以做上面的步骤。
    • 感谢您的回复。在完成上述步骤后,您能否澄清一下,是否需要任何容器格式,如 flv、MP4 才能在 android 设备上播放视频。是否有任何特定播放器或框架的任何角色来显示我解码的 YUV。如果不是,我的 YUV 如何在 Android 设备中播放
    • @sayedjuned:如果任务只是显示 YUV 图像,那么您不需要任何容器格式。这里讨论了用于从本机代码渲染 YUV 的各种 API:vec.io/posts/…
    【解决方案2】:

    您需要先install NDK。然后你需要为你的库提供 JNI 包装器。最简单的方法是查看hello-jni and two-libs sample apps 以了解如何执行此操作。您将在ndk_home/samples/ 下找到该应用程序。

    【讨论】:

      【解决方案3】:

      我会尝试使用蚂蚁。 http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

      请告诉我进展如何(不确定所有这些 .so 事情)。

      如果您对我链接的教程有任何问题,也请告诉我,我已经完成了,可以提供帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-11
        • 2011-02-21
        • 2012-05-10
        • 2019-05-17
        • 2012-05-25
        • 1970-01-01
        相关资源
        最近更新 更多