开发Android 9.0 eSIM LPA(系统应用)

时间:2019-03-08 09:48:33

标签: android

尝试使用新的Pie API为eSIM开发android LPA系统应用程序。

医生说要扩展抽象EuiccService类。但是此类不在官方的SDK中,并且文档中的链接仅指向android源仓库中的相应文件。

我尝试使用此文件/类作为依赖项,但它引用了其他内部android类/注释并导致构建/ IDE错误。

有人知道如何使用吗?

我真的必须提取android src代码并以某种方式引用所需的类吗?

编辑:我想我已经解决了它,找到了一些潜在的解决方案,但是它们有点麻烦。从此处使用了android.jar:https://github.com/anggrayudi/android-hidden-api(包含带有隐藏API和内部资源的修改后的android.jar)。当我替换了整个文件并导致奇怪的构建错误时,它不起作用,但是我手动将android \ service \ euicc \文件夹转移到了android-28 sdk的原始android.jar中,并且它运行良好(类可用并且apk可以构建没有问题)。无需浪费时间来构建和构建AOSP。

编辑#2 :显然不能完全修复atm。 android gradle插件(至少3.2.x-3.3.x)存在问题,其中在完全同步期间,某些构建任务会从android.jar生成模拟类,并且如果对其进行了修改,则处理失败(讨论在这里:https://github.com/anggrayudi/android-hidden-api/issues/46)。错误看起来像这样:

使用变换MockableJarTransform 未能将文件'android.jar'转换为匹配属性{artifactType = android-mockable-jar,returnDefaultValues = false}

有一个解决方法,尽管不方便:
当您需要项目的完全同步时,将android.jar替换为原始版本,运行同步,恢复修改后的android.jar,IDE现在将运行索引,并且类将在构建工作之前再次可用,直到下一次完全同步。 > 如果/当它是固定的或找到新的解决方案时,将更新此帖子。

EDIT#3:这可能是EuiccService案例的最终解决方案(结果非常明显):
无需将android / service / euicc文件夹添加到android.jar中,只需将其放在单独的库中并将其添加为compileOnly依赖项即可。由于这些类不在SDK中,因此该lib不会引起冲突(如果您需要使用已修改的框架或访问已存在的类中的隐藏API,将是这种情况。)

1 个答案:

答案 0 :(得分:0)

如果您要创建系统APP,则可以通过以下几种方式进行操作:

  • 您可以通过引用调用 SystemAPI 的一部分(例如,一种方法)。
  • 您可以将应用程序作为AOSP项目的一部分(下载AOSP代码,并将您的应用程序作为 packages / apps / 的一部分)
  • >