在阅读赏金的评论之后,我意识到OP实际上只是提出了一些简单的是/否回复,所以我将把我的评论扩展到答案.一般来说,正确设计的proguard.cfg和项目结构足以防止这种困境.

典型的proguard配置(参见第7节“this link中的完整Android应用程序部分”)保证在混淆期间保留所有与Android相关的内容,如Activity,View等.例如,改变配置没有任何意义,以混淆Acticity.onCreate()方法,因为它显然会在运行时破坏应用程序.换句话说,一个好的设计proguard.cfg将保护所有公共接口到底层运行时框架并保持它们保持不变.

... ...

-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 * extends android.view.View {

public (android.content.Context);

public (android.content.Context,android.util.AttributeSet);

public (android.content.Context,android.util.AttributeSet,int);

public void set*(...);

}

... ...

另一方面,Android测试项目应该专注于测试Android组件(在混淆期间故意保留),即一个视图被正确呈现,一个按钮点击执行正确的任务,并应避免为不依赖于任何的POJO类编写测试Android API,请注意这些POJO通常是我们混淆的.最好在应用程序或引用的java项目中为这些POJO编写纯junit测试,以便在创建最终版本(模糊,签名和zipaligned)之前在maven测试阶段涉及这些junit测试.此外,良好的OO设计将屏蔽这些中间POJO依赖性并使它们对外部透明,即运行时框架.

app/

src/main/java/

src/test/java/

AndroidManifest.xml

... ...

app-test/

src/main/java

AndroidManifest.xml

... ...

在Android测试项目中编写POJO junit测试是绝对正常的,但是,如果您仍然希望能够针对混淆的apk运行测试项目,则需要正确调整应用程序项目的proguard.cfg并在混淆期间保留POJO类.为了适应测试代码.

android 测试工程 关闭混淆,混淆Android Test项目以及项目(在发布和混淆版本上运行测试)...相关推荐

  1. android 测试工程 关闭混淆,如何对混淆的Android应用进行渗透测试?

    原标题:如何对混淆的Android应用进行渗透测试? 自动工具 在手工开始工作之前,有几个反编译工具和网站可以在很多混淆场景提供帮助.APK Deguard是其中之一.它最大只支持16Mb的APK文件 ...

  2. Android测试能不能用monk,Android自动化测试-Monkey和MonkeyRunner

    Android自动化测试入门-Monkey和MonkeyRunner 测试是应用开发中不可或缺的一部分.测试所做的工作,虽然不能让用户看到效果,但是想要保证一个有一定用户基础的应用的稳定性,测试是必须 ...

  3. android测试篇(四)android专项测试之压力测试

    前言 抄袭文章来源:Android App专项测试-压力测试篇 小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过And ...

  4. Android测试能不能用monk,Android之monkey Test

    一.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...

  5. Android测试(二):Android测试基础

    原文地址:https://developer.android.com/training/testing/fundamentals.html 用户在不同的级别上与你的应用产生交互.从按下按钮到将信息下载 ...

  6. android导入工程以后报错,Android 导入v7包常见错误,以及项目引用v7包错误解决...

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...

  7. android sutdio工程名修改,在Android Studio上更改项目名称

    AndroidApp("G:...\Android\AndroidApp). 在第二个矩形中,我要将其更改为: AndroidApp[AndroidApp-AndroidApp] 编辑:这是 ...

  8. android 测试屏幕触点,如何检测Android Studio中的后台服务是否触摸了屏幕?

    我正在研究 android studio上的一个项目.我需要在后台服务中检测屏幕是否被触摸(并弹出一条消息).但是,我在后台服务中检测屏幕是否被触摸有问题而不影响使用智能手机的用户. 当我说" ...

  9. android 6.0关闭开机启动器,Android实现开机自启动及开机自启动失败原因

    1.开机自启动实现代码 BroadcastReceiver开机自启动实现,MainActivity.class为自启动显示的页面. public class BootBroadcastReceiver ...

最新文章

  1. 美国国家科学院发布:材料有哪些研究前沿?
  2. Leetcode PHP题解--D25 500. Keyboard Row
  3. codevs 1507 酒厂选址
  4. C# 有什么惊艳到你的地方?
  5. 谷歌浏览器如何设置flash访问权限
  6. 检查电脑是否被安装木马三个小命令
  7. Mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
  8. Ubuntu 14.04 安装 MongoDB
  9. 2018年计算机二级知识点,2018年计算机二级考试公共基础知识点:栈及其基本运算...
  10. R语言中按某个符号来分割字符串
  11. .NET四种注释规范
  12. WeX5和BeX5的区别
  13. 快速找回Edge浏览器书签的方法
  14. 谷歌,Google,Chrome,检查工具栏常用功能介绍
  15. rⅰd的意思_自动挡车型上的P、R、N、D、S、L是什么意思?你懂吗?
  16. php 判断时间是星期几,通过PHP的date()函数判断今天是星期几
  17. 海盗湾(The Pirate Bay)的战争——每一名技术人员都应该思考的问题
  18. 神奇的Navigator对象
  19. 基于3D Frangi滤波的血管强化方法(附代码python)
  20. C++函数声明和函数定义

热门文章

  1. POI批量导入及一键上传ocupload和pinyin4j组件的使用案例
  2. centos7中安装JDK8-281版本
  3. Python 之字符串常用方法
  4. java中的关键字:this与super 大详解
  5. linux mysql进阶_mysql进阶学习二之搭建主从
  6. php curl获取响应,php – cUrl – 获取html响应正文
  7. 物联网时代下的MCU,是市场倒逼还是彼此互相成就
  8. php千人千面框架,千人千面的设计才是最好设计!安卓 UI 可以如此自由
  9. oracle备库重启后失去连接,关于dataguard备库宕机后重启后的问题
  10. oracle 12c dg新特性,oracle 12c:新特性-网格(Grid)基础架构的增强