Android: how to share code between projects signed with the same certificate

前端 未结 2 1782
迷失自我
迷失自我 2020-12-24 04:38

In Android documentation concerning code signing we can read: \"By signing multiple applications with the same certificate and using signature-based permissions checks,

相关标签:
2条回答
  • 2020-12-24 05:14

    Use Context.createPackageContext() to instantiate a package for another .apk you are interested in. If it is signed with the same cert as yours, AND you are both using the same shared user ID, then you can use the flag to load its code into your process, allowing you to get the ClassLoader from the context and instantiate whatever classes you want.

    Otherwise, if they are not signed the same and explicitly using the same shared used ID, you can only load its resources.

    Please note that you can not change the shared user ID for an application (to something else or moving between having and not having a shared user ID) once that application is on market.

    0 讨论(0)
  • 2020-12-24 05:18

    Say you want to call a public function of the dynamically loaded class. Use the following code snippet:

    Context friendContext = this.createPackageContext("packageName", Context.CONTEXT_INCLUDE_CODE);
    Class friendClass = friendContext.getClassLoader().loadClass("packageName.className");
    Class noparams[] = {}; //say the function (functionName) required no inputs
    friendClass.getMethod("functionName", noparams).invoke(friendClass.newInstance(), null);
    
    0 讨论(0)
提交回复
热议问题