小编Kir*_*l K的帖子

在多模块项目上运行Proguard作为"单件"

TLDR:如何将proguard映射传递给javac以针对混淆的库进行编译?

这很长,但我不知道如何缩短它:

背景: 我有以下产品设置:

Android Studio项目 - 库模块 - (子)模块核心 - (子)模块A - (子)模块B - (子)模块C - 示例应用程序模块 - ...其他模块

每个库子模块A,B,C在Core中引用类,但A,B,C在它们之间独立.概念上类似于Play服务,其中用户只能拥有代码和所需的子模块.每个库子模块都有外部API,但也有许多内部类.目标是能够将Core,A,B,C作为独立的aar-s进行分发.

目标:将 所有子模块混淆在一起,只留下公开的API,但是以混淆/优化的形式单独打包和分发它们.

问题: 我没有看到如何使用直接的gradle配置.这里需要自定义构建系统,除非有任何已知的解决方案?

这里需要的是:

  • Java-将所有子模块编译在一起
  • Proguard - 将它们混淆在一起
  • 分别运行构建过程的所有其余部分

每个模块的正常构建过程在哪里: - 编译 - >执行所有操作.混淆 - >包

在Core之后编译第一个子模块时,直接设置失败.如果只能将Proguard mapping.txt作为Java编译器的输入传递......但我找不到这样的选项.有任何想法吗?

谢谢!!!

java android proguard android-proguard

7
推荐指数
2
解决办法
1445
查看次数

是否可以/如何将 MediaCodec 解码帧直接提供给 MediaCodec 编码器?

我的目标是拼接多个视频文件中的视频片段。片段由任意开始时间和结束时间定义。最初我想使用像 mp4parser 这样的库来做到这一点,但它只能在同步(IFRAME)点切割流,而我需要更高的精度。

我的场景是从文件中提取编码流 -> 解码 -> 编码 -> 将结果混合到 mp4 文件中。目前,代码通常可以工作,但生成的视频是白噪声。在 Nexus-S 和 Galaxy-S3 上进行了测试。我的代码是几个示例的组合:

  • 基于MoviePlayer.java读取之前录制的文件
  • 解码-编码:DecodeEditEncodeTest.java
  • 将视频流复用为 mp4 - 又一个示例,此处不相关

我想简化示例,因为我不需要在中间处理帧。我尝试将缓冲区从解码器输出馈送到编码器输入,而中间没有 Surface。整个过程的工作原理是代码运行完成并生成可播放的视频文件。然而文件的内容是白噪声。

这是将帧从解码器提供给编码器的代码片段。有什么问题以及如何使其发挥作用?

...
} else { // decoderStatus >= 0
    if (VERBOSE) Log.d(TAG, "surface decoder given buffer "
                            + decoderStatus + " (size=" + info.size + ")");
    // The ByteBuffers are null references, but we still get a nonzero
    // size for the decoded data.
    boolean doRender = (info.size != 0);
    // As soon as we call …
Run Code Online (Sandbox Code Playgroud)

video android video-processing grafika android-mediacodec

0
推荐指数
1
解决办法
2120
查看次数