Android 多渠道打包方案问题记录及解决方案

华为手机碰到的问题记录-NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID 在项目测试阶段,发现好多华为手机打开app立即奔溃,使用umeng的统计无法发现问题,还好自己写的UncaughtExceptionHandler类中有记录错误信息android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID at a 阅读详情

Android 多渠道打包方案 中已经介绍了基本的思路和基本的源代码,这里给出实践过程出现的问题和解决思路。

首先如果你没有使用上篇博客中给出的Python脚本,而是自己写了shell脚本或者其他脚本,如果实现思路如下:

  • 解压缩apk
  • 新加入channel命名的空文件
  • 压缩
  • 改名为apk文件

那么可能出现下面类似的问题:

09-10 17:32:00.769: W/System.err(2609): android.content.res.Resources$NotFoundException: File res/drawable-hdpi/guide_p1.gif from drawable resource ID #0x7f020109
09-10 17:32:00.769: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1087)
09-10 17:32:00.769: W/System.err(2609):      at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:148)
09-10 17:32:00.769: W/System.err(2609):      at com.android.activity.UserGuideActivity.onCreate(UserGuideActivity.java:73)
09-10 17:32:00.769: W/System.err(2609):      at android.app.Activity.performCreate(Activity.java:5231)
09-10 17:32:00.769: W/System.err(2609):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-10 17:32:00.769: W/System.err(2609):      at android.os.Handler.dispatchMessage(Handler.java:102)
09-10 17:32:00.769: W/System.err(2609):      at android.os.Looper.loop(Looper.java:136)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.main(ActivityThread.java:5001)
09-10 17:32:00.769: W/System.err(2609):      at java.lang.reflect.Method.invokeNative(Native Method)
09-10 17:32:00.769: W/System.err(2609):      at java.lang.reflect.Method.invoke(Method.java:515)
09-10 17:32:00.769: W/System.err(2609):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-10 17:32:00.769: W/System.err(2609):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-10 17:32:00.769: W/System.err(2609):      at dalvik.system.NativeStart.main(Native Method)
09-10 17:32:00.769: W/System.err(2609): Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
09-10 17:32:00.769: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFdNative(Native Method)
09-10 17:32:00.769: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:429)
09-10 17:32:00.769: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1084)
09-10 17:32:00.769: W/System.err(2609):      ... 16 more
09-10 17:32:00.769: W/System.err(2609): android.content.res.Resources$NotFoundException: File res/drawable-hdpi/guide_p2.gif from drawable resource ID #0x7f02010a
09-10 17:32:00.769: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1087)
09-10 17:32:00.769: W/System.err(2609):      at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:148)
09-10 17:32:00.769: W/System.err(2609):      at com.android.activity.UserGuideActivity.onCreate(UserGuideActivity.java:73)
09-10 17:32:00.769: W/System.err(2609):      at android.app.Activity.performCreate(Activity.java:5231)
09-10 17:32:00.769: W/System.err(2609):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
09-10 17:32:00.769: W/System.err(2609):      at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-10 17:32:00.773: W/System.err(2609):      at android.os.Handler.dispatchMessage(Handler.java:102)
09-10 17:32:00.773: W/System.err(2609):      at android.os.Looper.loop(Looper.java:136)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread.main(ActivityThread.java:5001)
09-10 17:32:00.773: W/System.err(2609):      at java.lang.reflect.Method.invokeNative(Native Method)
09-10 17:32:00.773: W/System.err(2609):      at java.lang.reflect.Method.invoke(Method.java:515)
09-10 17:32:00.773: W/System.err(2609):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-10 17:32:00.773: W/System.err(2609):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-10 17:32:00.773: W/System.err(2609):      at dalvik.system.NativeStart.main(Native Method)
09-10 17:32:00.773: W/System.err(2609): Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFdNative(Native Method)
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:429)
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1084)
09-10 17:32:00.773: W/System.err(2609):      ... 16 more
09-10 17:32:00.773: W/System.err(2609): android.content.res.Resources$NotFoundException: File res/drawable-hdpi/guide_p3.gif from drawable resource ID #0x7f02010b
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1087)
09-10 17:32:00.773: W/System.err(2609):      at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:148)
09-10 17:32:00.773: W/System.err(2609):      at com.android.activity.UserGuideActivity.onCreate(UserGuideActivity.java:73)
09-10 17:32:00.773: W/System.err(2609):      at android.app.Activity.performCreate(Activity.java:5231)
09-10 17:32:00.773: W/System.err(2609):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-10 17:32:00.773: W/System.err(2609):      at android.os.Handler.dispatchMessage(Handler.java:102)
09-10 17:32:00.773: W/System.err(2609):      at android.os.Looper.loop(Looper.java:136)
09-10 17:32:00.773: W/System.err(2609):      at android.app.ActivityThread.main(ActivityThread.java:5001)
09-10 17:32:00.773: W/System.err(2609):      at java.lang.reflect.Method.invokeNative(Native Method)
09-10 17:32:00.773: W/System.err(2609):      at java.lang.reflect.Method.invoke(Method.java:515)
09-10 17:32:00.773: W/System.err(2609):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-10 17:32:00.773: W/System.err(2609):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-10 17:32:00.773: W/System.err(2609):      at dalvik.system.NativeStart.main(Native Method)
09-10 17:32:00.773: W/System.err(2609): Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFdNative(Native Method)
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:429)
09-10 17:32:00.773: W/System.err(2609):      at android.content.res.Resources.openRawResourceFd(Resources.java:1084)
09-10 17:32:00.773: W/System.err(2609):      ... 16 more

注意L2 行,问题在这里,看看前面一个代码栈,GifDrawable是第三方支持动态图的类库,所以溯本逐源到GifDrawable.java

/**
 * A {@link Drawable} which can be used to hold GIF images, especially animations.
 * Basic GIF metadata can also be examined.
 *
 * @author koral--
 */
public class GifDrawable extends Drawable implements Animatable, MediaPlayerControl {
    final ScheduledThreadPoolExecutor mExecutor;

    volatile boolean mIsRunning = true;
    long mNextFrameRenderTime = Long.MIN_VALUE;

    private final Rect mDstRect = new Rect();
    /**
     * Paint used to draw on a Canvas
     */
    protected final Paint mPaint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG);
    /**
     * Frame buffer, holds current frame.
     */
    final Bitmap mBuffer;
    final GifInfoHandle mNativeInfoHandle;
    final ConcurrentLinkedQueue<AnimationListener> mListeners = new ConcurrentLinkedQueue<>();
    private ColorStateList mTint;
    private PorterDuffColorFilter mTintFilter;
    private PorterDuff.Mode mTintMode;
    final boolean mIsRenderingTriggeredOnDraw;
    final InvalidationHandler mInvalidationHandler;

    private final RenderTask mRenderTask = new RenderTask(this);
    private final Rect mSrcRect;
    ScheduledFuture<?> mSchedule;

    /**
     * Creates drawable from resource.
     *
     * @param res Resources to read from
     * @param id  resource id (raw or drawable)
     * @throws NotFoundException    if the given ID does not exist.
     * @throws IOException          when opening failed
     * @throws NullPointerException if res is null
     */
    public GifDrawable(@NonNull Resources res, @DrawableRes @RawRes int id) throws NotFoundException, IOException {
        this(res.openRawResourceFd(id));
    }
    ...
}

继续追踪openRawResourceFd()方法

/**
     * Open a file descriptor for reading a raw resource.  This can only be used
     * with resources whose value is the name of an asset files -- that is, it can be
     * used to open drawable, sound, and raw resources; it will fail on string
     * and color resources.
     *
     * <p>This function only works for resources that are stored in the package
     * as uncompressed data, which typically includes things like mp3 files
     * and png images.
     *
     * @param id The resource identifier to open, as generated by the appt
     *           tool.
     *
     * @return AssetFileDescriptor A new file descriptor you can use to read
     * the resource.  This includes the file descriptor itself, as well as the
     * offset and length of data where the resource appears in the file.  A
     * null is returned if the file exists but is compressed.
     *
     * @throws NotFoundException Throws NotFoundException if the given ID does not exist.
     *
     */
public AssetFileDescriptor openRawResourceFd(int id) throws NotFoundException {
    TypedValue value;
    synchronized (mAccessLock) {
        value = mTmpValue;
        if (value == null) {
            value = new TypedValue();
        } else {
            mTmpValue = null;
        }
        getValue(id, value, true);
    }
    try {
        return mAssets.openNonAssetFd(
            value.assetCookie, value.string.toString());
    } catch (Exception e) {
        NotFoundException rnf = new NotFoundException(
            "File " + value.string.toString()
            + " from drawable resource ID #0x"
            + Integer.toHexString(id));
        rnf.initCause(e);
        throw rnf;
    } finally {
        synchronized (mAccessLock) {
            if (mTmpValue == null) {
                mTmpValue = value;
            }
        }
    }
}

注意上面说的几行注释:

 * <p>This function only works for resources that are stored in the package
 * as uncompressed data, which typically includes things like mp3 files
 * and png images.

很明显不支持gif,所以通过上面的解压缩和压缩,就很可能导致一些资源文件不能识别,所以尽量避免解压缩和压缩apk,而应该像Python脚本给的那样,直接向压缩包写入文件,避免不必要的麻烦。

# zip获取新建立的apk文件
zipped = zipfile.ZipFile(target_apk, 'a', zipfile.ZIP_DEFLATED)
# 初始化渠道信息
empty_channel_file = "META-INF/xxxx_{channel}".format(channel = target_channel)
# 写入渠道信息
zipped.write(src_empty_file, empty_channel_file)
Android多渠道打包方案 1、为什么需要多渠道包 为了区分同一app不同android市场,也就是说不同的市场(比如小米市场、华为市场、应用宝等)使用不同的渠道包,所用代码一致,只是渠道号 channel 不一样,这样做是为了方便运营统计。 2、多渠道打包方案 2.1友盟多渠道打包 将渠道标识放到AndroidManifest.xml 中的 meta-data 中; 在gradle编译的时候,根据这个配置将meta-data中的占位符替换成对应的值; 获取渠道时,android代码中读取UMENG_CHANNE... 阅读详情

相关推荐

Android开发使用Gradle实现多渠道打包

上篇文章《Android 如何使用gradle.properties》 记录了如何使用gradle.properties实现与build.gradle之间的配置与交互。这篇文章来看下如何用build.gradle实现多渠道打包。 我们知道打包的流程包括:签名配置、渠道配置、构建几个方面。通常App发布的时候会根据产品以及运营的需求对每个应用商店的渠道进行区分,需要打无数个包,那岂不是疯了? 那...

coder_yao的博客 1618

SVG踩坑:Resources$NotFoundException: File res/drawable-hdpi-v4/

SVG踩坑:Resources$NotFoundException: File res/drawable-hdpi-v4/ 项目中使用了SVG代替PNG,线上出现了Resources$NotFoundException: File res/drawable-hdpi-v4/xxx.png的异常。 Crash处的代码: VectorDrawableCompat vectorDrawableCo...

100斤的博客 6343

Android-Gradle-自动化多渠道打包

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在!

2401_83817689的博客 976

android.content.res.Resources$NotFoundException: File res/drawable/ripple_round_blue.xml

详细错误: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ripple_round_blue.xml from drawable resource ID #0x7f02010bjava.lang.RuntimeException: Unable to start activity Com

tao72909的专栏 2446

Android多渠道打包解决方案插件的实战指南

ApkMultiChannelPlugin是一个专为Android应用设计的多渠道打包插件,它起源于开发者对应用分发及市场分析需求的增长。随着移动互联网的蓬勃发展,开发者不再满足于单一渠道的分发模式,而是迫切需要一种能够快速适应多渠道市场变化,并提供灵活分发和精准数据分析的工具。在这样的背景下,ApkMultiChannelPlugin应运而生,成为帮助开发者实现这一目标的有效解决方案。ApkMultiChannelPlugin核心功能可概括为以下几点:快速配置渠道信息。

weixin_33608403的博客 727

Android 7.0下的高效多渠道脚本打包指南

随着Android应用市场竞争日益激烈,开发者面临着多种多样的分发渠道。为了在多个应用商店和市场进行有效推广,需要对应用进行多渠道打包。多渠道打包能够帮助开发者跟踪不同渠道的用户获取数据,分析渠道效果,从而优化推广策略和资源分配。walle是一个为Android应用提供多渠道打包支持的命令行工具,它通过自动化手段简化了渠道标识的管理和打包过程。walle使得开发者能够在不修改应用代码的情况下,仅通过配置文件和简单的命令行操作,快速生成包含不同渠道信息的应用安装包。

weixin_42388898的博客 684

解决appcompat-v7:24包的一些坑NotFoundException: File res/drawable-v19/..

最近把com.android.support:appcompat-v7:23.3.0升级到24,然后就遇到了两个坑,可能是最新包与AS,以及android api向下兼容到一些问题没处理好导致,现在分享下我遇到的两个坑: 导入最新24版本的v7包后,在android 4.4.4 API 19手机中,项目 无法运行(向上测试过,6.0,5.0手机都可以正常运行,向下未测试),运行报异常 Cause

简Jane的博客 3463

STM32多模式智能小车状态机设计与中断优先级实践

在嵌入式实时系统中,状态机是实现多任务协同与功能切换的核心范式。其本质是通过有限状态集合、明确转移条件和确定性动作,构建可预测、易维护的控制逻辑。基于STM32等资源受限MCU时,需兼顾状态调度效率、中断并发安全与硬件资源约束。关键技术价值体现在:提升系统模块解耦度、支持物理按键与蓝牙双源触发、保障实时响应不丢帧。典型应用场景包括智能小车多模运行(循迹、避障、遥控、定距跟随等)、工业设备工作模式切换及IoT终端低功耗状态管理。本文以STM32F103C8T6平台为例,深入解析全局模式变量设计、双通道状态切换

weixin_42509888的博客 93

NotFoundException: File res/drawable/abc_vector_test.xml from drawable resourceID

华为手机碰到的问题记录-NotFoundException:File res/drawable/abc_vector_test.xml from drawable resource ID 后来在build gradle中加入了 aaptOptions {        additionalParameters "--no-version-vectors"     } 然后就ok了。

LIANGXIAOYAN7002的专栏 1万+

LangChain开发避坑指南:为什么Pylance总提示‘无法解析导入‘?实测7种修复方案

本文深入解析了在VS Code中使用LangChain开发时,Pylance频繁提示‘无法解析导入’的根本原因——Python解释器与语言服务器的环境路径不一致。文章提供了从基础排查到深度配置的7种实测修复方案,包括切换解释器、配置extraPaths、使用pyrightconfig.json等,旨在帮助开发者彻底解决此问题,提升AI应用开发效率。

weixin_28826521的博客 444

Java + Selenium + TestNg + Allure Web UI 自动化

我们知道,在Python中针对Web UI自动化有Python + Selenium + Pytest/Unittest +Allure的技术栈。那么对于Java而言,也有其独特的Web UI 自动化技术栈。相同的,我们同样的运用Selenium框架,测试报告同样运用Allure。不同的是,我们运用的语言由Python转化为了Java,测试用例管理框架从Pytest转化为了TestNG。

qq_45594960的博客 1913

美团Walle多渠道打包问题记录

美团Walle多渠道打包问题记录 项目是安卓和Flutter混编项目 gradle版本 6.5.1 tools版本 4.0.1 libs.jar找不到 * What went wrong: Execution failed for task ':app:lintVitalRelease'. > Could not resolve all artifacts for configuration ':app:debugRuntimeClasspath'. > Failed to transf

cxz200367的博客 858

SolidWorks与Python二次开发实战:从宏录制到自动化脚本

本文详细介绍了利用Python对SolidWorks进行二次开发的实战方法。通过宏录制获取操作指令,再将其转换为Python脚本,工程师可以高效实现建模、出图等重复任务的自动化,显著提升设计效率。文章涵盖了环境搭建、代码转换、调试技巧及完整实战案例,为工程师提供了从入门到精通的完整路径。

weixin_29082143的博客 946

Android Gradle 更新到 3.4.1 问题记录

Android Gradle 更新到 3.4.1 问题记录1、多渠道打包会出现问题属性不能用的问题打包维度不统一的问题2、之后就是提示你修改 complie 、testCompile、apt、等等最后还有几个自身项目中导致的问题1 、Cannot create variant 'android-aidl' after configuration':xxxxxxxx:debugApiElement...

YAMgoddess 5832

从零搭建私有AI工作站:Ollama+DeepSeek+Dify本地化部署全攻略

本文提供了一份详尽的本地化AI工作站搭建指南,核心在于实现数据安全与离线可用。通过整合Ollama、DeepSeek与Dify三大工具,手把手教你完成从环境配置、模型部署到可视化应用构建的全过程,重点解决了Dify连接Ollama等关键步骤,助你打造一个完全自主可控的私有AI开发环境。

weixin_28396629的博客 311

《YOLOv8-seg改进》专栏指导书册 &手把手创新教程

学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研;1)手把手教你如何训练YOLOv8-seg;2)模型创新,提升分割性能;3)独家自研模块助力分割;

会AI的学姐 3810

【Android】开发 需求&&问题 记录

是做游戏开发的,内容不一定对您有用。 一.Android Studio使用tips 版本要先看好,虽然我也很烦这个东西,但是本版对照好了才能走更少的弯路。 工程路径应都为 字母&&符号等,不然会出现类似如下报错。 YOUR PROJECT PATH CONTAINS NON-ASCII CHARACTERS. 代理要搞好,因为很多库都是国外的,要不然用国内的镜像源,要不然搞个代理。一个通畅的网络环境能解决绝大部分问题。 1.Android studio 多渠道打包 Android st

??? 527

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 114

abortonerror_开发中碰到的错误日记1

记录开发中碰到的错误把一些碰到的错误都记录下来。随时更新吧!好记性,不如烂笔头。No resource found that matches the given name错误如下Error:(11, 31) No resource found that matches the given name (at 'layout_above' with value '@id/tv_base').emmm碰...

weixin_42231085的博客 398

如何设置Xilinx以太网IP核的Pause帧处理

这里要注意,为什么是或,第一个条件是该功能使能取反,也就是说,如果你设置使能不打开的话,这个条件是直接满足的;先来看图中第二句,判断该以太网数据包为Global Pause帧(gpp),首先要满足Step1,然后是由上图中第二句代码(assign global_pause_packet)后面的所有项“与”(&&)起来的,就是说要满足后面所有的项,分别是DA符合,SA符合,Etype符合,Opcode符合,并且使能了该功能(即设置ctl_rx_enable_gpp=1)。如果没通过,则进入Step3。

qq_43416206的博客 618

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AndroidStudio3.0升级gradle配置填坑

由于升级了AndroidStudio3.0,其他配置也得跟着升,首当其冲的就是gradle,不得不升级到3.0,但由此带来了一系列问题。记录一下,希望帮助有缘人!!!问题一Cannot set the value of read-only property ‘outputFile’….出现此错误,是由于build.gradle里面指定了apk输入路径导致,新版gradle已经去除outputFile

waitinghc的专栏 3750

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

多渠道打包方案,其实很有玄机

/ 今日科技快讯 /近日,华为乌克兰分公司发表公报说,公司已经中标乌克兰首都基辅地铁4G网络建设项目。华为中标的项目是其在中东欧和斯堪的纳维亚地区最大的地铁通信项...

郭霖 756

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Android】多渠道打包与签名机制

我们在发布APP时,往往需要生成多个渠道包,以上传到不同的应用市场。

yang553566463的博客 3478

walle(瓦力)多渠道打包

网上介绍walle多渠道打包的太多了,我这里记录一下,自己多渠道打包+360加固(乐固)遇到的渠道丢失问题和解决办法,如要看多渠道打包,移步我之前的文章walle渠道打包 直接介绍步骤 步骤一: gradlew clean assembleReleaseChannels -PchannelList=oppo //进行渠道打包 步骤二(有需要的注意): 这里使用第三方加固(360、乐固),加固的时...

u013346208的博客 1063

Android多渠道打包配置方案

多渠道打包,顾名思义就是用来区分同一个软件,在不同渠道上的释放版本。给不同型号的手机所用的apk会做一些细微的区别。有需求是要一套软件代码库多个项目共同使用,针对不同的项目打包不同的渠道apk,现学记录一下。

weixin_43240212的博客 857
上一篇: Java设计模式 - 装饰器模式
下一篇: Android 绘制虚线
linroidh
博客等级 码龄16年 15粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值