加壳思路:
将源apk经过native方法加密后与壳dex合并
所遇到的坑:
1,首先了解Android动态加载机制
classloader的双亲委托模式,application创建、初始化过程,attachBaseContext(),onCreate()方法执行的节点
如何使用DexClassLoader将加载的activity,放入其正常的生命周期内?
如何切换创建执行原application的生命周期?
2,了解Java反射
3,注意修改AndroidManifest.xml文件,将源activity在壳的配置文件中声明;添加meta-data标签
4,将源activity的配置文件拷贝到壳apk的对应位置,(res/)
加壳后apk无法运行:
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
原因:应该是壳apk 和 源apk引用的类库不一样,导致类实现出现问题;然后重新定义了源apk和壳apk的activity,使其统一继承于Activity超类。