开发者控制台

亚马逊应用商店Easy Port

亚马逊应用商店Easy Port

专为Android操作系统构建的应用可能包含不兼容Fire OS的SDK。亚马逊应用商店Easy Port能够在字节码级别使用兼容Fire OS的同等SDK构建应用,从而最大限度减少代码重构需求,帮助您处理兼容性问题。如果您使用Android Gradle插件 (AGP) 版本7.4.0或更高版本来构建基于Java或Kotlin的Android应用,并使用Easy Port支持的SDK,则可以使用Easy Port来移植您的应用。下表列出了亚马逊应用商店Easy Port当前支持的SDK。

亚马逊应用商店Easy Port支持的SDK
SDK类别 Easy Port支持的SDK
仅支持列出的版本
与Fire OS兼容的SDK
Easy Port中使用的同等SDK
付款 适用于Java和Kotlin的Google Play结算库版本5.2.1 亚马逊应用商店计费兼容性SDK版本4.1.0

使用亚马逊应用商店Easy Port构建Android应用

下图显示了Android应用编译流程的简化表示。

参见文字描述。
使用AGP和亚马逊应用商店Easy Port构建Android应用的流程

要使用亚马逊应用商店Easy Port进行构建,必须将您的项目与Easy Port Gradle插件和Easy Port切面文件集成。该插件的主要功能是与AGP构建过程集成,并使用AspectJ编译器 (AJC) 执行字节码转换。Easy Port切面文件可以控制字节码转换,并识别对模块代码库中不兼容Fire OS的SDK的调用。然后,切面文件会指示AJC拦截此类调用,并使用兼容Fire OS的SDK执行所请求的操作。为确保最大限度减少应用代码库中的更改,Easy Port切面文件还会在不兼容Fire OS的SDK和兼容Fire OS的SDK之间进行请求和响应的转换。

开始使用亚马逊应用商店Easy Port

下图显示了与亚马逊应用商店Easy Port集成的流程。

参见文字描述。

以下部分介绍了Easy Port Gradle插件和Easy Port切面。

亚马逊应用商店Easy Port Gradle插件

亚马逊应用商店Easy Port Gradle插件支持在Android构建过程中使用AGP进行字节码转换。将Easy Port插件集成到您的项目中,配置该插件,然后构建您的应用。

要求

  • AGP 7.4.0或更高版本(AGP 7.4.0需要Gradle 8.0或更高版本)

应用并配置亚马逊应用商店Easy Port插件

请按照以下步骤配置亚马逊应用商店Easy Port插件。

  1. 在根级别settings.gradle.ktssettings.gradle文件的顶部,将mavenCentral() 添加到pluginManagement下的存储库块中。

     

    复制到剪贴板。

      pluginManagement {
        repositories {
            google()
            mavenCentral()
        }
      }
    

     

    复制到剪贴板。

      pluginManagement {
        repositories {
            google()
            mavenCentral()
        }
      }
    
  2. 如果模块集成的SDK版本不兼容Fire OS且受到亚马逊应用商店Easy Port切面支持,请将Easy Port插件应用于该模块,如以下代码所示。

     

    复制到剪贴板。

      plugins {
      
        id("com.amazon.device.easyport") version("1.0.0")
      
      }
    

     

    复制到剪贴板。

      plugins {
      
        id 'com.amazon.device.easyport' version '1.0.0'
      
      }
    
  3. 更新模块的build.gradle.ktsbuild.gradle文件,以支持Easy Port的产品变种。Easy Port变种必须以您可能拥有的任何特定于Google的变种为基础构建。有关如何配置产品变种的详细信息,请参阅Android文档中的配置产品变种。以下代码显示了示例配置。

     

    复制到剪贴板。

      android {
          ...
          flavorDimensions += "build"
          productFlavors {
              create("vanilla") {
                  dimension = "build"
              }
              create("easyPort") {
                  dimension = "build"
              }
          }
      }
    

     

    复制到剪贴板。

      android {
          ...
          flavorDimensions  "build"
          productFlavors {
              vanilla {
                  dimension 'build'
              }
              easyPort {
                  dimension 'build'
              }
          }
      }
    
  4. 将AspectJRT依赖项添加到模块的Gradle文件中,如以下代码所示。

     

    复制到剪贴板。

      easyPortImplementation("org.aspectj:aspectjrt:1.9.7")
    

     

    复制到剪贴板。

      easyPortImplementation 'org.aspectj:aspectjrt:1.9.7'
    
  5. 将以下Easy Port配置添加到模块的build.gradle.ktsbuild.gradle文件中。

     

    复制到剪贴板。

      easyPort { variantFilter = listOf("easyPort")}
    

     

    复制到剪贴板。

      easyPort { variantFilter = ["easyPort"]}
    
  6. 下载并应用相关切面

构建应用

应用并配置亚马逊应用商店Easy Port插件和切面后,按照以下步骤来构建您的应用。

  1. 选择模块的Easy Port变种,然后构建兼容Fire OS的应用。
  2. 如果构建成功但生成了警告,请解决以AspectWeaverTask名称开头的任务生成的警告。可以在构建日志中查找Aspect Compilation Warnings(切面编译警告),获取警告列表。通过修改您的代码以使其与操作系统无关,或者在应用代码库中添加特定于操作系统的检查,可以解决这些警告。可以使用SuppressEasyPortValidation注解来忽略这些警告。
  3. 解决或忽略所有警告后,重新构建您的应用。
  4. 测试已构建应用的所有功能。

亚马逊应用商店Easy Port切面

亚马逊应用商店Easy Port切面规定了要拦截哪些不兼容Fire OS的API,以及在拦截时要采取哪些操作。这些切面针对不兼容Fire OS的特定SDK版本,将该SDK的调用替换为来自兼容Fire OS的特定SDK版本的调用。有关如何添加切面的详细说明,请参考以下资源。

亚马逊应用商店Easy Port常见问题解答 (FAQ)

以下是关于亚马逊应用商店Easy Port的常见问题解答 (FAQ)。

问: Easy Port如何帮助我将自己的Android应用移植到亚马逊应用商店?
亚马逊应用商店Easy Port通过为您处理兼容性问题来帮助您移植自己的应用。如果您的应用使用不兼容Fire OS的SDK,Easy Port能够在字节码级别使用兼容Fire OS的同等SDK来构建您的应用。这样可以最大限度减少代码重构需求。Easy Port目前支持Google Play结算库的移植。
问: 如何将我的Android应用与亚马逊应用商店计费兼容性SDK集成?
如果您的应用目前使用Google Play结算库,则您可以使用Easy Port将您的应用与亚马逊应用商店计费兼容性SDK集成。Easy Port在字节码级别将Google Play结算库API替换为亚马逊应用商店计费兼容性API。如果您的应用不符合Easy Port的要求,您可以直接将自己的应用与亚马逊应用商店计费兼容性SDK集成。相关说明请参阅亚马逊应用商店计费兼容性SDK
问: 什么是AspectJ编译器?
Easy Port使用面向切面的编程将不兼容Fire OS的SDK替换为兼容Fire OS的SDK,并使用AspectJ编译器 (AJC) 通过所应用的切面生成字节码。
问: Easy Port会更改我的源代码吗?
Easy Port不会直接更改您的源代码。Easy Port提供切面并在编译期间应用它们,生成兼容Fire OS的字节码。
问: Easy Port会收集我的任何数据吗?
不会,Easy Port不收集任何数据。
问: 应用Easy Port后,我必须对自己的代码库进行更多更改吗?
当您使用Easy Port构建项目时,它会生成编织日志,指导您在必要时进行任何更改。在构建日志中,您可以在AspectJ Compilation Warnings下找到警告消息。如果添加插件或切面依赖项导致冲突,则可能还需要更新代码以解决这些冲突。
问: Easy Port适用于Linux吗?
Easy Port适用于Linux、Mac和Windows操作系统。
问: Easy Port支持哪些版本的Google Play结算库?
Easy Port目前仅支持Google Play结算库版本5.2.1。
问: Easy Port是否支持任何其他SDK?
目前,Easy Port只能帮助您从Google Play结算库进行移植。

Last updated: 2024年5月23日