我想动态加载一个加密的 jar 文件。我已经动态加载了一个 Dex 文件,它工作正常。我在模拟器和我的安卓设备上都试过了。现在我想加载加密文件。据我了解,我必须自定义类加载器,以便它可以在执行文件之前先动态解密文件。
如果有人可以指导我如何实际实现这一点,我会很高兴。我有一个想法,但我不是经验丰富的程序员。
提前致谢
公共类 MainActivity 扩展 Activity {
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
final String libPath = Environment.getExternalStorageDirectory() + "/shoaib.jar";
final File tmpDir = getDir("dex", 0);
final DexClassLoader classloader = new DexClassLoader(libPath, tmpDir.getAbsolutePath(), null, this.getClass().getClassLoader());
final Class<Object> classToLoad = (Class<Object>) classloader.loadClass("com.example.custom.MyClass");
final Object myInstance = classToLoad.newInstance();
final Method doSomething = classToLoad.getMethod("doSomething");
doSomething.invoke(myInstance);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}