AndFixDemo
- 打第一个需要修复的版本的时候,需要你自己保存生成的mapping.txt文件,一般生成的mapping文件是在
AndfixTestDemo/app/build/outputs/mapping/release
文件夹 然后做你自己的修改,修改button点击事件中的代码,可以修改toast的内容,或者actionbar的标题,比如:
getSupportActionBar().setTitle("22222");
Toast.makeText(MainActivity.this,"yes you make it 2222222,current sdk version is "+Build.VERSION.SDK_INT,Toast.LENGTH_SHORT).show();
第二个版本的时候,需要在progurd-rule.pro文件中,加入一行,后面的路径换成你第一步保存的路径:然后打包生成新版本的apk文件
-applymapping /Users/tang/Code/apkpatch/mapping.txt
apkpatch工具生成patch文件:
语法:apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***> -a,--alias <alias> keystore entry alias. -e,--epassword <***> keystore entry password. -f,--from <loc> new Apk file path. -k,--keystore <loc> keystore path. -n,--name <name> patch name. -o,--out <dir> output dir. -p,--kpassword <***> keystore password. -t,--to <loc> old Apk file path.
这是我的:
./apkpatch.sh -f /Users/tang/Code/apkpatch/未命名文件夹/app-release_new.apk -t /Users/tang/Code/apkpatch/未命名文件夹/app-release_old.apk -o /Users/tang/Code/apkpatch/out/ -k /Users/tang/Documents/PhoneSecret/android/SDPApp_mvp/GradleRelease/keyStore/xxxxKey.jks -p xxxxx -a xxxx -e xxxxx
文件生成后重命名为:out.apatch
先安装第一个版本的apk,点击button,观察效果,这时候是第一版的效果。
之后push补丁文件到
Environment.getExternalStorageDirectory().getAbsolutePath()
返回的路径,安卓版本不同返回的路径也不同。
Android6.0上的路径是:/storage/emulated/0/
所以push命令如同:
adb push /Users/tang/Code/apkpatch/out/out.apatch storage/emulated/0/
点击button,观察效果,toast已经改变,退出后再进入Actionbar也已经改变。
- Andfix目前很不稳定,坑很多,并且是不确定的坑,慎入。。