as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases

as

开发
测试
应用发布
盈利
用户参与
设备规格
资源

应用移植发行说明

应用移植发行说明

下表包含了应用移植功能的发行说明,这些功能包括亚马逊应用商店计费兼容性SDK、A3L身份验证SDK、A3L Location SDK、A3L Messaging SDK和亚马逊应用商店Easy Port。

日期 描述
2025年9月19日 A3L Messaging: 已发行版本1.1.1。A3L Messaging SDK可兼容运行Android 14(API级别34)及更高版本的设备。
2025年2月5日 亚马逊应用商店计费兼容性SDK: 现在可以使用Maven Central将亚马逊应用商店计费兼容性SDK添加到您的项目。有关详细信息,请参阅亚马逊应用商店计费兼容性SDK
2024年10月14日 亚马逊应用商店计费兼容性SDK: 已发行版本4.2.0。亚马逊应用商店计费兼容性SDK与Google Play结算库4.0、5.0、6.0和7.0版本兼容。有关更多信息,请参阅亚马逊应用商店计费兼容性SDK
2024年5月22日 收据验证服务: 收据验证服务 (RVS) 现在支持亚马逊应用商店计费兼容性SDK。有关详细信息,请参阅适用于消费品和权利的RVS以及适用于订阅的RVS

亚马逊应用商店Easy Port: 亚马逊应用商店Easy Port已发布,支持计费功能。亚马逊应用商店Easy Port能够在字节码级别使用兼容Fire OS的同等SDK构建应用,从而帮助您在移植现有Android应用时处理兼容性问题。有关详细信息,请参阅亚马逊应用商店Easy Port
2023年12月5日 A3L身份验证: A3L身份验证SDK版本1.1.0发布。添加了对集成Google云端硬盘API的支持。
2023年10月27日 亚马逊应用商店计费兼容性SDK: 发布了版本4.1.0。亚马逊应用商店计费兼容性SDK现在支持订阅。有关详细信息,请参阅亚马逊应用商店计费兼容性订阅
2023年9月13日 A3L Location: A3L Location SDK版本1.0.0的初次发布。支持当前位置、上个已知位置、位置更新以及位置设置。
2023年6月6日 文档更新: 添加了亚马逊应用商店计费兼容性SDK最佳实践亚马逊应用商店计费兼容性SDK疑难解答指南。
2023年5月19日 A3L身份验证: A3L身份验证SDK版本1.0.0的初始版本。包括对以下功能的支持:允许用户使用Google账户进行身份验证、退出登录您的应用,以及撤销您的应用对该账户的访问权限。
2023年3月15日

亚马逊应用商店计费兼容性SDK: 版本4.0.0正式发布。此SDK兼容Google Play结算API.如果您的现有Android应用已与Google Play结算库集成,则使用此SDK,只需进行极少的更改即可将应用移植到亚马逊应用商店。

如果应用已与亚马逊应用商店SDK集成并且您不打算使用此功能,则无需切换到此SDK。有关SDK之间的差异,请参阅功能比较

下载 | 文档

2023年2月27日 A3L Messaging: 已发行版本1.10。
  • 添加了对基于主题的消息传递的支持。
  • getToken()subscribeToTopic()unsubscribeFromTopic() 方法会返回Task对象。
  • A3LMessaging.init() 已弃用;初始化由A3L Messaging库自动处理。
2022年6月6日 A3L Messaging: 版本1.0.0正式发布。增加了A3L Messaging示例应用
2022年3月24日 A3L Messaging: 版本1.0.0初始Beta测试版发布。包括对推送通知和自定义数据消息的支持。

Last updated: 2025年9月19日

").insertBefore(this); } }); }); $(document).ready(function() { if ($("#jumpoffset").length) { var scrollhash = document.getElementById('jumpoffset'); scrollhash.scrollIntoView(true); if (location.hash) { location.href = location.hash; } else { var scrollbody = document.querySelector('.mainColumn'); scrollbody.scrollIntoView(true); window.scroll(0, -500); } } }); $(document).ready(function() { if ($("#jump").length) { var scrollold = document.getElementById('jump'); scrollold.scrollIntoView(true); window.scroll(0, -100); if (location.hash) { location.href = location.hash; } } }); //resize container on local builds $(document).ready(function() { if (window.location.href.indexOf("/127.0.0.1:4000/") > -1) { document.querySelector('.container-fluid').style.position = 'fixed'; } }); //add underline to headers $(document).ready(function() { if ($(".productTitle").is(':contains("Alexa Skills Kit")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Skills Kit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("Alexa Presentation Language (APL)")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Skills Kit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("Alexa Connect Kit")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Connect Kit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("A/B Testing")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Skills Kit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("Alexa Smart Properties")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Smart Properties")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("Alexa Conversations Developer Guide")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Skills Kit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($(".productTitle").is(':contains("Alexa Design Guide")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Design Guide")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Design Guide")')) { $(this).css("padding", "0"); } }); } if ($(".productTitle").is(':contains("Alexa Gadgets Toolkit")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Gadgets Toolkit")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Gadgets Toolkit")')) { $(this).css("padding", "0"); } }); } if ($(".productTitle").is(':contains("Alexa Voice Service")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Alexa Voice Service")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($("h1").is(':contains("Alexa Reference Content")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Reference")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($("h1").is(':contains("Alexa Videos")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Videos")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($("h1").is(':contains("Alexa Code Samples")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Code Samples")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } if ($("h1").is(':contains("Documentation Home")')) { $(".dppnItem a").each(function() { if ($(this).is(':contains("Home")')) { $(this).css("border-bottom", "1.3px solid #FFFFFF"); } }); } }); $(document).ready(function () { const myScrollspy = $("#myScrollspy"); if (myScrollspy.length) { const containsList2orList3 = myScrollspy.find(".list2, .list3").length > 0; if (containsList2orList3) { myScrollspy.css("display", "block"); $(".fa.fa-info-circle").show(); } else { myScrollspy.css("display", "none"); $(".fa.fa-info-circle").hide(); } } }); /** * This function moves the 'page-not-translated' section from its original position * to a new position after the 'atd-categories-header' and ensures it is displayed * only in the new location. This is achieved by hiding the section initially, * moving it, and then displaying it again once it is in the correct position. */ $(document).ready(function() { const $pageNotTranslatedMessage = $('#page-not-translated'); const $desktopCategoriesHeader = $('.navigation-header.atd-categories-header'); const $mobileToggleHeader = $('.mobile-toggle'); if ($pageNotTranslatedMessage.length) { if ($mobileToggleHeader.length) { $pageNotTranslatedMessage.insertAfter($mobileToggleHeader); } else if ($desktopCategoriesHeader.length) { $pageNotTranslatedMessage.insertAfter($desktopCategoriesHeader); } $pageNotTranslatedMessage.show(); } }); // Function to handle smooth scrolling to target elements when links are clicked $(document).ready(function () { $('.customspy a, .mainColumn a').on('click', function (event) { const targetId = $(this).attr('href'); if (targetId && targetId.startsWith('#')) { event.preventDefault(); const targetElement = document.querySelector(`[id="${targetId.replace('#', '')}"]`); if (targetElement) { const hash = targetId.substring(1); window.history.pushState(null, '', `#${hash}`); targetElement.scrollIntoView(true); window.scroll(0, -500); } } }); }); window.addEventListener('DOMContentLoaded', function () { const targetId = window.location.hash; if (targetId) { const targetElement = document.querySelector(targetId); if (targetElement) { setTimeout(() => { targetElement.scrollIntoView(true); window.scrollBy(0, -500); }, 10); } } }); function activateContentBasedOnHash() { const currentHash = window.location.hash.substring(1); if (currentHash) { const contentElement = document.getElementById(currentHash); if (contentElement) { activateTabAndContent(contentElement); } } } function activateTabAndContent(contentElement) { const tabSection = contentElement.closest('.tab-pane'); if (tabSection) { const parentTabLink = document.querySelector(`a[href='#${tabSection.id}']`); if (parentTabLink) { const parentNavTabs = parentTabLink.closest('.nav-tabs'); if (parentNavTabs) { parentNavTabs.querySelectorAll('.nav-link').forEach(link => { link.classList.remove('active', 'show'); }); parentTabLink.classList.add('active', 'show'); } const parentTabContent = tabSection.closest('.tab-content'); if (parentTabContent) { parentTabContent.querySelectorAll('.tab-pane').forEach(tab => { tab.classList.remove('active', 'show'); }); tabSection.classList.add('active', 'show'); } } } } function scrollToHashWithOffset() { const tabHash = window.location.hash; const targetTabLink = document.querySelector(`.nav-tabs a[href="${tabHash}"]`); const mainContentColumn = document.querySelector('.inline'); if (targetTabLink && mainContentColumn) { const totalHeaderHeight = getTotalHeaderHeight() + 40; targetTabLink.scrollIntoView({behavior: 'smooth', block: 'start'}); setTimeout(() => { mainContentColumn.scrollBy(0, -totalHeaderHeight); }, 20); } } function getTotalHeaderHeight() { return [...document.querySelectorAll('.atd-services-header, .atd-categories-header')] .reduce((total, header) => total + (header ? header.offsetHeight : 0), 0); } function handleClick(event) { event.preventDefault(); const link = event.currentTarget; const hash = link.getAttribute('href').substring(1); const contentElement = document.getElementById(hash); if (contentElement) { activateTabAndContent(contentElement); scrollToHashWithOffset(); } } function handleBackToTopClick(event) { event.preventDefault(); const mainContentColumn = document.querySelector('.inline'); if (mainContentColumn) { mainContentColumn.scrollTo({top: 0, behavior: 'smooth'}); } window.scrollTo({top: 0, behavior: 'smooth'}); } document.addEventListener('DOMContentLoaded', () => { activateContentBasedOnHash(); scrollToHashWithOffset(); const myScrollspy = document.getElementById('myScrollspy'); if (myScrollspy) { myScrollspy.querySelectorAll('a[href^="#"]').forEach(link => { link.addEventListener('click', handleClick); }); } document.querySelectorAll('.dpfBackToTopLink, .backToTop').forEach(link => { link.addEventListener('click', handleBackToTopClick); }); }); // Show tab link as selected when clicked $(document).ready(function() { $('.nav-tabs > li > a').on('click', function(e) { e.preventDefault(); $(this).tab('show'); $(this).addClass('active show'); }); }); // Fix for when version dropdown is on the same page as nav tab dropdown // closes other dropdown menu to avoid overlap/usability issues $(document).ready(function() { // Version selector dropdown $('.versionsButton').click(function(e) { // Close the nav tab dropdown if open $('.nav-link.dropdown-toggle').siblings('.dropdown-menu').removeClass('show'); }); // Nav tab selector dropdown $('.nav-link.dropdown-toggle').click(function(e) { // Close the version dropdown if open $('.versionsButton').siblings('.dropdown-menu').removeClass('show'); }); }); // Handle active state management for dropdown menu in nav-tabs // Fixes edge case issues for when version selector dropdown and // nav-tab dropdown appear on the same page $(document).ready(function() { // Function to deactivate all tab panes and reset dropdown items function deactivateAllTabs() { $('.position .nav-item.dropdown .dropdown-menu .dropdown-item').each(function() { const targetId = $(this).attr('href'); $(targetId).removeClass('active show'); $(this).removeClass('active show'); }); } // Store the original pushState function const originalPushState = history.pushState; // Create a custom event for pushState const pushStateEvent = new Event('pushState'); // Override pushState history.pushState = function() { originalPushState.apply(this, arguments); // Dispatch the custom event window.dispatchEvent(pushStateEvent); }; // Add pushState listener window.addEventListener('pushState', function() { const params = new URLSearchParams(window.location.search); const vValue = params.get('v'); // Handle query parameter change from version selector if (vValue) { // Remove active classes from all tabs deactivateAllTabs(); $('.position').each(function() { var firstTabPane = $(this).find('.tab-pane').first(); if (firstTabPane.length > 0) { var tabId = firstTabPane.attr('id'); var dropdownItem = $('.dropdown-menu .dropdown-item[href="#' + tabId + '"]'); // Make first tab in each version active dropdownItem.addClass('active show'); firstTabPane.addClass('active show'); } }); } }); // Handle dropdown item clicks $('.position .nav-item.dropdown .dropdown-menu .dropdown-item').click(function(e) { e.preventDefault(); // Remove active classes from all tabs deactivateAllTabs(); // Add active class to clicked item $(this).addClass('active show'); // Show corresponding tab content const targetId = $(this).attr('href'); $(targetId).addClass('active show'); }); // Handle initial load from URL hash if (window.location.hash) { const tabId = window.location.hash; if ($(tabId).length) { // Deactivate all tabs first deactivateAllTabs(); // Activate the correct tab and content $(`.position .nav-item.dropdown .dropdown-menu .dropdown-item[href="${tabId}"]`).addClass('active show'); $(tabId).addClass('active show'); } } }); // Fix issue when anchor linking into a tab with a dropdown menu $(document).ready(function() { // Handle initial load from URL hash if (window.location.hash) { const tabId = window.location.hash; if ($(tabId).length) { // Deactivate active links in dropdown $('.nav-item.dropdown .dropdown-menu .dropdown-item').each(function() { $(this).removeClass('active show'); }); } } });