【问题标题】:disable library in gradle for specific activity为特定活动禁用 gradle 中的库
【发布时间】:2015-07-31 15:11:16
【问题描述】:

我正在开发一个应用程序,该应用程序具有同时录制音频和进行 FFT 的活动。还会在屏幕上显示声纳等动画。为了同时进行 FFT,应用程序应该快速处理。 在我的测试中,该应用程序在 20 毫秒内执行 ffts,这在 android 填充下一个缓冲区之前非常好。但是在我在依赖项/ build.gradle 中添加了一些库之后,即使该记录活动与该库无关,它的 fft 持续时间也会急剧增加到 400 毫秒,并且它无法在下一个缓冲区之前完成 fft 过程。它会导致问题 我的问题是;我可以为某些活动禁用某些库吗?

有问题的库是“com.goseamless:seamless:2.4.0”,它是广告网络库。 为了让它运行,我需要启用multidex。 添加并启用multidex后,出现上述问题

android {
compileSdkVersion 21
buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
//compileOptions.encoding = 'windows-1254'

defaultConfig {

    minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
    targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION
    multiDexEnabled true
}

dexOptions {
        //incremental true
        javaMaxHeapSize "2048M"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

repositories {
maven {
    url "http://maven.seamlessapi.com:8081/nexus/content/repositories/releases/"
}
}

dependencies {
compile files('libs/picasso-2.5.2.jar')
compile project(':Libraries:CropImageLib')
compile project(':Libraries:facebook-android')
compile project(':Libraries:NineOldLibs')
compile project(':Libraries:SlidingMenu')
compile files('libs/JTransforms-3.0.jar')
compile files('libs/JLargeArrays-1.2.jar')
compile files('libs/gdata-core-1.0.jar')
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:support-v4:18.0.+'
compile 'com.android.support:appcompat-v7:18.0.+'
compile 'com.goseamless:seamless:2.4.0'
compile 'com.android.support:multidex:1.0.1'
}

有什么想法???

【问题讨论】:

    标签: android gradle android-gradle-plugin build.gradle


    【解决方案1】:

    我的问题是;我可以为某些活动禁用某些库吗?

    不是从 Gradle 的角度来看。

    尽管该记录活动与该库无关,但它的 fft 持续时间急剧增加到 400 毫秒,并且它无法在下一个缓冲区之前完成 fft 过程。它会导致问题

    使用 Traceview 和 systrace 等工具准确确定时间花费在何处。然后,弄清楚你需要做些什么来改进它。例如,您可能需要从您的活动的onPause() 调用广告视图的某些方法,以使它们消耗更少的 CPU 时间。

    【讨论】:

      【解决方案2】:

      我找到了问题和解决方案。由于广告网络 api 包含大约 40k 方法,问题是 65k dex 问题。所以我开始通过获取类并将它们作为 java 文件添加到应用程序中来缩小我使用的库。所以我可以删除库。然后当它回到 65k 时,它又开始工作了。如果您需要更多信息,请告诉我。另外,我已经使用这个很棒的工具来详细了解哪个库有多少方法。 https://github.com/mihaip/dex-method-counts

      【讨论】:

        猜你喜欢
        • 2011-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 2020-04-13
        • 1970-01-01
        • 2019-03-26
        相关资源
        最近更新 更多