安卓 Flash 开发秘籍(四)

部署运行你感兴趣的模型镜像

原文:zh.annas-archive.org/md5/3A6CCF6F6AAB969F5B96A3C7E7AEF15A

译者:飞龙

协议:CC BY-NC-SA 4.0

第十章:避免问题:调试和资源考虑

本章将涵盖以下内容:

  • 使用 Flash Professional 调试应用程序

  • 使用 Flash Builder 调试应用程序

  • 使用设备 GPU 渲染应用程序元素

  • 在设备中断事件发生时自动化应用程序关闭

  • 使用设备后退按钮退出应用程序

  • 监控应用程序中的内存使用和帧率

引言

由于 Android 是一个移动操作系统,因此在性能和用户体验优化方面提出了新的特定挑战。Flash 平台开发者在开发 AIR for Android 和移动 Flash Player 应用程序时必须考虑这一点。本章将提供调试和优化技术以及用户体验调整的概览,以使我们的 AIR for Android 应用程序尽可能良好地运行。

使用 Flash Professional 调试应用程序

使用 Flash Professional 调试 AIR for Android 应用程序与调试桌面 AIR 或 Flash 项目非常相似,但有一些值得注意的区别。

准备就绪…

请确保您的 AIR for Android 项目在 Flash Professional 中已打开,并且您的播放器是 AIR for Android。这可以通过属性面板进行验证:

https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_01.jpg

如何操作…

使用移动调试启动器或在通过 USB 连接的设备上进行调试:

  1. 在应用程序菜单中,选择调试,并将鼠标悬停在标有调试影片的选项上。这将导致出现一个调试选项的子菜单:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_02.jpg

  2. 当选择在**AIR 调试启动器(移动)**中调试时,Flash Professional 将切换到完整的调试控制台,并在设备调试器中启动应用程序。这对于在涉及多触控、加速度计或其他设备特定输入和传感器时快速调试应用程序非常有用。断点、跟踪语句和其他调试工具将完全与普通桌面项目中的功能一样。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_03.jpg

  3. 一旦我们在调试播放器中完成了初步测试,并准备好通过 USB 在设备上进行调试,我们可以在调试菜单中切换到该选项。如果我们从未为此项目配置过 AIR for Android 设置,将出现一个对话框窗口,允许我们进行配置。在随后的调试会话中不应出现此窗口。确保在Android 部署类型下选择调试选项,并在发布后部分选择安装并启动选项。

  4. 在此阶段,你会注意到有用于确定证书来签署你的应用程序的字段。要了解更多关于代码签名过程的信息,请参考第十一章,最后的考虑:应用程序编译和分发https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_04.jpg

  5. 在启动调试会话以在我们的设备上部署后,Flash Professional 将需要几秒钟来编译和部署应用程序。当应用程序开始在设备上加载时,AIR 将会启动一个小对话框,告诉我们它正在尝试连接到我们计算机上的调试器。一旦建立连接,窗口将消失,我们的完整应用程序将启动,使我们能够像平常一样进行测试和调试。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_05.jpg

工作原理…

通过断点和变量检查来调试应用程序与使用任何 Flash 平台技术开发应用程序的课程相同。在使用 AIR for Android 时,我们需要处理外部硬件,并采取一些额外的步骤以确保我们能够在正常环境中进行调试,同时与在真实设备上运行的应用程序进行交互。本食谱展示了在我们当前工作流程中实现这一切所需步骤。

另请参阅…

若想了解更多关于使用 Flash Professional 进行项目设置的信息,你可以参考第一章,准备使用 Android:开发环境和项目设置

使用 Flash Builder 调试应用程序

在 Flash Builder 中定义调试配置的能力是一个优秀的工作流程改进,我们在设置新的移动项目或准备测试我们工作了一段时间的项目时应该利用这一点。我们可以使用 Flash Builder 的调试配置面板为同一个项目设置多个配置。

如何操作…

我们将要探索调试配置面板,为我们的移动项目配置一组自定义的启动设置:

  1. 选择一个移动项目,点击 Flash Builder 工具栏中调试按钮旁边的箭头。从菜单中选择调试配置选项。调试配置对话框窗口将会打开:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_06.jpg

  2. 双击左侧菜单中标记为MobileApp的条目,以编辑此选定项目的特定设置。从这个窗口,我们可以选择另一个要配置的项目,为项目指定默认的Application文件,设置一个Target平台(在我们的情况下是 Google Android),并配置一个Launch方法。如果在桌面上调试,我们还可以从各种设备配置文件中选择,甚至可以配置我们自己的。在下一个截图中,我们选择使用摩托罗拉 Droid 上的尺寸和分辨率进行调试:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_07.jpg

  3. 如果有必要定义其他设备,我们可以点击配置按钮以启动设备配置屏幕,该屏幕允许我们导入设备配置文件,甚至添加我们自己的配置文件:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_08.jpg

  4. 添加自定义设备配置文件时,我们可以指定显示的宽度和高度以及支持的每英寸像素。Google Android 有一个标准平台 UI,根据制造商对标准显示元素进行的定制程度,在不同设备之间可能有所不同。例如,通知栏除非设备处于全屏模式,否则始终会出现。如果特定设备上的通知栏更高或更短,我们可以在这一步进行相应调整。

    注意

    尽管这里可以模拟分辨率和 PPI,但除非开发机器具有多点触控界面,否则我们仍需要在实际设备上测试任何触摸或手势输入。当然,设备性能也不是模拟的一部分。

    https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_09.jpg

  5. 当选择在实际物理硬件上调试时,我们可以选择通过 USB 或无线网络在设备上进行调试。USB 调试通常更为直接,大多数情况下推荐使用。在以下屏幕截图中,您可以看到我们已经为桌面调试定义了一个配置,以及一个用于通过 USB 连接的设备调试的配置:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_10.jpg

  6. 完成后,点击应用然后关闭。我们现在可以通过 Flash Builder 调试图标或项目上下文菜单访问任何已定义的配置:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_11.jpg

  7. 一旦我们选择为项目启动调试会话,那么在桌面调试时,它将在 Flash Builder 移动调试播放器中打开;如果是 USB 设备调试,它将被编译、推送到设备并安装。对于设备调试会话,AIR 将启动一个小对话框,告知我们它正在尝试连接到计算机上的调试器。一旦建立连接,窗口将消失,我们的完整应用程序将启动,使我们能够正常测试和调试。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_12.jpg

工作原理…

如果你选择在桌面上启动,你将能够在 Flash Builder 中进行本地调试。你也可以通过选择一系列配置文件来模拟各种 Android 设备。如果你想创建自己的配置文件,可以点击配置按钮。

当选择在设备上启动时,你也可以通过 Flash Builder 在设备上进行调试。这是迄今为止调试移动应用程序的最佳方式,因为它是在真正的 Android 硬件上进行测试的。

另请参阅…

有关使用 Flash Builder 进行项目设置的信息,你可以参考第一章,准备使用 Android:开发环境和项目设置。

使用设备 GPU 渲染应用程序元素

虽然较旧的 Android 设备必须依赖 CPU 来渲染移动 Adobe AIR 项目中的所有内容,但市场上许多较新的设备完全支持图形处理单元(GPU)渲染并提供必要的钩子让我们的应用程序利用这一点。本食谱将展示我们必须采取的必要步骤,以启用应用程序元素的 GPU 加速。

如何操作…

我们将修改 AIR 描述符文件中的设置,并使DisplayObject实例能够利用这些修改:

  1. 在你的项目中找到 AIR 描述符文件。它通常被命名为类似{MyProject}-app.xml,并位于项目根目录。

  2. 浏览文件,找到名为<initialWindow>的节点,位于本文档的开头部分。这个节点包含了许多关于我们应用程序窗口视觉方面的默认设置。

  3. 我们现在必须找到名为<renderMode>的子节点。如果此节点不存在,我们可以轻松地在这里添加它。renderMode的值决定了应用是使用 CPU 还是 GPU 来渲染内容。应用程序renderMode有三个可能的值:

    • AUTO: 应用将尝试使用设备 GPU 来渲染视觉显示对象:

      <renderMode>auto</renderMode>
      
      
    • GPU: 应用将被锁定在 GPU 模式下。如果设备不支持 Adobe AIR 中的 GPU 渲染,将会出现问题:

      <renderMode>gpu</renderMode>
      
      
    • CPU: 应用将使用设备 CPU 来渲染所有视觉显示对象。这是最安全的设置,但提供的优势最少:

      <renderMode>cpu</renderMode>
      
      
  4. 现在,每当我们想在应用程序中的DisplayObject实例利用这一点时,我们必须将DisplayObject实例的cacheAsBitmap属性设置为true,并将cacheAsBitmapMatrix属性分配给一个新的 Matrix 对象。这将使这些单个对象通过设备 GPU 进行 2D 内容渲染。当在 2.5D 空间中使用对象时,它们将自动使用 GPU 进行渲染,不需要这些额外的设置。

    displayObject.cacheAsBitmap = true;
    displayObject.cacheAsBitmapMatrix =new Matrix();
    
    

它的工作原理…

在 AIR 描述符文件中将应用的renderMode设置为gpu将强制应用使用 GPU 渲染视觉对象。然而,不在 2.5D 空间中渲染的个别对象需要将cacheAsBitmap属性设置为true,并将cacheAsBitmapMatix属性分配给一个 Matrix 对象。当设置renderModeauto时,应用将尝试通过 GPU 渲染这些对象,如果特定设备不支持 GPU 加速,则回退到 CPU 渲染。我们还可以将renderMode设置为cpu,这样会完全绕过 GPU 渲染,只通过 CPU 渲染所有内容。

当适当使用时,设置应用的renderMode可以显著提高应用内部视觉对象的渲染速度。重要的是要意识到许多设备可能无法通过 AIR for Android 获得完整的 GPU 支持,在这种情况下,强制使用 GPU 可能会对应用造成问题,甚至可能导致在某些特定设备上无法使用。在使用 GPU 时也存在一些限制,例如:不支持滤镜、PixelBender 混合以及各种标准的混合模式。

还有更多内容…

如果使用 Flash Professional,我们还可以通过 AIR 的Android 设置面板设置渲染模式。这可以通过属性面板访问。点击播放器选择旁边的扳手图标来配置这些设置。

https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_13.jpg

在设备中断事件时自动化应用关闭

当应用在 Android 设备上运行时,用户会话很可能因为电话来电或其他不可预见的事件而中断。当发生此类情况时,我们应该考虑是否应该退出应用并释放系统资源供其他任务使用。

如何操作…

我们将监听一个应用发出的停用事件并响应退出应用:

  1. 首先,我们需要将以下类导入到我们的应用中:

    import flash.desktop.NativeApplication:
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    
    
  2. 我们必须在NativeApplication.nativeApplication对象上注册一个类型为Event.DEACTIVATE的事件监听器。当设备上发生电话来电或其他中断导致应用失去焦点时,将触发此事件:

    protected function registerListeners():void {
    NativeApplication.nativeApplication.addEventListener(Event. DEACTIVATE, appDeactivate);
    }
    
    
  3. 在下面的函数中,我们将在NativeApplication.nativeApplication对象上调用exit()方法,完全关闭应用。这将释放资源供其他设备应用使用:

    protected function appDeactivate(e:Event):void {
    NativeApplication.nativeApplication.exit();
    }
    
    

工作原理…

我们希望在使用用户设备上的资源时,成为我们应用程序运行的良好管理者。有效的方法是确保在应用程序处于非活动状态时释放应用程序使用的任何内存。监听停用事件将允许我们知道何时有其他应用程序获得焦点。在这一点上,我们可以完全退出应用程序,释放用户当前正在使用的资源。

另请参阅…

在实际退出应用程序之前,我们有机会通过本地共享对象或本地数据库保存会话数据。有关如何执行此操作的信息,请查看第八章,丰富的访问:文件系统和本地数据库。

使用设备后退按钮退出应用程序

安卓设备通常在设备的一侧有一组四个软键,这些软键始终对用户可见。其中两个键涉及导航——后退和主页键。当用户激活某个事件,例如按下后退按钮时,我们应该考虑是否完全退出应用程序并释放系统资源以供其他任务使用。

注意

主页按钮将始终使用户返回到 Android 桌面,从而停用我们的应用程序。要了解如何在发生此类事件时关闭应用程序,请参阅之前的食谱。

如何操作…

我们将监听专用安卓后退按钮的按下,并在响应中退出应用程序:

  1. 首先,我们需要将以下类导入到我们的应用程序中。

    import flash.desktop.NativeApplication;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    
    
  2. 我们必须在NativeApplication.nativeApplication对象上注册一个类型为KeyboardEvent.KEY_DOWN的事件监听器。当用户激活专用的安卓后退键时,此事件将被触发:

    protected function registerListeners():void {
    NativeApplication.nativeApplication. addEventListener(KeyboardEvent.KEY_DOWN, onBackPressed);
    }
    
    

当用户按下后退键时,我们将调用NativeApplication.nativeApplication对象的exit()方法,完全关闭应用程序。这将释放资源供其他设备应用程序使用:

protected function onBackPressed(e:KeyboardEvent):void {
if(e.keyCode == Keyboard.BACK){
NativeApplication.nativeApplication.exit();
}
}

工作原理…

我们希望在使用用户设备上的资源时,成为我们应用程序运行的良好管理者。有效的方法是确保在应用程序处于非活动状态时释放应用程序使用的任何内存。做到这一点的方法之一是监听键盘事件并拦截后退键的按下。在这一点上,我们可以完全退出应用程序,释放用户当前正在使用的资源。

根据我们应用程序的当前状态,我们可以选择是退出应用程序还是仅返回到某个之前的状态。在基于 Flex 的移动项目中执行此类操作时,我们可能只有在当前视图是我们应用程序中的初始视图ViewNavigator时才会退出应用程序。

还有更多…

通过使用KeyboardEvent.preventDefault(),也可以阻止安卓返回按钮执行任何操作:

protected function onBackPressed(e:KeyboardEvent):void {
if(e.keyCode == Keyboard.BACK){
KeyboardEvent.preventDefault();
}
}

另请参阅…

请注意,在实际退出应用程序之前,我们有机会通过本地共享对象或本地数据库保存任何会话数据。有关如何执行此操作的更多信息,请查看第八章,丰富的访问:文件系统和本地数据库

监控应用程序中的内存使用和帧率

安卓设备通常与传统桌面或笔记本电脑相比,内存较少且 CPU 性能较弱。在构建安卓应用时,我们必须非常小心,以免创建出过于耗能的应用,导致帧率降至不可接受的水平或应用无响应。为了帮助我们排查和监控这些问题,我们可以跟踪运行中应用的内存消耗和计算出的帧率,以便相应地作出响应。

如何操作…

我们可以通过使用flash.system包以及flash.utils.getTimer类来监控许多系统属性,以计算当前应用程序的帧率:

  1. 首先,我们需要将以下类导入到我们的应用程序中:

    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.system.Capabilities;
    import flash.system.System;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.utils.getTimer;
    
    
  2. 我们需要声明一组Number对象来保存持久的计时值,以便计算应用程序的帧率。同时,声明一个TextFieldTextFormat对,以向用户输出此和其他设备消息:

    private var prevTime:Number;
    private var numFrames:Number;
    private var frameRate:Number;
    private var traceField:TextField;
    private var traceFormat:TextFormat;
    
    
  3. 在这一点上,我们继续设置我们的TextField,应用TextFormat,并将其添加到DisplayList中。这里,我们创建一个方法来执行所有这些操作:

    protected function setupTraceField():void {
    traceFormat = new TextFormat();
    traceFormat.bold = true;
    traceFormat.font = "_sans";
    traceFormat.size = 24;
    traceFormat.align = "left";
    traceFormat.color = 0xCCCCCC;
    traceField = new TextField();
    traceField.defaultTextFormat = traceFormat;
    traceField.selectable = false;
    traceField.multiline = true;
    traceField.wordWrap = true;
    traceField.mouseEnabled = false;
    traceField.x = 20;
    traceField.y = 40;
    traceField.width = stage.stageWidth-40;
    traceField.height = stage.stageHeight - traceField.y;
    addChild(traceField);
    }
    
    
  4. 下一步包括创建处理我们帧率计算的机制。我们将prevTimeNumber设置为应用程序初始化后当前经过的毫秒数。我们还将numFrames变量设置为0。这为我们提供了一组基础数字。最后,我们在应用程序上注册一个Event.ENTER_FRAME类型的事件监听器,以定期为我们执行新的帧率计算:

    protected function registerListeners():void {
    prevTime = getTimer();
    numFrames = 0;
    this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    
    
  5. 这个冗长的方法会在每次进入帧时刷新我们TextField中的所有内容。首先,我们将输出一些关于 CPU 架构、制造商以及应用程序可用的内存的信息。在这一步中,内存是重要的部分。

  6. 为了计算运行帧率,我们首先会递增我们的帧计数器,并再次获取从应用程序初始化开始经过的毫秒数。可以减去上一次读取的值,这样我们就得到了自上次运行此函数以来经过的时间。

  7. 如果经过的时间超过 1000,那么已经过去了一秒钟,然后我们可以进行一些计算来确定我们实际每秒的帧数。我们将通过将本次循环中处理的帧数除以持有我们之前时间的变量乘以 1000,来获取每分钟的帧数。将上一个时间变量设置为当前经过的时间,并将我们的帧数重置为0,将开始一个新的周期:

    protected function onEnterFrame(e:Event):void {
    traceField.text = "CPU Arch: " + Capabilities.cpuArchitecture + "\n";
    traceField.appendText("Manufacturer: " + Capabilities. manufacturer + "\n");
    traceField.appendText("OS: " + Capabilities.os + "\n\n");
    traceField.appendText("Free Memory: " + System.freeMemory + "\n");
    traceField.appendText("Total Memory: " + System.totalMemory + "\n\n");
    numFrames++;
    var timeNow:Number = getTimer();
    var timePast:Number = timeNow - prevTime;
    if(timePast > 1000){
    var fpm:Number = numFrames/timePast;
    frameRate = Math.floor(fpm * 1000);
    prevTime = timeNow;
    numFrames = 0;
    }
    traceField.appendText("Framerate: " + frameRate);
    }
    
    
  8. 当我们在设备上运行应用程序时,我们可以看到 CPU 和操作系统信息,以及内存使用情况和计算出的帧率:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_10_14.jpg

它的工作原理…

关于 CPU 和内存使用,可以通过 Capabilities 和 System 类访问大量信息。我们可以通过从getTimer()实用方法获取的数据计算实际 FPS,来获取有关当前帧率的更多信息。将这些信息综合使用,将为我们提供一组合理的数据,以确定应用程序在特定设备上的运行情况。然后,我们可以使用这些数据在应用程序运行时通过修改应用程序属性、改变我们渲染内容的方式,甚至提醒用户可能存在问题。

还有更多…

如果帧率变得太慢,我们可能需要考虑降低帧率,甚至降低应用程序的渲染质量以改善性能。这可以通过使用以下代码片段来完成:

this.stage.frameRate = 10;
this.stage.quality = StageQuality.LOW;

另请参阅…

我们还可以推荐使用像Hi-ReS-Stats这样的包,可以从github.com/mrdoob/Hi-ReS-Stats下载,并在移动 Android 应用程序上使用来监控资源使用情况。使用这个类将在我们的应用程序中生成一个图形覆盖层,以监控应用程序性能。

第十一章:最后考虑:应用程序编译和分发

本章节将涵盖以下内容:

  • 使用 Flash Professional 生成代码签名证书

  • 使用 Flash Builder 生成代码签名证书

  • 使用 FDT 生成代码签名证书

  • 使用 AIR 开发工具生成代码签名证书

  • 准备图标文件以供分发

  • 使用 Flash Professional 编译应用程序

  • 使用 Flash Builder 编译应用程序

  • 使用 FDT 编译应用程序

  • 使用 AIR 开发工具编译应用程序

  • 将应用程序提交到 Android Market

简介

当将移动 Flash 应用程序(.swf)部署到 Web 上时,这个过程与桌面版非常相似;将你的 .swf 嵌入 HTML 容器中,就完成了。然而,将 AIR 应用程序部署到 Android Market 上则完全不同。在本章中,我们将了解如何准备一个应用程序以分发给 Android Market,生成适当的代码签名证书,以及编译和提交过程的相关细节。

使用 Flash Professional 生成代码签名证书

在 Android Market 上分发的应用程序必须使用 25 年有效期的代码签名证书进行数字签名。我们有多种不同的方法来生成 Android 应用程序的代码签名证书。在本食谱中,我们将演示如何使用 Flash Professional 生成此类证书。

如何操作…

在 Flash Professional 中,执行以下操作以创建自签名数字证书:

  1. 打开一个针对 AIR for Android 的项目,打开 属性 面板,并点击 播放器选择 框旁边的扳手图标。这将打开 AIR for Android 设置 对话框:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_01.jpg

  2. AIR for Android 设置 对话框中,点击 创建 按钮以打开 创建自签名数字证书 对话窗口:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_02.jpg

  3. 创建自签名数字证书 对话框出现在我们面前时,我们将输入所需的信息并为证书选择名称和位置。正确输入所有信息后,我们将点击 确定 以便 Flash Professional 生成证书。确保在 有效期 输入框中输入 25 年,以适用于 Android:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_03.jpg

工作原理…

通过生成有效的数字代码签名证书,我们可以正确地为提交到 Android Market 的 Android 应用程序签名。Flash Professional 提供了一个简单的方法来生成适当的证书类型并将其应用于我们的分发应用程序。

使用 Flash Builder 生成代码签名证书

在 Android Market 上分发的应用程序必须使用 25 年有效期的代码签名证书进行数字签名。我们有多种不同的方法可以为 Android 应用程序生成代码签名证书。在本食谱中,我们将演示如何使用 Flash Builder 生成此类证书。

如何操作…

在 Flash Builder 中,执行以下操作以创建自签名数字证书:

  1. 包资源管理器中选择移动项目,进入文件菜单并选择属性。将为此项目显示属性对话框。

  2. 属性对话框中,根据所选项目的类型,向下滚动至Flex 构建打包ActionScript 构建打包项,并选择Google Android。选择数字签名标签后,点击创建按钮以打开创建自签名数字证书对话框:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_04.jpg

  3. 现在需要做的就是输入所需信息并为证书选择名称和位置。正确输入所有信息后,我们将点击确定,让 Flash Builder 生成证书:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_05.jpg

工作原理…

通过生成有效的数字代码签名证书,我们可以正确地为提交到 Android Market 的 Android 应用程序签名。Flash Professional 提供了一种简单的方法来生成适当的证书类型,并将其应用于我们分发的应用程序。

使用 FDT 生成代码签名证书

在 Android Market 上分发的应用程序必须使用 25 年有效期的代码签名证书进行数字签名。我们有多种不同的方法可以为 Android 应用程序生成代码签名证书。在本食谱中,我们将演示如何使用 PowerFlasher FDT 生成此类证书。

如何操作…

在 FDT 中,执行以下操作以创建自签名数字证书:

  1. 点击顶部菜单中运行图标旁边的小箭头,并从出现的子菜单中选择运行配置。这将打开运行配置对话框:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_07.jpg

  2. 打开运行配置对话框窗口,双击FDT AIR 应用程序发布菜单项以创建新配置。选择证书标签,并输入所需信息,为证书选择名称和位置。正确输入所有信息后,我们将点击创建证书,让 FDT 为我们生成证书:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_08.jpg

工作原理…

通过生成有效的数字代码签名证书,我们可以正确地为提交到 Android Market 的 Android 应用程序签名。FDT 提供了一种简单的方法来生成适当的证书类型,并将其应用于我们分发的应用程序。

使用 AIR 开发者工具生成代码签名证书

Android Market 上发布的应用程序必须使用 25 年代码签名证书进行数字签名。我们有多种方法可以生成 Android 应用程序的代码签名证书。在本食谱中,我们将演示如何使用 ADT 命令行工具生成此类证书。

准备中…

要了解如何在特定环境中配置 ADT,请查看第一章,准备使用 Android:开发环境和项目设置。

如何操作…

使用 ADT 命令行工具,执行以下操作以创建自签名的数字证书:

  1. 对于此示例,我们将假设以下情况:

    Publisher Name: "Joseph Labrecque"
    Validity Period: 25 (years)
    Key Type: 1024-RSA
    PFX File: C:\Users\Joseph\Documents\airandroid.p12
    Password: airAndroidPass
    
    
  2. 打开命令提示符或终端(取决于操作系统),并输入生成我们证书的命令字符串:

    adt -certificate -cn "Joseph Labrecque" -validityPeriod 25 1024-
    RSA C:\Users\Joseph\Documents\airandroid.p12 airAndroidPass
    
    
  3. ADT 实用程序现在将处理命令并完成证书生成过程。如果我们的命令有问题,ADT 将在这里打印错误信息,让我们知道出现了错误:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_09.jpg

  4. 现在,我们可以浏览到命令字符串中指定的位置来找到我们新创建的证书,并使用它来签署我们的 AIR for Android 应用程序:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_10.jpg

工作原理…

通过生成有效的数字代码签名证书,我们可以正确签署我们的 Android 应用程序以便提交到 Android Market。使用与 AIR SDK 捆绑的 ADT 工具,我们可以生成适合分发的适当证书类型。

准备分发图标文件

当我们为在 Android Market 上发布的应用程序编译应用程序时,我们必须包括一组标准图标图像以及我们的应用程序。这些图标的位置在我们的 AIR 应用程序描述符文件中定义。Android 期望一组三个图标:36x36、48x48 和 72x72。每个图标用于不同的屏幕密度,并且都应该包括为标准的 PNG 文件。

如何操作…

根据使用的工具不同,这项任务可以有不同的处理方式。我们将演示如何使用 Flash Professional CS5.5 在应用程序中包含这些图标,以及如何通过直接修改 AIR 应用程序描述符文件来实现。

使用 Flash Professional CS5.5

  1. 打开一个针对AIR for Android的项目,打开属性面板,点击播放器选择框旁边的扳手图标。这将打开AIR for Android 设置对话框:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_11.jpg

  2. AIR for Android 设置 对话框中,点击 图标 选项卡。要为我们的项目指定特定图标,我们只需在列表中选择每个图标条目,并通过使用文件夹和放大镜图标浏览来定位每个图标要使用的文件:

直接修改 AIR 描述符文件

  1. 在您的项目中找到 AIR 描述符文件。它通常命名为类似 {MyProject}-app.xml 的名称,并位于项目根目录下。

  2. 在本文档中浏览名为<icon>的节点。此节点包含许多与我们的应用程序窗口视觉方面相关的默认设置。如果它被注释掉了,我们必须在继续之前取消注释。

  3. 我们现在必须确保在<icon>节点内存在以下三个子节点。确保我们的图标文件路径正确。如果它们不正确,在我们尝试编译此应用程序时编译器会告知我们:

    <image36x36>assets/icon_36.png</image36x36>
    <image48x48>assets/icon_48.png</image48x48>
    <image72x72>assets/icon_72.png</image72x72>
    
    

例如,以下是适用于 Android 应用程序的一组三个图标及其像素测量值:

https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_13.jpg

工作原理…

在 Android 应用程序包中包含一组图标对于通过 Android Market 分发应用程序至关重要。它还能在应用程序安装到设备上后为用户提供一个容易识别的视觉提示。花点时间设计一组真正能反映应用程序代表的图标。

还有更多…

如果应用程序要发布到 Android Market,我们还需要制作多种其他图像来正确地为我们的应用程序品牌。查看 Android Market 以了解当前需要哪些图像的详细信息,请访问market.android.com/

使用 Flash Professional 编译应用程序

将项目编译为 Android 发布版本 .apk 文件是在将应用程序分发到 Android Market 或其他渠道之前的最后一步。根据使用的工具不同,有许多方法可以做到这一点。在本食谱中,我们将使用 Flash Professional 中的工具来编译和打包我们的应用程序。

如何操作…

要从 Flash Professional 编译 .apk,我们将采取以下步骤:

  1. 打开针对 AIR for Android 的项目,打开 属性 面板并点击 发布设置 按钮。这将打开 发布设置 对话框:

  2. 我们可以在这里检查我们的设置,如果我们确定一切配置正确,甚至可以直接点击发布。要验证所有设置是否都已就绪以发布到 Android,请点击我们的播放器选择框的小扳手图标,它应该设置为适用于 Android 的 AIR。这将提供对适用于 Android 的 AIR 设置对话框的访问:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_16.jpg

  3. 打开适用于 Android 的 AIR 设置对话框后,我们可以验证我们的特定配置选项,然后再决定发布。常规标签包含许多重要输入,包括生成的.apk文件的路径、应用程序名称、版本、ID 和其他必需的配置设置。我们还可以选择包含除了编译的.swf和 AIR 描述文件之外的其他文件,例如外部图像资源。图标标签允许我们使用基本的 GUI 包含图标文件,而权限标签将允许我们设置特定于 Android 的应用程序权限。

    注意

    这些设置都会修改应用程序描述文件,进而生成 Android 清单文档。我们可以将这些设置视为这些文件的图形用户界面。

  4. 作为最后一步,点击部署标签:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_17.jpg

  5. 部署标签中存在一个部署类型设置,以及使用自签名证书为应用程序签名的机会。这非常重要,因为 Android 市场不接受未签名的应用程序或不符合 Android 市场条款设置要求的应用程序。

  6. 一定要提供应用名称,用于用户在设备上安装后识别应用程序,以及一个唯一的应用 ID。App ID非常重要,因为这是 Android Market 中应用程序的主要标识符。为了使应用程序更新正常工作,它必须是唯一的,建议开发人员特别小心地使用反向域名表示法以保持这种唯一性。

  7. 我们需要确保从选择获取 AIR 运行时的选项指示我们正在定位的具体分发市场。对于一般的 Android 市场,我们选择谷歌 Android 市场。此对话框还通过 Android 部署类型设置为我们提供了编译用于不同目的的应用程序版本的选择:

    • **设备发布:**当我们想通过 Android 市场分发我们的应用程序时,需要选择的选项

    • **模拟器发布:**生成与 Android SDK 模拟器和 AIR 运行时的模拟器版本兼容的发布版本

    • **调试:**此选项生成专门用于调试应用程序的发布版本

  8. 一旦我们对所有配置设置感到满意,我们可以退出到发布设置对话框并点击发布,或者直接在此处点击发布按钮。只要我们之前已经完成这些配置步骤,我们也可以使用 Flash Professional 中提供的传统发布方法。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_18.jpg

现在我们有一个完全编译、有效签名的.apk文件,准备进行分发。

工作原理…

我们通过 Flash Professional GUI 对话框更改的配置设置实际上是在幕后修改 AIR 描述符文件。一旦我们选择发布应用程序,Flash Professional 将使用此文件来编译并将所有内容打包成一个有效的.apk文件,以便在 Android Market 上分发。

使用 Flash Builder 编译应用程序

将项目编译为 Android 发布版本.apk文件是分发应用程序到 Android Market 或其他渠道之前的最后一步。根据使用的工具不同,有许多方法可以做到这一点。在本教程中,我们将使用 Flash Builder 中的工具来编译和打包我们的应用程序。

如何操作…

要从 Flash Builder 编译.apk,请执行以下步骤:

  1. 在移动 ActionScript 或 Flex 项目中,导航到 Flash Builder 菜单,选择项目菜单项。这将显示一个包含多个选项的子菜单。从该菜单中,选择导出发布构建,打开导出发布构建对话框窗口:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_19.jpg

  2. 在此窗口中,我们可以选择要执行发布构建的项目以及该项目中的具体应用程序,决定要定位的平台,指定构建的路径和文件名,以及选择要导出哪种类型的应用程序。对于 Android,我们将在每个目标平台上选择签名包。只要我们选择了Google Android作为目标平台,点击下一步后,这将打开打包设置对话框:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_20.jpg

  3. 现在,我们可以为构建配置一些高级属性。点击包内容标签,以验证构建中是否包含所有必需的文件。如果我们想打包其他文件,甚至排除某些资源,我们可以通过使用每个项目旁边的复选框来完成。点击数字签名标签以继续:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_21.jpg

  4. 最后的任务是选择一个签名证书,以便在 Android Market 上发布我们的应用程序时进行数字签名。选择一个证书并输入关联的密码。点击完成将执行构建,并将编译的.apk保存到我们之前选择的位置。如果我们愿意,可以通过包内容标签包含外部文件,并通过部署标签选择部署到任何连接的设备:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_22.jpg

现在我们已经拥有一个完全编译、有效签名的.apk文件,准备进行分发。

工作原理…

Flash Builder 在导出项目的发布版本时提供了目标平台的概念。如果我们选择 Google Android 作为目标平台,我们会得到一些特定于 Android 的附加选项,我们可以根据特定项目的需求进行修改。额外的对话框元素允许我们将所有内容编译并打包成一个有效的.apk,准备在 Android Market 上发布。

使用 FDT 时编译应用程序

将项目编译为 Android 发布版本的.apk文件是在 Android Market 或其他渠道发布应用程序之前的最后一步。根据使用的工具不同,有许多方法可以做到这一点。在这个食谱中,我们将讨论在使用 Powerflasher FDT 编译和打包应用程序时可用的三种流行方法。

如何操作…

在撰写本文时,FDT 不支持直接与 Android 的 AIR 一起工作。然而,FDT 用户可以通过三种主要方法编译他们的项目以进行 Android 分发。

使用移动项目模板

FDT 社区制作了许多支持 Android 的 AIR 移动项目模板。这些模板适用于所有 FDT 项目使用的新模板系统,并为工作流程添加不同级别的功能。其中大多数还包括 ANT 脚本,使用 AIR 开发者工具编译.apk

使用 ANT

迄今为止,这是编译 Android 项目最灵活的方法,因为它实际上与 IDE 无关,任何人都可以使用。ANT 随 FDT 的标准安装一起打包,网上社区有许多启动脚本可以部署 Android 的 AIR。若要开始使用 FDT 中的 ANT,请查看fdt.powerflasher.com/docs/FDT_Ant_Tasks

通过 CLI 使用 ADT

最基本的方法是直接使用 FDT 开发一个移动项目,然后通过命令行界面使用 AIR 开发者工具将其打包成.apk。下一个食谱将详细介绍如何实现这一过程。

工作原理…

无论选择哪种方法,目标都是相同的——编译和打包所有内容到一个有效的 .apk,准备在 Android Market 上分发。FDT 的一个优点是它不限制开发者只能用一种特定的方式做事。在为 Android 生成发布版本时,我们有多种选择。

使用 AIR 开发者工具编译应用程序

将项目编译为 Android 发布版本 .apk 文件是分发应用程序到 Android Market 或其他渠道之前的最后一步。根据使用的工具不同,有许多方法可以做到这一点。在本教程中,我们将使用 AIR 开发者工具 (ADT) 命令行实用程序来编译和打包我们的应用程序。

如何操作…

要使用 ADT 命令行工具从移动 AIR 项目编译 .apk,我们将执行以下步骤:

  1. 在此示例中,我们将假定以下内容:

    • 证书: android.p12

    • 期望的 APK: mobileAIR.apk

    • AIR 描述符: mobileAIR\src\mobileAIR-app.xml

    • SWF 文件: mobileAIR\src\mobileAIR.swf

  2. 打开命令提示符或终端(取决于操作系统),输入命令字符串以生成我们的证书。在这种情况下,我们将目标类型设置为 .apk 以进行发布构建。我们也可以将其设置为 apk-debug 以进行调试构建,或者设置为 apk-emulator 以在模拟器上安装:

    -package -target apk -storetype pkcs12 -keystore android.p12
    mobileAIR.apkmobileAIR\src\mobileAIR-app.xml mobileAIR\src\
    mobileAIR.swf
    
    
  3. 其他文件,如资源或图标,可以在 .swf 条目之后包含,用空白分隔:

    -package -target apk -storetype pkcs12 -keystore android.p12
    mobileAIR.apkmobileAIR\src\mobileAIR-app.xml mobileAIR\src\
    mobileAIR.swf mobileAIR\src\assets\icon_32.pngmobileAIR\src\
    assets\icon_36.pngmobileAIR\src\assets\icon_72.png
    
    
  4. 现在 ADT 实用程序将处理该命令并完成 .apk 编译过程。如果我们的命令有问题,ADT 将在这里打印错误信息,让我们知道出了问题。通常,如果出现问题,可能是 AIR 描述符文件有问题,或者预期输入文件的路径不正确。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_23.jpg

  5. 现在,我们可以浏览到命令字符串中指定的结果位置,找到我们新创建的 .apk 文件,该文件可以直接安装在 Android 设备上,也可以通过 Android Market 进行分发:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_24.jpg

现在我们已经拥有一个完全编译、有效签名的 .apk 文件,准备进行分发。

工作原理…

假设我们已经正确配置了我们的应用程序,ADT 将为我们编译、签名并打包所有的项目文件到一个 .apk 中。ADT 有许多不同的实用程序和配置选项,可以对项目执行许多操作。请查看 help.adobe.com/en_US/air/build/ 并在菜单中选择 AIR 开发者工具 (ADT) 以获取完整文档。

另请参阅…

要了解如何在特定环境中配置 ADT,请查看第一章,准备使用 Android:开发环境和项目设置

将应用程序提交到 Android 市场

Google 使注册成为 Android 开发者和在 Android 市场上发布应用程序变得非常容易。这个指南将详细说明在编译完成.apk之后进行这些操作的必要步骤。

准备就绪…

在开发者能够向 Android 市场提交任何内容之前,必须创建一个开发者账户。这个过程可以在几分钟内完成,既简单又实惠。

要注册成为 Android 开发者:

  1. 使用网络浏览器,前往 market.android.com/publish/signup

  2. 使用您的 Google 账户登录(或创建新账户)。

  3. 填写注册表单并支付一次性的 25 美元设置费用。

  4. 恭喜您成为 Android 开发者!

如何操作…

  1. 1 将编译并签名的.apk文件上传到 Android 市场,以供全球分发。

  2. 使用您的 Android 开发者凭据在market.android.com/publish/登录 Android 市场。

  3. 点击右下角标有**上传应用程序:**的按钮https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_25.jpg

  4. 现在展现给我们的是一个相当长的表单,它允许我们包含有关我们应用程序的各种信息。我们可以对应用程序进行分类,添加描述性和促销文本,更新发行说明,并选择是否向用户收费或允许免费下载。如果我们决定要求付费,我们必须首先通过此页面上提供的链接建立 Google 商家账户。

  5. 除了文本条目和其他输入选择外,我们还有机会上传各种图片,这些图片将代表我们的应用程序在 Android 市场中的形象。具体的图片属性在此表单中有详细说明:https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_26.jpg

  6. 在此页底部有三个按钮。我们可以点击保存以保存我们的应用程序资料以供以后编辑。点击删除按钮,将允许我们从 Android 市场完全移除一个应用程序。要发布我们的应用程序,我们将点击发布按钮。

注意

一旦发布应用程序,此按钮将显示为取消发布,如果用户已安装应用程序,则删除按钮将不再作为选项出现。

https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_27.jpg

应用程序现在已发布到 Android 市场,可供全球数百万用户使用。

工作原理…

将应用程序上传并发布到 Android 市场,将允许用户下载并安装应用程序。我们对应用程序描述、版本信息以及相关图像资产拥有完全控制权。我们还能够从开发者区域跟踪评分和评论,并在必要时管理商家账户。发布到 Android 市场是即时的。没有像其他应用程序市场那样的审批和拒绝过程。

还有更多…

将应用程序更新到新版本比设置一个全新的应用程序简单得多:

  1. 一旦进入安卓市场,点击现有应用程序的名称。这将允许你编辑与其相关的任何图片或文本。

  2. 要实际发布应用程序的新版本,我们必须点击[上传升级]的链接。这将导致出现一组新的表单控件。https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/flash-dev-andr-cb/img/1420_11_28.jpg

  3. 点击选择文件并浏览新的.apk文件。现在点击上传将文件提交到谷歌服务器。

  4. 新文件将被解析以获取版本信息并验证内容是否有效。对版本号、应用图标、请求的权限等所做的任何更改都将在草稿中反映出来。

  5. 应用描述文件中定义的版本号必须高于之前提交的版本,以便进行有效的升级。如果需要,我们还可以在此页面对一般应用信息进行额外编辑。点击页面底部的发布,新版本将立即在安卓市场可用。

您可能感兴趣的与本文相关的镜像

Wan2.2-I2V-A14B

Wan2.2-I2V-A14B

图生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值