Android 使用来自另一个APK的Java类

Android 使用来自另一个APK的Java类,android,Android,出于许可证的考虑,我想将我的Android应用程序分发为两个独立的APK。第一个APK将包含开源库,第二个APK将包含专有代码。从技术上讲,是否可以在第二个APK中直接调用第一个APK中的类,而不使用AIDL?最后,我按照以下方式进行了操作: 我创建了一个新模块,它构建了一个库。在这个模块中,我添加了两个gradle任务,它们首先构建一个.jar,然后构建一个.dex task-makeJar(类型:Copy){ from('build/intermediates/bundles/releas

出于许可证的考虑,我想将我的Android应用程序分发为两个独立的APK。第一个APK将包含开源库,第二个APK将包含专有代码。从技术上讲,是否可以在第二个APK中直接调用第一个APK中的类,而不使用AIDL?

最后,我按照以下方式进行了操作:

  • 我创建了一个新模块,它构建了一个库。在这个模块中,我添加了两个gradle任务,它们首先构建一个.jar,然后构建一个.dex
  • task-makeJar(类型:Copy){
    from('build/intermediates/bundles/release/'))
    进入('build/outputs/'))
    包括('classes.jar')
    重命名('classes.jar'、'my.jar')
    }
    任务makeDex(类型:Exec){
    workingDir“${projectDir}”
    命令行android.sdkDirectory.path+/build tools/27.0.3/dx.bat','-dex','-output=build/outputs/my.dex.jar',build/outputs/my.jar'
    
    }
    如果您要求,您的第一个APK可以拥有第二个APK通过AIDL访问的服务。这要求用户同时安装这两个应用程序,因此您需要处理用户安装了其中一个而未安装另一个的情况。此外,如果您通过Play Store或其他公共渠道分发,两个APK都应该具有内在的独立价值。否则,你很可能会从那些对“请安装其他应用程序”步骤感到沮丧的用户那里得到不好的评价。。。有可能有直接调用、继承等吗?您特别声明“使用AIDL”。事实上。。。这是我描述中的一个错误,我写的与我想问的正好相反:(现在,我正在探索如何动态加载另一个apk中包含的dex文件。