使用另一个APK的Java类

时间:2018-02-26 14:20:30

标签: android

由于许可考虑,我想将我的Android应用分发为2个独立的APK。第一个APK包含开源库,第二个包含prorietary代码。在技​​术上是否可以在第二个APK中直接调用第一个APK中的类,而不使用AIDL?

1 个答案:

答案 0 :(得分:0)

最后,我成功完成了以下操作:

  1. 我创建了一个新模块,用于构建库。在这个模块中,我添加了2个gradle任务,首先构建一个.jar,然后构建一个.dex
  2. 
    
    task makeJar(type: Copy) {
        from('build/intermediates/bundles/release/')
        into('build/outputs/')
        include('classes.jar')
        rename('classes.jar', 'my.jar')
    }
    task makeDex(type: Exec) {
        workingDir "${projectDir}"
        commandLine android.sdkDirectory.path + '/build-tools/27.0.3/dx.bat', '--dex', '--output=build/outputs/my.dex.jar', 'build/outputs/my.jar'
    }
    
    
    

    1. 我创建了一个新的应用程序,其中包含允许下载文件内容的AIDL服务my.dex.jar

    2. 在我原来的应用程序中,我下载了my.dex.jar文件,并将dex加载到内存中。在我的原文中,我对文件my.jar使用了依赖,并且我指定它不应该插入APK:

    3. 
      
      dependencies {
         provided files('../my_library/build/outputs/my.jar')
      }