1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android官方素材 android Studio 中文社区

android官方素材 android Studio 中文社区

时间:2019-07-27 17:10:37

相关推荐

android官方素材 android Studio 中文社区

=("img_%1d",+1);res=()(name,"",());

我们可以设置为来开启严格模式,使只有确实被使用的资源被保留。

以上就是自定义资源保持规则相关的配置,举个例子:

?xmlversion="1.0"encoding="utf-8"?resourcesxmlns:tools="/tools"tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"tools:discard="@layout/unused2"tools:shrinkMode="strict"/

移除替代资源

一些替代资源,例如多语言支持的strings.xml,多分辨率支持的layout.xml等,在我们不需要使用又不想删除掉时,可以使用资源压缩将它们移除。

我们使用resConfig属性来指定需要支持的属性,例如

一些替代资源,例如多语言支持的strings.xml,多分辨率支持的layout.xml等,在我们不需要使用又不想删除掉时,可以使用资源压缩将它们移除。

我们使用resConfig属性来指定需要支持的属性,例如

android{defaultConfig{...resConfigs"en","fr"}}

其他未显式声明的语言资源将被移除。

最后附上一个我在实际项目中的混淆方案

proguard-android.txt

文件内容

#代码混淆压缩比,在0~7之间-optimizationpasses5#混合时不使用大小写混合,混合后的类名为小写-dontusemixedcaseclassnames#指定不去忽略非公共库的类-dontskipnonpubliclibraryclasses#不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。-dontpreverify-verbose#避免混淆泛型-keepattributesSignature#保留Annotation不混淆-keepattributes*Annotation*,InnerClasses#google推荐算法-optimizations!code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*#避免混淆Annotation、内部类、泛型、匿名类-keepattributes*Annotation*,InnerClasses,Signature,EnclosingMethod#重命名抛出异常时的文件名称-renamesourcefileattributeSourceFile#抛出异常时保留代码行号-keepattributesSourceFile,LineNumberTable#处理support包-dontnoteandroid.support.**-dontwarnandroid.support.**#保留继承的-keeppublicclass*extendsandroid.support.v4.**-keeppublicclass*extendsandroid.support.v7.**-keeppublicclass*extendsandroid.support.annotation.**#保留R下面的资源-keepclass**.R$*{*;}#保留四大组件,自定义的Application等这些类不被混淆-keeppublicclass*extendsandroid.app.Activity-keeppublicclass*extendsandroid.app.Appliction-keeppublicclass*extendsandroid.app.Service-keeppublicclass*extendsandroid.content.BroadcastReceiver-keeppublicclass*extendsandroid.content.ContentProvider-keeppublicclass*extendsandroid.preference.Preference-keeppublicclasscom.android.vending.licensing.ILicensingService#保留在Activity中的方法参数是view的方法,#这样以来我们在layout中写的onClick就不会被影响-keepclassmembersclass*extendsandroid.app.Activity{publicvoid*(android.view.View);}#对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆-keepclassmembersclass*{void*(**On*Event);void*(**On*Listener);}#保留本地native方法不被混淆-keepclasseswithmembernamesclass*{nativemethods}#保留枚举类不被混淆-keepclassmembersenum*{publicstatic**[]values();publicstatic**valueOf(java.lang.String);}#保留Parcelable序列化类不被混淆-keepclass*implementsandroid.os.Parcelable{publicstaticfinalandroid.os.Parcelable$Creator*;}-keepclassmembersclass*implementsjava.io.Serializable{staticfinallongserialVersionUID;privatestaticfinaljava.io.ObjectStreamField[]serialPersistentFields;privatevoidwriteObject(java.io.ObjectOutputStream);privatevoidreadObject(java.io.ObjectInputStream);java.lang.ObjectwriteReplace();java.lang.ObjectreadResolve();}#assumenosideeffects:删除android.util.Log输出的日志-assumenosideeffectsclassandroid.util.Log{publicstatic***v(...);publicstatic***d(...);publicstatic***i(...);publicstatic***w(...);publicstatic***e(...);}#保留Keep注解的类名和方法-keep,allowobfuscation@interfaceandroid.support.annotation.Keep-keep@android.support.annotation.Keepclass*-keepclassmembersclass*{@android.support.annotation.Keep*;}#3D地图V5.0.0之前:-dontwarncom.amap.api.**-dontwarncom.autonavi.**-keepclasscom.amap.api.**{*;}-keepclasscom.autonavi.**{*;}-keepclasscom.amap.api.maps.**{*;}-keepclasscom.autonavi.amap.mapcore.*{*;}-keepclasscom.amap.api.trace.**{*;}#3D地图V5.0.0之后:-keepclasscom.amap.api.maps.**{*;}-keepclasscom.autonavi.**{*;}-keepclasscom.amap.api.trace.**{*;}#定位-keepclasscom.amap.api.location.**{*;}-keepclasscom.amap.api.fence.**{*;}-keepclasscom.autonavi.aps.amapapi.model.**{*;}#搜索-keepclasscom.amap.api.services.**{*;}#2D地图-keepclasscom.amap.api.maps2d.**{*;}-keepclasscom.amap.api.mapcore2d.**{*;}#导航-keepclasscom.amap.api.navi.**{*;}-keepclasscom.autonavi.**{*;}#Retaingenerictypeinformationforusebyreflectionbyconvertersandadapters.-keepattributesSignature#Retainservicemethodparameterswhenoptimizing.-keepclassmembers,allowshrinking,allowobfuscationinterface*{@retrofit2.http.*methods}#Ignoreannotationusedforbuildtooling.-dontwarnorg.codehaus.mojo.animal_sniffer.IgnoreJRERequirement#IgnoreJSR305annotationsforembeddingnullabilityinformation.-dontwarnjavax.annotation.**#JSR305annotationsareforembeddingnullabilityinformation.-dontwarnjavax.annotation.**#Aresourceisloadedwitharelativepathsothepackageofthisclassmustbepreserved.-keepnamesclassokhttp3.internal.publicsuffix.PublicSuffixDatabase#AnimalSniffercompileOnlydependencytoensureAPIsarecompatiblewitholderversionsofJava.-dontwarnorg.codehaus.mojo.animal_sniffer.*#OkHttpplatformusedonlyonJVMandwhenConscryptdependencyisavailable.-dontwarnokhttp3.internal.platform.ConscryptPlatform#fastjson混淆-keepattributesSignature-dontwarncom.alibaba.fastjson.**-keepclasscom.alibaba.**{*;}-keepclasscom.alibaba.fastjson.**{*;}-keeppublicclasscom.ninstarscf.ld.model.entity.**{*;}

所有文章参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。