我在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"
}
我该怎么修?
在android studio中拖放apk文件。您将看到apk的分析器。并查看所有LIB、图像和java文件等的单个大小。
你使用大量库的第一件事可能是,这就是应用程序大的原因。减少应用程序大小的方法很少
>
使用您自己的组件,然后使用外部库,例如您正在使用可消耗的回收视图库实现"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依赖项。令人惊讶的