android proguard.jar,android-使用proguard混淆JAR时的怪异行为

在尝试使用ProGuard 4.7混淆Android JAR时,遇到公开函数参数名称丢失的问题。即使指定了`keepparameternames`,Eclipse中的代码完成仍显示错误的参数名称。问题在于ProGuard删除了未使用的参数名称,关闭优化(-dontoptimize)可作为临时解决方案。修复已在后续版本中完成。
摘要由CSDN通过智能技术生成

我正在尝试使用Proguard(4.7,但4.6也有问题)来混淆Android JAR.我可以将问题分解为一个简单的示例项目.

问题:对于某些函数(由于什么原因不清楚),公开的函数的参数名称丢失,有时“加扰”(确实).我想首先关注“丢失”的部分,因为混乱的事情更加奇怪.

1)我在Eclipse中创建了一个库项目.由于某些原因,Android SDK为2.1更新1

该项目被标记为“ Library Project”,并且只有一个类MyJarEntry.java和一个导出函数foo

package com.decades.myjar;

import android.location.LocationListener;

public class MyJarEntry {

public void foo(String provider, long minTime, float minDistance, LocationListener listener) {

}

}

2)我的项目有一个子目录“ proguard”,其中包含最新的proguard.jar和proguard.cfg,如下所示

-printmapping out.map

-keepparameternames

-renamesourcefileattribute SourceFile

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,

SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {

public protected *;

}

3)我的Build.xml具有构建JAR和优化它的目标,因此在Eclipse中构建lib之后,我在终端中执行“ ant jar”和“ andoptimize”.这是build.xml

Lib JAR builder

可以进行构建和混淆处理,但是将生成的MyJar_0.0.1.jar导入到测试项目中后,代码完成不会显示正确的参数名称,而是将foo表示为

foo(String arg0,long arg1,float arg2,LocationListener arg3)

尽管指定了“ keepparameternames”.

我已经花了几个小时,却无法正常工作.如果导入未混淆的JAR,一切都很好.软件包中的其他一些功能也会显示正确的参数名称.

一无所知,对吗?

问候

解决方法:

ProGuard 4.7(或更早版本)似乎会删除未使用的参数名称.现在,我已为以后的版本修复了此问题.您可以通过关闭优化(-dontoptimize)来解决此问题.

标签:android,proguard,obfuscation

来源: https://codeday.me/bug/20191012/1900538.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值