精华内容
下载资源
问答
  • 最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐吧,幸得群内大神思路...---------------将robotium脚本封装为APK,使用按钮控制用例运行覆盖程度,测试结果以简

    原文:http://blog.sina.com.cn/s/blog_5b478f870102v9my.html


    最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐吧,幸得群内大神思路指点,就此引申,终于把这个功能得以实现

    ---------------将robotium脚本封装为APK,使用按钮控制用例运行覆盖程度,测试结果以简单的xml文件输入到手机SD卡目录下----------------------

    废话不多说,转正题:

    一、首先明确一点,这篇文章,是在你所编写的robotium脚本运行无异常的前提下实施

    二、阐明思路:

       1.我们需要一个运行良好的,逻辑正常的robotium工程

       2.我们需要一个可以将脚本用例运行结果保存至本地的方法

       3.我们需要一个activity,一个按钮,以及一个按钮点击事件去运行我们的robotium脚本

     

    三、先介绍脚本用例运行结果的功能,我们都知道robotium用例的运行是依赖junit的Instrumentation的,所以,关于结果的输出,需要我们重写InstrumentationTestRunner类

     

    package baih;

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;

    import org.xmlpull.v1.XmlPullParserFactory;
    import org.xmlpull.v1.XmlSerializer;

    import android.content.Context;
    import android.os.Bundle;
    import android.os.Environment;


    public class InstrumentationTestRunner extends android.test.InstrumentationTestRunner {
        private Writer mWriter;
        private XmlSerializer mTestSuiteSerializer;
        private long mTestStarted;
        private static final String JUNIT_XML_FILE = "TEST-all.xml";
       
       
        @Override
        public void onStart() {
            try{
                File fileRobo = new File(getTestResultDir(getTargetContext()));
                if(!fileRobo.exists()){
                    fileRobo.mkdir();
                }
                if(isSDCardAvaliable()){   
                    File resultFile = new File(getTestResultDir(getTargetContext()),JUNIT_XML_FILE);
                    startJUnitOutput(new FileWriter(resultFile));
                }else{
                    startJUnitOutput(new FileWriter(new File(getTargetContext().getFilesDir(), JUNIT_XML_FILE)));
                }           
            }
            catch(IOException e){
                throw new RuntimeException(e);
            }
            super.onStart();
        }

        void startJUnitOutput(Writer writer) {
            try {
                mWriter = writer;
                mTestSuiteSerializer = newSerializer(mWriter);
                mTestSuiteSerializer.startDocument(null, null);
                mTestSuiteSerializer.startTag(null, "testsuites");
                mTestSuiteSerializer.startTag(null, "testsuite");
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
       
       
        private boolean isSDCardAvaliable(){
            return Environment.getExternalStorageState()
                        .equals(Environment.MEDIA_MOUNTED);   
        }
       
       
        private String getTestResultDir(Context context){
            String packageName = "/" + "robotium";
            String filepath = context.getCacheDir().getPath() + packageName;
           
            if(android.os.Build.VERSION.SDK_INT < 8){
                if(isSDCardAvaliable()){
                    filepath = Environment.getExternalStorageDirectory().getAbsolutePath()+ packageName;
                }
            }else{
                if(isSDCardAvaliable()){
                    filepath = Environment.getExternalStorageDirectory().getAbsolutePath()+ packageName;
              

    展开全文
  • 公司项目Apk Andorid Studio bulid -> Analyze Apk : ...自己写了个Shell 脚本 ,查看 有多少种 各多少张 图片资源 #!/bin/sh function getImages(){ echo $1"\n" for file in $1/* do ...

    公司项目Apk

    Andorid Studio  bulid -> Analyze Apk :

    可见资源文件占了>80%的容量。

     

    自己写了个Shell 脚本 ,查看 有多少种 各多少张 图片资源

    #!/bin/sh  
    function getImages(){
     
      echo $1"\n"
      
      for file in $1/*
    
        do
    
        if test -f $file 
    
        then
    
    	if [ "${file##*.}"x = "png"x ];then
         	   
    	  	 arrPng=(${arrPng[*]} $file)
    		 #echo $file"				PNG Nums = "${#arrPng[@]}
    	fi
    
    	if [ "${file##*.}"x = "gif"x ];then
         	   
    	 	 arrGif=(${arrGif[*]} $file)
    		 #echo $file"				GIF Nums = "${#arrGif[@]}
    		
            fi
    
    	if [ "${file##*.}"x = "jpg"x ] || [ "${file##*.}"x = "jpeg"x ];then
         	   
    	 	 arrJpg=(${arrJpg[*]} $file)
    		 #echo $file"				JPG/JPEG Nums = "${#arrJpg[@]}
    		
            fi
    
        else
    
            getImages $file
        fi
    
        done
    
    }
    getImages /Users/eminem/Desktop/AndroidApp/libratone_android/app/src/main/res   
    echo "PNG Nums = "${#arrPng[@]}"\n""GIF Nums = "${#arrGif[@]}"\n""JPG/JPEG Nums = "${#arrJpg[@]}"\n"
    #echo ${arrPng[@]}

     

    1.清理不用的 资源

    •    Android studio  Analyze  lint 

     

     

    • Gradle 中 shrinkResources

     

    android {
    
    ...
    
    buildTypes {
    
    release {
    
        minifyEnabled true
    
        shrinkResources true
    
    }
    
    }

     

    清除无用的资源后,再打包看看效果:

     

    包体积  整体  缩减了  20M !!!

     

    2. 所有png / gif / jpg / jpeg 转为webp

     

    A new image format for the Web

    https://developers.google.com/speed/webp/download

    open .bash_profile

    export PATH=${PATH}:/libwebp-1.0.3-mac-10.14/bin: 

    将WebP的 命令加入环境变量

    完整代码如下: (遍历 res/ 下所有的文件夹和文件   PNG  JPG GIF  转换成 WebP  ,并删除源文件,保留.9的PNG图片)

    #!/bin/sh  
    function getImages(){
     
      echo $1"\n"
      
      for file in $1/*
    
        do
    
        if test -f $file 
    
        then
    
     	b=${file##*/}
    
        	c=${b%.*}
    
      	if [[ $c == *\.9 ]];then 
    
     	 	arr9=(${arr9[*]} $file)
    		continue
        	fi
    
    	if [ "${file##*.}"x = "png"x ];then
         	   
    	  	 arrPng=(${arrPng[*]} $file)
    
    		 cwebp -q 75 $file -o ${file%.*}.webp
    
    		 rm $file
    
    		 #echo $file"				PNG Nums = "${#arrPng[@]}
    	fi
    
    	if [ "${file##*.}"x = "gif"x ];then
         	   
    	 	 arrGif=(${arrGif[*]} $file)
    
    		 gif2webp $file -o ${file%.*}.webp -q 75 -lossy -m 6
    
    		 rm $file
    		
    		 #echo $file"				GIF Nums = "${#arrGif[@]}
    		
            fi
    
    	if [ "${file##*.}"x = "jpg"x ] || [ "${file##*.}"x = "jpeg"x ];then
         	   
    	 	 arrJpg=(${arrJpg[*]} $file)
     		 cwebp -q 75 $file -o ${file%.*}.webp
    		 rm $file
    		 #echo $file"				JPG/JPEG Nums = "${#arrJpg[@]}
    		
            fi
    
        else
    
            getImages $file
        fi
    
        done
    
    }
    getImages /Users/eminem/Desktop/AndroidApp/libratone_android/app/src/main/res   
    
    echo "PNG          Nums = "${#arrPng[@]}"\n""GIF          Nums = "${#arrGif[@]}"\n""JPG/JPEG     Nums = "${#arrJpg[@]}"\n"".9           Nums = "${#arr9[@]}"\n"  
    
    
     
    
    

     

    所有图片资源转为WebP后,再打包看看效果:

     

    牛逼了   直接到 38M  ,干掉了 小60M  !!!

     

    PS:

    1.gradle shrinkResources true  因为兼容性原因 可能会报错  请手动 Lint 清除无用文件

    2.Lint去除无用资源  自己要慎重   我这里更多是去除了 无用资源   ,至于 字符串  xml  大家可以考虑留下备用 

    3.Fresco  支持  webp  图片和动画

    implementation 'com.facebook.fresco:animated-webp:2.0.0'
    implementation 'com.facebook.fresco:webpsupport:2.0.0'
    implementation 'com.facebook.fresco:fresco:2.0.0'

     

    展开全文
  • Frida hook Auto.js apk逆向提取脚本文件 准备工具 Python环境 、Frida 、 auto.js打包以后的apk、 jadx 首先使用jadx反编译 auto的apk文件, 寻找解密方法位置 直接hook解密的地方,取解完密的内容, 然后成...

    Frida hook Auto.js apk逆向提取脚本文件

    准备工具

    Python环境 、Frida 、 auto.js打包以后的apk、 jadx

    1. 首先使用jadx反编译 auto的apk文件, 寻找解密方法位置
      在这里插入图片描述
      在这里插入图片描述
    2. 直接hook解密的地方,取解完密的内容, 然后转成string输出
    script_js = """
            console.log("start");
            var string = Java.use('java.lang.String');
            Java.perform(function(){
                var k = Java.use("com.stardust.autojs.engine.encryption.ScriptEncryption"); //hook 类名
                console.log("Hook start");
                k.decrypt.implementation = function(a,b,c){ //decrypt 方法名
                	var abc = this.decrypt(a,b,c)  // 调用解密方法
                	var ddc = string.$new(abc, 'utf-8')  // 转string
                	send(ddc.toString());   // 输出
                	
                	return abc
                }
            });
            """
    

    在这里插入图片描述

    展开全文
  • Date:20170928 ...为了以后兼容mac发布,选择了shell脚本方式. 1.shell输出窗口乱码,需要将编码调整为utf8 2.提示下面的这个错误,需要转换为utf8无Bom格式 bash: #!/bin/sh: No such file or directo
    Date:20170928
    为了以后兼容mac发布,选择了shell脚本方式.
    1.shell输出窗口乱码,需要将编码调整为utf8
    2.提示下面的这个错误,需要转换为utf8无Bom格式
    bash: #!/bin/sh: No such file or directory
    3.网上的路径设置都有点问题,下面这种是正确的:
    最简单的是建立一个txt,复制粘贴然后后缀名改成.sh(对应调用的C#代码参照github源码)
    #!/bin/sh
    #可以直接运行这面这行
    #"C:\Program Files\Unity\Editor\Unity.exe" -quit -batchmode -executeMethod TestBuild.Build
    #UNITY程序的路径#
    UNITY_PATH="C:\Program Files\Unity\Editor\Unity.exe"
    #游戏程序路径#
    #PROJECT_PATH="D:\MyGit\null\unity"
    echo "准备打包"
    read -p "回车继续"
    "$UNITY_PATH" -quit -batchmode -executeMethod TestBuild.Build
    echo "Apk生成完毕"
    read -p "Finish"

    本地shell处理完成,下面和Jenkins链接到一起,
    在Jenkins中,添加execute shell是不执行的,但是添加execute windows batch command在控制台能看到正常执行
    本地写了一个.sh脚本和一个.bat批处理,通过Jenkins能顺利执行.bat,但是.sh却不可以.
    在stackoverflow查到,需要额外安装shell才可以使用.
    然后在Jenkins的插件系统中下载了power shell,然后插件管理-高级-上传插件来安装插件.
    安装插件后在构建中选择windows powershell,继续随便执行一个shell命令.
    这次在控制台看到正确执行.
    更简单的是在Jenkins插件系统中直接下载unity插件,然后在global tool configuration中配置unity的路径

    然后在构建中:
    点击构建,成功发布出apk安装包,后面传入参数,版本号..都是时间的问题了
    展开全文
  • 1.下载apktool(反编译资源文件)、dex2jar(dexjar)、jdgui(查看class文件) 注:我已上传到了附件里 2.将shell脚本”apktool”和”apktool.jar”放到 “/usr/local/bin”目录下  3.增加这两个文件可执行权限...
  • Python脚本批量转换Webp为png或jpg

    千次阅读 2019-07-08 21:11:16
    话说,Android开发的时,很多的应用已经将png或jpg改为了Webp格式,一个目的是为了减少包的体积,我觉得还有一个好处是资源包的安全考虑,不过我如果要反编译人家的apk,并拿到图片资源就比较恶心。这不,我今天想仿...
  • unity游戏开发之打包apk谷歌上架报错总结

    万次阅读 多人点赞 2021-04-07 09:22:28
    实际打包出来的apk,却能旋转,在入口脚本处添加代码如下: @Override public void setRequestedOrientation(int requestedOrientation){ return; } 找不到依赖库报错 报错如下: 解决方式:选中lib下面的...
  • 话说,Android开发的时,很多的应用已经将png或jpg改为了Webp格式,一个目的是为了减少包的体积,我觉得还有一个好处是资源包的安全考虑,不过我如果要反编译人家的apk,并拿到图片资源就比较恶心。这不,我今天想仿...
  • Bash玩转脚本4之搞一套完整的Android反编译与分包工具 主讲Android反编译签名生成多个包的思路和实现: 实现从拿到一个apk安装包,把这个包反编译生成n个包,标示每个包的信息,每个包彼此不能覆盖安装。
  • SoloPi(1).apk

    2020-05-22 08:30:58
    soloπ.apk安卓自动化神器是一款基于安卓的手机端自动化工具,支持录制脚本,脚本转appium,macaca,手机端性能测试,一机多控等功能
  • ndk编译出来的共享库,eclipse会自动打包到apk中,而编译出来的可执行文件则不会。 要想可执行文件自动被打包到apk中,可以把文件名改成libxxx.so的形式,伪装成so,...写个脚本吧,又有arm, armv7, x86的麻烦事!...
  • 很多时候我们并不希望由360手机助手,91手机助手这些软件在我们的手机上安装一个市场后才能安装软件,所以我做了这个软件,这其实是一个bat脚本,用脚本转exe程序生成了exe文件,并且附加了图标,还有安装apk文件所...
  • 自https://testerhome.com/topics/8618Android 近期,macaca团队升级了macaca-android2.0.2和app-inspector1.2.28 ,导致升级后各种问题详见https://github.com/alibaba/macaca/issues 现在我来总结整理下,...
  • Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本。而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在需要自己搭建Android...
  • 接着上一篇,我们开始聊聊APPIUM的框架和运行模式。废话不多说直接上图。...3.【Appium服务端】将脚本中的代码命令转换成手机模拟器所能识别的命令通过【ADB】发送给【模拟器】,从而控制被测试的应用软件。...
  • 脚本是针对于android在线更新的...此脚本用于进行自动编译用户需要的APK安装包,使用时候,请将签名用的*.keystore放在和build.xml同一目录,并命名为android.keystore,(如想更改,请在build.xml 中的jarsigner ...
  • 一些APK尤其是Android恶意代码会将自身的一些重要的字符串进行加密,加大逆向分析的难度,这类字符串往往数量比较大,很难一个一个进行处理。本文将介绍一种方法来解密这种字符串,并将解密的字符串应用于反编译器中...
  • 文章目录0x01 测试环境0x02 使用apktool2.1 下载安装apktool2.2.1 保存脚本2.2.2 下载新版工具2.2.3.拖放文件2.2 使用apktool反编译apk0x03 dex2jar转换dex0x04 使用jd-gui查看源码0x05 结语 0x01 测试环境 以下俗称...
  • Tasker Pro 5.7.0.apk

    2019-04-18 16:32:47
    * MISC :(广播)动作意图,组件意图,获取位置,GPS状态(或Cyanogen / submod),运行(ASE)脚本,说,对文件,关闭,搜索,设置剪贴板,重新启动(仅限root),设置CPU( root only)设置时区 *网络:飞行模式...
  • 在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了; 人家sdk升级,我们的脚本也要跟上趟,修改一下喽。 上网一查,大家的文章还停留在我去年的脚本程度,算了,自己动手查阅了...
  • 附件为脚本代码压缩包格式(zip),由于不能上传zip包因此需要转换文件后缀。 解压文件后需要修改resign.properties文件中数据,只要托要签名的apk到resign.bat即可。对了还有一个前提是删除apk文件中的META-INF目录。...
  • RobotFrameWork+APPIUM实现对安卓APK的自动化测试 1.首先自动化脚本通过RobotFrameWork将命令传递给Appium的客户端; 2.然后【Appium的客户端】将接受到的命令发送给【Appium的服务端】; 3.【Appium服务端】将...
  • 在Eclipse下编译Android原生APK方法

    千次阅读 2015-03-16 00:07:23
     glee Alex 的专栏文章: http://blog.csdn.net/qq690197664/article/details/18223495 目标: 1. 在eclipse环境下,编译Android原生的apk 2. 在eclipse环境下,做system系统签名的方法。(有...
  • SuperSU Pro 2.82 SR5.apk

    2019-04-11 17:06:00
    - 备份脚本以生存CyanogenMod nightlies - 图标可从5个选项中选择+隐形 - 主题可从4个选项中选择 -从拨号器启动:*#*#1234#*#*或*#*#7873778#*#*(*#*#SUPERSU#*#*) 注意:并非所有手机都采用这两种...
  • 1◊备份和验证应用程序apk /数据(多个版本),短信和呼叫日志 ◊系统应用程序卸载程序和更新清理程序 ◊分享和备份应用程序到电子邮件,DropBox,GDrive等... ◊将任何应用程序移动到用户,系统,SD或link2SD◊ ...
  • 使用Android studio 逆向代码时,市场遇到变量是一个数组,其实数组中内容包含字符串,但是Android studio...就写了个脚本,把数组复制出来然后提取处之后,自己转换一下吧。 复制出来的数组是这样的: 0 = -91...
  • 脚本是基于 Windows 的批处理写的,用类Unix操作系统的伙伴们很容易就可以把他们成 Bash 的脚本,要记得把 .bat 的内容替换哦,斑驳 Arch 里面装的 Android-SDK 里面的官方脚本都是不带 .sh 后缀名的,请注意区分 ...
  • Tasker_Pro_v5.9.2_beta3.apk

    2020-02-14 14:48:53
    * MISC :(广播)动作意图,组件意图,获取位置,GPS状态(或Cyanogen / submod),运行(ASE)脚本,说,说文件,关闭,搜索,设置剪贴板,重新引导(仅root),设置CPU(仅根用户)设置时区 *网络:飞行模式(或...

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

脚本转apk