用proguard.cfg默认配置,并在default.properties中加入proguard.config=proguard.cfg
然后用androidtools导出签名或不签名的apk文件,结果是混淆了,但少了很多文件夹和class文件。
请问是什么问题,是不是proguard.cfg配置写得不对。
下面附上proguard.cfg的内容
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * {
native <methods>;
}-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
然后用androidtools导出签名或不签名的apk文件,结果是混淆了,但少了很多文件夹和class文件。
请问是什么问题,是不是proguard.cfg配置写得不对。
下面附上proguard.cfg的内容
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * {
native <methods>;
}-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
并且混淆后的apk不能在真机运行。应该是少了没写class文件造成的。
why
大家都怎么混淆的,能不能把proguard.cfg发上来看看。
我这边是用到反射的地方会莫名其妙的出错。
所以我现在想指定混淆几个类就好,不知道指定混淆某几个类在cfg里怎么配置有大哥帮忙么、
然后直接签名导出即可打成混淆包。
然后用androidtools导出签名或不签名的apk文件,结果是混淆了,但少了很多文件夹和class文件。这个方法后生成的apk文件不能安装
<?xml version="1.0" encoding="utf-8"?>
<Menu>
<!-- 考勤上报 -->
<item parent="MenuRoot" icon="checkin" target="checkIn" isMenu="true"
checkIn="false" title="考勤上报" packageName="com.doone.smas.phone.android.activity"
className=".CheckInActivity" userType="11,12" />
<item parent="checkIn" icon="checkin" title="人员签到" isMenu="false"
checkIn="checkin" target="MenuRoot" packageName="" className="checkIn"
userType="11,12" />
<item parent="checkIn" icon="checkout" title="人员签退" isMenu="false"
checkIn="checkout" target="MenuRoot" packageName="" className="checkOut"
userType="11,12" />
<item parent="checkIn" icon="rest" title="休息上报" isMenu="false"
checkIn="rest" target="MenuRoot" packageName="" className="rest"
userType="11,12" />
<item parent="checkIn" icon="back" title="返回上级" isMenu="true"
checkIn="false" target="MenuRoot" packageName="" className=""
userType="11,12" />
</Menu>
我也是用了这个之后,发现直接用eclipse安装到手机上,应用没问题,,如果打包成apk文件后,再安装,有些接收服务器push的功能就用不了。。好纠结。