当前位置: 首页 > 知识库问答 >
问题:

在Android项目中使用kotlin后,APK文件大小增加

寇夜洛
2023-03-14

我在Android studio中创建了一个Android应用程序,并使用Kotlin作为编程语言
现在我的应用程序完成了,我想构建我的应用程序,但构建应用程序后,我的APK文件大小变为35mb<我的可绘制文件夹大小是2mb,我没有任何大文件,但为什么我的应用程序大小是35mb?!

为了生成测试apk版本,我使用了构建-

但是当我使用java语言时,这个大小是7mb!!!

我使用了这些依赖项:

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "androidx.appcompat:appcompat:$androidx_version"
    implementation "androidx.core:core-ktx:$androidx_version"
    implementation "androidx.constraintlayout:constraintlayout:$constrant_layout_version"
    implementation "androidx.recyclerview:recyclerview:$material_version"
    implementation "com.google.android.material:material:$material_version"
    implementation "androidx.legacy:legacy-support-v4:$material_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation "junit:junit:$junit_version"
    androidTestImplementation "androidx.test.ext:junit:$androidx_junit_version"
    androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
    //Anko lib
    implementation "org.jetbrains.anko:anko-commons:$anko_version"
    //Rx
    implementation "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
    implementation "io.reactivex.rxjava2:rxjava:$rxjava_version"
    //OkHttp
    implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
    implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version"
    //Retrofit
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
    implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'
    //Gson
    implementation "com.google.code.gson:gson:$gson_version"
    //Image
    implementation "com.github.bumptech.glide:glide:$glide_version"
    annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"
    //Calligraphy
    implementation "io.github.inflationx:calligraphy3:$calligraphy_version"
    implementation "io.github.inflationx:viewpump:$viewpump_version"
    //Preferences lib
    implementation "com.github.MrNouri:GoodPrefs:$nourilib_versions"
    //Dynamic ui sizes
    implementation "com.github.MrNouri:DynamicSizes:$nourilib_versions"
    //Support MultiDex
    implementation "androidx.multidex:multidex:$multidex_version"
    //Animations
    implementation "com.daimajia.easing:library:$yoyoanimation_version"
    implementation "com.daimajia.androidanimations:library:$nineoldandroid_version"
    //Map
    implementation "ir.map.sdk:sdk_map:$mapir"
    implementation "com.mapbox.mapboxsdk:mapbox-sdk-services:$mapbox_service"
    implementation "com.mapbox.mapboxsdk:mapbox-sdk-geojson:$mapbox_service"
    implementation "com.mapbox.mapboxsdk:mapbox-android-telemetry:$mapbox_telemetry"
    implementation "com.mapbox.mapboxsdk:mapbox-android-gestures:$mapbox_gestures"
    //Permission
    implementation "ru.superjob:kotlin-permissions:$permission_version"
    //Expandable recyclerview
    implementation "com.thoughtbot:expandablerecyclerview:$expandable_recycler_version"
    //Firebase messaging
    implementation "com.google.firebase:firebase-messaging:$firebase_messaging_version"
    //Firebase crashlytics
    implementation "com.google.firebase:firebase-analytics:$firebase_analytics_version"
    implementation "com.crashlytics.sdk.android:crashlytics:$firebase_crashlytics_version"
}

我该怎么修?

共有3个答案

帅彦
2023-03-14

您可以通过分析生成的APK来修复这些错误。

在Android Studio-

从文件系统中选择生成的APK,并查看哪些资源正在膨胀您的APK。

如果你有任何疑问,请告诉我。

司徒池暝
2023-03-14

在android studio中拖放apk文件。您将看到apk的分析器。并查看所有LIB、图像和java文件等的单个大小。

羊舌胡非
2023-03-14

你使用大量库的第一件事可能是,这就是应用程序大的原因。减少应用程序大小的方法很少

>

  • 使用您自己的组件,然后使用外部库,例如您正在使用可消耗的回收视图库实现"com.thoughtbot: expandable的回收视图:$expandable_recycler_version"

    使用Svg绘图,然后使用png等。因为你可以使用相同的svg文件来调整屏幕大小。

    删除未使用的资源

    最后,如果您尝试了所有这些,那么请使用ABI。尽管如此,您可以为不同的设备创建多版本。将此粘贴到android中的build中的block中。格雷德尔锉刀

    splits {
     abi {
        enable true
        reset()
        include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a', 'armeabi', 'mips',
       'mips64'
        universalApk true
       }
      }
      project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 
      3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
    
      android.applicationVariants.all { variant ->
    
      variant.outputs.each { output -> output.versionCodeOverride =
      project.ext.versionCodes.get(
        output.getFilter(com.android.build.OutputFile.ABI), 0
        ) * 1000000 + android.defaultConfig.versionCode
      }
     }
    

  •  类似资料:
    • 我有一个android项目,其中既有Java的文件,也有kotlin的文件。 编译后,当我解压缩生成的apk文件时,我可以在它们的包路径中看到我的项目的所有Kotlin文件。然而,Java的档案并不存在。 我怎样才能修复这个问题,并阻止Koltin文件被添加到apk中? 谢谢 我的建筑。Gradle:

    • 我开始在现有的android项目中测试使用react native对大小的影响。创建一个简单的android项目(带导航抽屉的模板项目)并创建。apk文件,在发布模式下大小为。 然后,我尝试按照doc中的步骤将react native与之集成,https://facebook.github.io/react-native/docs/integration-with-existing-apps.ht

    • 问题内容: 在Windows上的Python中,我可以通过创建一个大文件 现在大约是1 GB。但是,在Linux上,这将返回。 有没有办法在Linux上获得与Windows相同的行为?也就是说,能够使用?来增加文件的大小。 问题答案: 至少在POSIX系统上,不能用于增加(或减小)文件的大小。的功能是将文件的一部分映射到内存。合乎逻辑的是,您请求映射的东西应该确实存在!坦白说,我真的很惊讶您实际上

    • 问题内容: Node通过传递命令行标志来增加堆大小。在create-react-app项目中,一切都取决于react- scripts的使用。如何在此类项目中传递此参数,我最好在哪里进行? 谢谢你的帮助。 问题答案: 非常感谢@ dan-abramov,因为他的评论是答案!(以防万一,请给他投票)。 你可以把例如在那里,而不是

    • 我正在做一个静态编程语言Java混合项目。 Gradle版本和插件最近分别升级到3.1.3和4.4。 现在,在编译时,我在一些Kotlin文件中发现了一个错误“未解析引用”。 例如:- 在上面的代码得到编译错误在android. r.id.home作为未解决的参考。 也在 在查找“removeOnGlobalLayoutListener”时获取“unresolved reference”错误 这件

    • 我想知道在混合Java和Kotlin文件的Android项目中,我们是否必须使用annotationProcessor或kapt,或者两者都用? 在我的理解中,处理器必须用于使用代码生成注释的Java文件,而kapt必须用于使用代码生成注释的静态编程语言文件。 我有一个混合两种语言的项目,我刚刚用kapt替换了build.gradle中所有的annotationProcessor依赖项。令人惊讶的