Viv*_*rde 39 java android jar proguard apk
我现在将在Google Play商店发布我的第一个应用程序.我已经压缩了我的应用程序中使用的图像.我对应用程序的大小有一些疑问.
如果应用程序的大小小于2 MB,那么用户卸载应用程序的可能性就会降低,对于属于教育领域的应用程序,我的这种说法是否属实?
但是,当我在Windows中看到我的apk文件时,它显示3.10 MB但是当它从设备中安装时从应用信息中显示它显示:
Total............................8.68 MB
App..............................7.02 MB
USB storage app..................0.00 B
Data.............................1.66 MB (perhaps it is the size of sqlite db + ttf's)
SD card..........................0.00B
Run Code Online (Sandbox Code Playgroud)
那么,为什么我看到我的应用程序大小增加了很多,它可以最小化吗?
而且,我在我的项目中使用了4个库(jars)Android Private Libraries
,但是这些库也在这个文件夹之外.
删除它们是否更安全,删除它们有助于减少apk大小?
此外,我访问了许多网页,描述了什么Proguard
,我真正理解Proguard如何减小apk的大小,它通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆我们的代码.结果是较小的.apk文件,更难以进行逆向工程.但我不知道proguard-project.txt
应该怎么样?
我使用4个图书馆在我的应用程序,即easyfacebookandroidsdk_2.3.jar
,android-support-v7-appcompat.jar
,google-play-services.jar
和android-support-v4.jar
.
目前我proguard-properties.txt
看起来像这样,也不使用WebView
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-keep class com.facebook.** { *; }
-keepattributes Signature
Run Code Online (Sandbox Code Playgroud)
那么,我应该添加哪些行proguard-properties.txt
以便它可以删除未使用的引用,类等,以减少apk大小?
利用现有AndroidUnusedResources.jar在https://code.google.com/p/android-unused-resources/ 在Android项目中发现未使用的资源.
我认为这与proguard已经做过的事情是一样的吗?或者是否应该在启用proguard后使用?
此外,您可以在答案中提及您认为应该分享的任何遗漏.
提前致谢...
Chr*_*ski 43
几乎完全是因为你的res文件夹图像!您应该在drawable-mdpi,-hdpi,xhdpi文件夹中拥有大约4个每个图像的副本.唯一的区别是theu都是不同的大小.
有可能没有那些jar文件的多个副本!只有一个链接到它的副本!
是的,你说的是关于Proguard的.但是,要意识到你在这里谈论文本文件.他们真的很小.我的意思是真的很小(千字节).您的问题是兆字节(MB)大小的问题.那是图片!!!!
重复.那是图片!!!!
启用proguard将节省一点点大小.
是的,这些在您的情况下更重要.请阅读并应用这些.祝好运!
如果用户发现您的应用有用,那么他们就不会将其卸载; 但是,你可以做几件事
async
它们移动到您的应用中吗?允许用户将数据移动到SD卡.
[编辑]应用程序进入Play商店一段时间后,请检查开发者控制台,查看最少使用的屏幕尺寸/密度. 从您的应用程序中删除该drawable文件夹!这可以减少大小的数量!但是,请查看我的编辑,了解这种方法的缺点!!
您可能想要显示一些图像,因为这样我们就可以看到您正在处理的内容
@AshwinñBhanushali具有强大的答案这里的问题,我没有回答的一部分,但他基本上是告诉你,没有什么,你可以真正做到除了我说的话,加上一个想法或2级以上.
我确实有另一个想法是基于他的一个想法会更好,因为Android Studio不再包含项目中的drawable-ldpi文件夹了.因此,只有使用Eclipse,我的扩展才会有所帮助
这是有效的,因为图片比文本文件占用更多的字节.所有这些绘图都有相同的图像(只是不同的大小).从较少使用的桶中删除图像可以节省大量空间!
请注意,从您的应用中删除这些存储桶意味着您的应用必须在使用已移除存储桶的手机上执行更多操作.这些用户的应用可能会变慢 ; 但是,应用程序的大小可以减少更多.
文本文件几乎不占用任何内容.查看项目的文件系统!
在下图中.检查......的大小
在您的情况下,您将看到java文件夹的大小可能非常小(10到几百KB); 但是,您会看到res文件夹的大小非常大(几MB!).
这意味着任何压缩或代码库中的减少都会非常小而且不值得!
因此,降低APK尺寸的最佳方法是按照我上面的说明操作!
这是一个你可以马上做的测试,看看Proguard和AndroidUnusedResources.jar等工具的绝对最大值(加上更多)会减小APK文件的大小!
您需要做的是从项目中删除除代表声明之外的所有代码.对抽象类,接口,枚举等执行相同的操作......您的项目结构应该保持不变,那么您根本不应该使用任何外部库.
所以你的所有课程都会有这样的东西......
public class CustomClass {
private String variable; // List of variables
public CustomClass() { ... } // List of constructors
public getVariable() { ... } // List of Assessors
public setVariable(String val) { ... } // List of Mutators
private String helperMethods() { ... } // List of helper and other methods
}
Run Code Online (Sandbox Code Playgroud)你应该删除类,接口,枚举等内的所有代码,如下所示; 但是,请保留所有图像!...
public CustomClass {
// Everything is removed!! No libraries used, nothing. Unless certain classes
// require some methods like Activity. Those methods should be empty though!
}
Run Code Online (Sandbox Code Playgroud)现在编译并构建您的项目.
检查新APK大小到您当前的APK.
在手机上安装应用,并根据您当前的应用尺寸检查新的应用尺寸
如果您注意到2个应用程序仍然大小相同,那么在Proguard和AndroidUnusedResources.jar上花费所有时间在此阶段毫无意义.这是一项测试,可以了解您将个人资源用于减少应用规模的位置.
归档时间: |
|
查看次数: |
34318 次 |
最近记录: |