Aros/平台/在 Android 上安装
- 2011 年 Sonic Amiga 几乎完成了 Android 主机 AROS 的移植 - 显示屏 100% 正确(您看到背景和正确的 alpha 通道),触摸屏输入也有效。只是非常慢。Java 部分正在优化。发布于:2011/8/18 11:17
- 2012 年开发放缓
- 2014 年完成了一些进一步的工作
Android 主机移植是一个正在进行的新开发。它不模拟 CPU。AROS 作为 Linux 内核之上的一个独立进程启动,将 JVM 放在一边。Java 侧运行一个简单的类似 X11 的服务器,AROS 与其通信并用于显示。因此它是 ARM AROS。Android 操作系统可以被视为 Linux 的一个子集,因此此移植的功能与通用 UNIX 主机移植的功能相同。
这是 Google Android 主机移植的 AROS。Android 是 Linux 系统的一个子集,因此此移植的许多功能与通用 Linux 主机移植的功能相同。支持 ARM 和 i386 架构,但仅测试了 ARM。
最低要求的 Android 版本是 2.2(API 级别 8)。
下载
- 适用于 android-arm 的最新官方构建或 [i386] 版本
- 最新 AROS-20141011-android-arm-system.tar.bz2 非官方构建,
[Git 存储库],Aros 源代码和其他资源在这里
目前存在一些小问题,但正在解决。需要进行密集开发才能消除这些限制。
无法激活键盘 - 即没有虚拟键盘,一个完全有效的虚拟键盘,向 input.device 提供按键。或者即使是 HIDD 子系统(最底层的东东)。此商品需要一些好的方法来隐藏和显示自身。并且在没有键盘的机器上缺少键。菜单已经被菜单占用;Home 保留给主机操作系统,Back 目前发送 Lamiga+M(只有 Intuition 还不支持它 - 没有时间修复)。好吧,在一些机器上像 Nexus One。能够添加一些东西到屏幕栏会很好。这样就可以添加更多小工具,例如打开菜单或虚拟键盘,这些小工具始终可用。考虑到未来的 iOS 移植,这一点尤其重要 - 苹果机器根本没有可用的键。然后,Zune 可以扩展为与虚拟键盘交互并在字符串小工具激活时自动弹出它。
故意不支持会导致使用 Android 自己的虚拟键盘的 kludges。AROS 不是模拟器,它本身是一个操作系统,它应该包含对这些东西的自身支持,与它运行在什么上面无关。请记住,总有一天 AROS 将原生运行在这些设备上。
同样的原因也阻止 AROS 支持自动旋转屏幕。AROS 用户界面库目前没有屏幕旋转的概念,目前尚不清楚如何实现它(但并非不可能)。
右键已被禁用
请注意,在 NexusOne 手机上发现的轨迹球质量很差。AROS 支持它作为鼠标,但即使您打开加速,光标速度也会非常慢。这是轨迹球本身的一个特性,无法通过软件修复。Android 操作系统使用它来模拟键盘,而不是作为鼠标。也许 AROS 也应该这样做,这是进一步开发的主题。
缺乏移植到 arm 的软件,应该是一个重新编译的问题。虽然我不知道它们的依赖项和对 android 的支持(如果有的话)。由于开发人员缺乏,它也不是优先事项。他们中的大多数一直在不断改进 AROS 本身,而不是移植软件。
http://photo.qip.ru/users/sonicamiga/3814258/94190382/full_image/
为了将 AROS 安装到您的 Android 设备,请执行以下操作
- 解压存档。
- 在存档中,您将看到一个 AROS 目录。将它的所有内容复制到 SD 卡(或您的设备使用的任何其他可移动媒体)。
- 在您的设备中安装提供的 AROSBootstrap.apk。
请注意,最低要求的 Android 版本是 2.2。
为了在您的 Android 设备上安装 AROS,您需要
- Copy 'AROS' directory with all its contents to the root of your SD card (or whatever else external storage). - Instal AROSBootstrap.apk like any other application.
对此没有特别的要求。运行 'AROS' 应用程序并尽情享受。请注意,AROS 最初是作为桌面操作系统开发的。Android 主机移植是第一个在移动设备上运行的完成的移植。因此,AROS 缺乏许多可以使其成为移动系统的功能。首先,AROS 缺乏虚拟键盘。其次,用户界面没有针对手指和/或键盘的操作进行优化。如果您的设备有键盘,AROS 将支持它,但尚未测试。大多数 Android 设备上的 '菜单' 键模拟右键,'后退' 键模拟 LAmiga+M 序列(屏幕切换)。
为了更舒适地使用,您可以执行以下操作
- Turn on 'Sticky menus' option in IControl preferences. - Enable popup system menus. - Set larger fonts for user interface, to increase the size of controls.
由于 Android 操作系统没有命令行,因此您无法在没有外部工具的情况下实时查看调试输出。但是,您可以使用引导程序自己的功能将它重定向到文件。为此,您需要编辑 AROS/boot/AROSBootstrap.conf 文件并在其中添加 'logfile <file_pathname>' 选项。
以类似的方式,您可以使用 AROSBootstrap.conf 中的“arguments <your-options>”选项传递命令行选项。
它会记住它运行时的方向。因此,如果您将设备保持在横向模式,您将获得横向模式,直到您关闭(重启,冷重启和热重启都会保持方向)。我有一些想法,如何在 ScreenMode 偏好设置程序中将两种方向实现为两种不同的屏幕模式,这样您就可以使用它们在两种方向之间切换,还可以指定不同的程序(支持自己的屏幕)来使用不同的方向。但我现在没有时间,正在完成通用软件屏幕拖动实现(也将在 Android 上运行)。完成后,我会回到 Android 主机显示。目前不支持在运行的 AROS 上旋转设备,因为 AmigaOS 以前不知道旋转显示屏。因此,软件无法动态旋转。这并非完全不可能,只是需要从头开始开发一些 Zune/Intuition 扩展。之前没有人曾在移动设备上运行过 Amiga 家族操作系统。
但是,实际上可以在横向和纵向模式下运行 AROS。这两种方向都可以在 ScreenMode 偏好设置程序中作为不同的显示模式使用。
请报告您的键盘体验。一些键可能丢失(尤其是 LAmiga/RAmiga),因此按键码表是根据文档盲目键入的。因此,您关于改进键映射的所有建议都是受欢迎的。
Android 操作系统目前支持 i386 和 ARM 处理器。AROS 可以为这两种架构构建,但目前只有 ARM 构建投入生产。i386 版本没有经过测试,因为没有可用的测试环境。
绝大多数现代 ARM 设备都具有 ARMv6 或更好的处理器,带有 VFP 浮点运算单元。此配置是目前运行 AROS 的最低要求。但是,一些 Android 设备曾经在市场上销售,其处理器低于此要求,通常在 2011 年左右。已知的无法正常工作的处理器是
- Qualcomm MSM7225(ARMv6 但根本没有 VFP)
- VIA 8650(ARMv5)
这是一个关于各种硬件和 Android 操作系统版本的测试结果列表。
设备名称 | CPU 核心 | Android 操作系统版本 | Linux 内核版本 | AROS 测试版本 | 测试结果 |
---|---|---|---|---|---|
Ainol NOVO7 Aurora 2 | 1.5 GHz ARM Cortex A9 双核 Amlogic AML8726-M6 |
4.0.3 (ICS) | 黑屏,系统在启动时挂起 | ||
Archos 70 | 1 GHz ARM Cortex A8 (TI OMAP3630) |
2.2.1 (Froyo) | 运行良好。已知 CacheClearU() 会触发主机系统重置(特定于硬件的故障) | ||
Google Nexus One (HTC Passion) |
1 GHz ARM Cortex A8 (Qualcomm Scorpion) |
2.3.4 Build GRj22 | 2.6.35.7 59463-g52630a3 | 运行良好 | |
HTC Desire | 1 GHz Qualcomm Snapdragon (QSD8250) | 2.2 (Froyo) | 2.6.32.15 | 运行良好 | |
HTC Evo Shift 4G | 800 MHz Qualcomm Snapdragon S1 (MSM7630) | 2.2 (Froyo) | 2.6.32.17 gee557fd | 运行良好 | |
HTC Sensation | 2011 1,2 GHz Qualcomm Scorpion S3 双核 |
2.3.3 (Gingerbread, HTC Sense 3.0) |
在 DEVS:DOSDrivers 处理期间,C:Mount 出现错误 | ||
HTC Wildfire A3333 | 525 MHz Qualcomm Snapdragon S1 (MSM7225) | 2.2.1 (Froyo) | 2.6.32.21 g8f75634 htc-kernel | "非法指令" 崩溃。处理器低于 AROS 最低要求。 | |
HTC One XL | 1,5 GHz Qualcomm Snapdragon S4 双核 (MSM8960) | 4.1.1 (Jelly Bean, Viper XL 3.2.3) |
3.4.10 g240d4d5 root@abm033#1 SMP PREEMPT | 运行良好 | |
LG Optimus Black | 1 GHz ARM Cortex A8 (TI OMAP3630) |
2.2.2 (Froyo) | 2.6.32.9 | 运行良好 | |
LG Optimus One (P500) | 600 MHz Qualcomm ARM1136EJ-S | 2.2.2 (Froyo) | 运行良好 | ||
LG Optimus Speed | 1 GHz ARM Cortex A9 双核 (AP20H) |
2.2.2 (Froyo) | 2.6.32.9 dirty | 黑屏,系统在启动时挂起 | |
RoverPad 3W T71D | 1 GHz ARM Cortex A8 (Allwinner Boxchip A10) |
4.0.3 (ICS) | 3.0.8+ (inet_hxj @InetSoftware) (gcc version 4.5.1 (Sourcery G++ Lite 2010.09-50) ) # 106 PREEMPT | 运行良好 | |
Samsung Galaxy S | 1 GHz ARM Cortex A8 (TI OMAP3630) |
2.3.3 (Gingerbread) | 2.6.35.7 | 运行良好 | |
Samsung Galaxy Tab 2 | 1 GHz ARM Cortex A9 双核 (TI OMAP4430) |
4.0.3 (ICS) | 3.0.8 | 运行良好(但显然不是完全无崩溃的) | |
Samsung Nexus S | 1 GHz ARM Cortex A8 (TI OMAP3630) |
2.3.4 Build GRj22 | 2.6.35-7 ge382d80 | 运行良好 | |
Sony Tablet S | 1 GHz ARM Cortex A9 双核 (AP20H) |
3.2 (Honeycomb) | 2.6.36.3 | 运行良好 | |
Sony Ericsson XPeria X10 Mini Pro | 600 MHz Qualcomm Snapdragon S1 (MSM7227) | 2.1 (Eclair) | 运行良好,键盘需要特定的键映射 | ||
VIA 8650 | 2.2 (Froyo) | "非法指令" 崩溃。处理器低于 AROS 最低要求。 | |||
Motorola Droid Turbo | Snapdragon 805 四核 2.65Ghz |
6.0.1 | AROS-20141011 | 运行良好 - 但容易崩溃 设备上没有 SD 卡插槽,安装到内部存储器 | |
错误修复状态
- LG(以及可能的其他双核设备):尚未在所有双核设备上确认该问题。2011 年 10 月,在 AROS 构建过程中使用的图标生成工具中发现了一个错误,导致图标工具类型被破坏。损坏的图标会导致系统范围的内存破坏,这可能是导致此问题的原因。图标生成器已修复,但没有测试报告。
- HTC Sensation:安装问题(当系统复制到手机的闪存时,MacOS X 创建了伴随的点下划线文件。该问题已在 2011 年 09 月 11 日后被复制和解决,但尚未确认)。
编译 / 构建
[edit | edit source]为了编译 Android 托管的 AROS,你需要
- A usual prerequisites for building AROS (GNU/UNIX-compatible environment). If you are running Windows, MinGW (MSYS) is the recommended one. Cygwin is much slower, and it will unlikely work with Android NDK because gcc versions supplied with modern Android NDK are MinGW-hosted, not Cygwin. Don't be confused by the fact that NDK's own build system is claimed to require Cygwin. AROS doesn't use this build system, it uses only gcc compiler, includes and link libraries from the NDK. NDK build system, when used, translates paths from UNIX to Windows style for the gcc; AROS build system won't do the same under Cygwin. If running Cygwin, it assumes all tools are Cygwin-hosted. It's possible to build Android-targetted gcc for Cygwin, but this was never tested. At the moment Cygwin is generally deprecated for building AROS, and Cygwin-related portions in the configure script are poorly maintained.
注意:MinGW 项目在其网站上不提供 netpbm 包。它可以在另一个项目 GNUWin32 中找到。GNUWin32 端口与 MinGW 端口完美协作。
- ARM AROS-targeted crosscompiler. At the moment only MacOS X/x86-64 version can be found on AROS Archives as binary distribution. You have to build own AROS toolchain if running another system. The process is straightforward and explained in README files for gcc and collect-aros. Please feel free to release your built toolchains on AROS Archives in order to assist other developers.
注意,即使使用包装器脚本,也不能使用针对 Android 的 gcc 来构建 AROS 二进制文件。Android ABI 与 AROS ABI 不完全兼容。
- Android SDK (Java one). The new build was successfully tested with SDK r10 on MacOS X v10.6.8 (x86-64). During early development stages SDK v1.6r1 was used under Windows. In fact any SDK version should work.
- Android NDK (Native Development Kit). Versions beginning with r5 are known to be supported. Earlier versions are not expected to work, because directory tree structure was changed. Android NDK has an option to generate a "standalone" version of Android toolchain. For AROS this is options. AROS build system is expected to support such toolchains, but this was not tested.
- Apache Ant or Eclipse. These are optional, however without them you won't be able to build Java application containing the bootstrap. For automated builds (e. g. nightly build) Ant is mandatory.
配置脚本需要以下附加参数来设置 Android 托管的构建
--target=linux-<cpu> - Android is a subset of Linux architecture
--enable-target-variant=android - This actually tells to set up Android-hosted build
--with-sdk=<path> - Specifies location of installed Android SDK.
此参数目前根本无法省略。它有一些默认值,但不太可能适合你的机器,因为 SDK 本身没有建议任何特定的默认位置。
--with-ndk=<path> - Specifies location of installed Android NDK.
如果你省略了它,AROS 构建系统将期望使用安装在你的 $PATH 中的独立工具链。
--with-gcc-version=<number> -
如果你没有使用从 NDK 生成的独立 Android 工具链,你必须指定它。否则,AROS 将无法在其中找到 gcc。NDK r5 和 r6 都随版本 4.4.3 提供。如果这在将来发生变化,你可以轻松检查你的 NDK 中包含哪个 gcc 版本。只需查看 "toolchains" 子目录。
--with-sdk-version=<number> - The value of this parameter is Android API level number (not OS version).
它指定要在 SDK 中使用的平台版本。当前最低 SDK API 级别为 12。请不要将其与运行 AROS 所需的最低 API 版本混淆,这两者是不同的。Java 代码使用从 v12 API 开始才声明的一些方法,但如果缺少这些方法,它仍然可以正常工作。高 SDK 版本仅用于编译此代码。你可以通过检查其 'platforms' 子目录,轻松查看你的 SDK 支持哪些平台版本。
--with-ndk-version=<number> - Similar to --with-sdk-version, but specifies API level for the NDK.
这与 SDK 不同,因为:a) SDK 不包含 NDK 中包含的所有级别;b) AROS 显示驱动程序需要来自 API 级别 9 的一些包含项(尽管 AROS 在级别 8 上运行)。此参数默认为 9,如果在某些时候从 NDK 中删除了较旧的 API 级别,则需要它。
Android 文档指出,APK 必须签名才能让系统允许安装它们。AROS 构建系统被设置为使用位于 $HOME/.android/AROS.keystore 中的 "AROS" 密钥对构建的应用程序进行签名。如果你第一次设置构建,你需要创建此密钥。为此,你需要使用 JDK 提供的 "keytool" 实用程序
keytool -genkey -keystore ~/.android/AROS.keystore -alias AROS -validity 366000
不幸的是,证书必须有有效期。在本例中,我们将它设置为超过 1000 年(为简单起见,我们每年的天数都按 366 天计算)。时间越长越好。AROS 不会消失!:)
执行完此命令后,keytool 将要求你提供个人信息。建议你正确填写这些信息,这有助于识别构建的来源。当 keytool 要求你输入密钥密码时,请使用 "aros.org"。此密码在 Java 项目的 build.properties 文件中指定,这允许 ant 全自动操作,并且不会每次都要求你输入密码。这对于自动化(例如,夜间)构建特别有用。
请记住,AROS 是一个开放项目!它不遵循任何阴谋。每个人都可以进行构建并发布它们。此密钥存在的唯一原因是 Android 强制要求它。它既不打算用于某些私有身份验证,也不用于对最终用户施加某些限制。这就是密钥密码在 SVN 树中公开存储的原因。可以调整构建系统以使用任意系统特定的密钥和密码,但这出于简单性考虑而没有这样做。
构建 Android 托管端口(softfp)的配置参数
./configure --host=i686-pc-linux-gnu --target=linux-arm --enable-target-variant=android --with-apk-version=debug --enable-build-type=personal --with-sdk=~/android-sdk-linux --with-ndk=~/android-ndk-r10d --with-sdk-version=22 --with-ndk-version=9
hardfp
将来可以构建 pelya 的基于 SDL-lib 的 AROS Android 端口,该端口具有音频、互联网以及用于显示/隐藏 Android 键盘的额外控制,以及针对鼠标右键的自定义设置
部分代码会导致错误,必须从源代码中删除才能成功编译
AROS-20150908-source/arch/all-linux/kernel/cpu_arm.h:41:8: error: redefinition of ‘struct ucontext’
#ifdef HOST_OS_android /* * Android NDK doesn't have some necessary includes. * Linux kernel is Linux kernel, I hope they won't break binary compatibility, * so it's okay to define this structure here. */ #include <asm/sigcontext.h> struct ucontext { unsigned long uc_flags; struct ucontext *uc_link; stack_t uc_stack; struct sigcontext uc_mcontext; sigset_t uc_sigmask; int reserved[32 - (sizeof (sigset_t) / sizeof (int))]; unsigned long uc_regspace[128] __attribute__((__aligned__(8))); }; #else ... #endif
Dopus5 通过 Windows 托管的 AROS ABIv0 运行良好。问题仅与 Android 托管的 AROS 相关
ABIv1 在 Android 上已损坏。它在构建时请求 x11 和 glx。
参考资料
[edit | edit source]Android 对原生代码来说是一个非常恶劣的环境。所有 Android 应用程序都在 Java VM 中运行。它将 UNIX 信号用于自身目的,与 AROS 多任务处理冲突。这使得 AROS 无法直接在应用程序的上下文中运行。在早期端口开发期间已得到证实。无法关闭 Java 环境。
为了解决此限制,AROS 在其自己的进程中异步运行。与 Android 操作系统的通信使用客户端-服务器架构实现。在通过 fork() 运行 AROS 之前,引导程序会创建两个管道(参见 Kick() 方法实现)。这些管道用作与用 Java 编写的显示服务器之间的通信通道。AROS 显示驱动程序将操作命令发送到服务器,并从服务器获取输入事件。这是 AROS 与 Android API(除 Linux 内核和其上的 C 库之外)通信的唯一方式。目前尚不清楚在这种情况下是否可以从 AROS 中调用 Android GL API。
因此,请尽量减少与 Java 的通信。为了防止不同步,所有命令都由显示服务器按到达的顺序进行处理。为了满足这一点,Java 显示服务器线程将所有命令转发到主用户界面线程,在那里它们被处理并回复。这样的架构对 AROS 的整体性能有非常负面的影响,尤其是在命令需要回复时,最好避免使用它。无法删除单独的显示服务器线程,因为 Java API 缺乏可以与 Android 用户界面处理一起使用的异步 I/O 功能。
幸运的是,Android 的底层(内核和 C 库)不受任何限制,至少基本系统服务(文件访问、时间、信号等)可以被 AROS 自由使用。如果有人想尝试一下,例如,为 AROS 提供加速度计支持,首选方法是使用 /dev 目录直接与设备接口。
如果您使用通信管道进行代码操作,请记住一般规则:任何一方的管道错误都应该导致进程立即退出。如果其中一个进程退出,管道可能会被破坏。在这种情况下,如果用户界面退出,而 AROS 未能注意到这一点,您最终将无限制地运行 AROS 进程,而无法对其进行控制。即使在非 root 设备上也无法使用 kill 命令,因此唯一摆脱此类进程(耗尽电池和系统资源)的方法是完全重启设备。请尽一切努力避免这种情况!
在 Android 设备上运行托管 AROS 的另一种方法是完全关闭 Java 环境并接管设备。AROS 将需要一个 Linux 帧缓冲区显示器和原始硬件输入驱动程序。这些驱动程序的非常旧的源代码正在慢慢地重新修改。这种方法的唯一缺点是手机将停止服务。然后 AROS 需要自己处理它。此外,它需要一个 root 设备。
将以下内容添加到 AROSBootstrap.conf 文件中
logfile AROS.log arguments sysdebug=all
然后运行。重启后,您应该在您的 AROS 目录中获得 AROS.log 文件。
将 ALogcat 程序安装到您的机器上,运行它,然后运行 AROS。当一切停止时,ALogcat 应该显示一些日志。将该日志发给我。顺便说一下,我需要确切的错误消息,“类似这样的”对我没有帮助。
改进的软件故障请求器。首先,现在它在小屏幕上正确显示按钮。其次,在您按下“更多”后,会出现“日志”按钮。按下它,整个崩溃日志将被转储到调试输出。
对于 Java 部分,AROS 构建系统创建了一个完整的 Eclipse 项目。它位于 $(TOP)/bin/linux-$(CPU)-android/gen/arch/all-android/bootstrap/app 中。您可以将其导入到 Eclipse 工作空间中并像往常一样使用它。在 UNIX 系统上,该项目将包含指向原始目录的符号链接,因此在 Eclipse 中修改的文件将保留在它们原来的位置。不幸的是,在 Windows 上这是不可能的,目录将被复制而不是创建符号链接(除非 MinGW 实现了对 XP 后版本的符号链接的支持)。因此,如果您在那里修改了一些东西,您需要将您的更改复制回 SVN 树。理论上可以通过修改项目中的 Java 构建路径来解决这个问题。
来自 AROS 本身的调试输出被复制到 Android 调试缓冲区。您可以像往常一样使用 Android Shell 中的“logcat”命令来读取它。您还可以使用 AROSBootstrap.conf 中的“logfile”选项将输出保存到文件,就像在任何其他托管端口中一样。
Androd NDK 文档描述了一种将 gdb 附加到设备上的进程的方法。这没有在 AROS 上测试,但预计可以正常工作。
AROS 预计可以在 Android 模拟器中运行,因为它是一个完整的 ARM 机器模拟器,而不是像 iOS 或 Symbian 模拟器这样的托管环境。由于以下原因未经测试:a) SD 卡镜像创建过程复杂;b) 即使在非常快的计算机上,模拟器的整体速度也很慢。在开发过程中使用真正的硬件要快得多也更容易。
在我的 Galaxy S3 上运行 AROS-20120905-android-arm-system.tar.bz2,但我得到了程序失败的提示。
Task : 0x5C27F5A0 - Boot Mount Error : 0xB0000000 - unknown bootstrap error ...
我尝试在 bootstrap.conf 中使用 logfile 参数,它显示
[AGFX] DisplayPipe 59 InputPipe 60 [AGFX] Init OK AGFX::New() [AGFX] Display size: 1280x720, Titlebar size: 100, Orientation: 2 AGFX::New(): Got object from super Exit AGFXGfx::New=5c26174 [AGFX] Show(0x5c2ac154) [AGFX.server] Error condition on input pipe
这是一个不好的版本还是与我的新手机不兼容?=)
这款手机运行的是 Android 4.0.4(如果这很重要的话,没有 root 权限)
Android 不需要 root 权限。当我上次检查这个版本时,它是有效的。但我现在无法维护这个端口,因为我没有能够运行 Android 的设备。
从日志中看起来,AROS 显示驱动程序与 Android 部分的通信存在一些问题。你可能安装了旧版本,没有更新 bootstrap?实际上,bootstrap 和显示驱动程序(位于 BSP 中)的版本应该匹配。如果它们不同,可能会发生各种事情。
不仅是 bootstrap,还有用 Java 编写的显示服务器。如果我在显示驱动程序中更改了一些重要内容,我需要更新服务器。
请使用 OTG 线缆并从 USB 存储棒中获取文件 =)
复制存档内容会导致错误消息,因为存档中存在符号链接,而 FAT 不支持它们。例如:AROS/Development/lib/libm.a 是指向 libarosm.a 的符号链接。附注:关于这些符号链接:只需忽略它们,这实际上是 SDK,您不需要它来运行 AROS。
ZIP 是否更适合这个包?使用 ZIP 可能会摆脱符号链接。ZIP 将不可逆转地覆盖某些语言环境的 UTF8 文件名
Resident modules (addr: pri flags version name): + 48f33648: 127 02 3 "kernel.resource" + 48f383e4: 125 02 3 "hostlib.resource" + 48f340e8: 120 01 45 "exec.library" + 48f373a8: 110 82 41 "expansion.library" + 48fd9adc: 103 81 41 "utility.library" + 48fd4f9c: 102 81 1 "debug.library" + 48fd4e9c: 101 81 41 "aros.library" + 48fdb920: 100 01 41 "bootloader.resource" + 48f384a4: 99 01 2 "processor.resource" + 48fd9758: 94 81 42 "oop.library" + 48fda6ec: 92 81 1 "hiddclass.hidd" + 48f378c0: 91 81 43 "unixio.hidd" + 48fdfb2c: 80 01 1 "FileSystem.resource" + 48f3827c: 70 81 41 "battclock.resource" + 48fdad44: 66 81 1 "graphics.hidd" + 48fd6498: 65 81 41 "graphics.library" + 48fd92cc: 60 81 50 "layers.library" + 48f37704: 50 81 41 "timer.device" + 48fdb594: 45 81 1 "keyboard.hidd" + 48fdb76c: 45 81 1 "mouse.hidd" + 48fda3e4: 44 81 41 "gameport.device" + 48fda55c: 44 81 41 "keyboard.device" + 48fd8cb0: 40 81 41 "keymap.library" + 48fda1f4: 30 81 41 "input.device" + 48fd7a54: 15 81 50 "intuition.library" + 48f37c50: 9 81 42 "androidgfx.hidd" + 48fd9cac: 4 81 41 "console.device" + 48f33ae0: -1 01 42 "emul-handler" + 48fdba2c: -50 01 41 "dosboot.resource" + 48fd536c: -120 00 50 "dos.library" + 48fdf7dc: -120 04 41 "DOSBoot cleanup" + 48fdfbf8: -123 04 41 "lddemon.resource" + 48fd48b8: -124 04 41 "con-handler" + 48fd47d4: -125 04 1 "amber-ram-handler" [Init] Post-kernel init [Init] Memory page size: 4096 [InitResident] InitResident end 0x48F33648 ("kernel.resource"), result 0x48FF5044 [InitCode] calling InitResident (125 02 "hostlib.resource") [InitResident] InitResident begin 0x48F383E4 ("hostlib.resource") [InitResident] Initresident !RTF_AUTOINIT [CreateLibrary] MakeFunctions(0x48FF52F0, 0x48F383C0, 0x00000000) [CreateLibrary] Created 36 vectors [InitResident] InitResident end 0x48F383E4 ("hostlib.resource"), result 0x48FF52F0 [InitCode] calling InitResident (110 82 "expansion.library") [InitResident] InitResident begin 0x48F373A8 ("expansion.library") [InitResident] Initresident RTF_AUTOINIT [CreateLibrary] MakeLibrary: functions table at 0x48F37450, data size is 184 [CreateLibrary] Table contains 27 absolute pointers [CreateLibrary] Allocated vector table at 0x48FF5340, size is 112 [CreateLibrary] MakeFunctions(0x48FF53B0, 0x48F37450, 0x00000000) [CreateLibrary] Created 112 vectors [CreateLibrary] Created library 0x48FF53B0 [InitResident] InitResident end 0x48F373A8 ("expansion.library"), result 0x48FF53B0 [InitCode] leave InitCode(0x02, 0) [InitCode] enter InitCode(0x01, 0) [InitCode] kickmemptr=0x00000000 kicktagptr=0x00000000 kickchecksum=0x00000000 [InitCode] calling InitResident (120 01 "exec.library") [InitResident] InitResident begin 0x48F340E8 ("exec.library") [InitResident] Initresident !RTF_AUTOINIT [Init] exec.library init [AddTask] NewCreateTaskA: name __RemTask_Cleaner__ [AddTask] NewAddTask (0x48FF5B20 ("__RemTask_Cleaner__"), 0x48F26860, 0x48F20AA0) [AddTask] NewAddTask MemEntry head: 0x48FF5AE0 [AddTask] NewAddTask: SPLower: 0x48FF5B80 SPUpper: 0x48FFFB80 SP: 0x48FFFB80 [AddTask] Added task 0x48FF5B20 [RemTask] __RemTa[RemTask] remtaskcleaner RemTaskPort created
以下是来自 Alogcat 的另一条日志
I/INKSPOT ( 1307): ContentResolver.registerContentObserver : android.database.AbstractCursor$SelfContentObserver@46e35628, uri : content://com.lge.provider.appMenuInfos/app_child_infos?notify=true I/AllAppsWorkspace( 1307): notificationExecute():packageName=org.aros.bootstrap, className=org.aros.bootstrap.OrientationDetector I/AllAppsWorkspace( 1307): FIND packageName=org.aros.bootstrap D/Launcher( 1307): onSaveInstanceState D/Launcher( 1307): ==== Launcher onPause====== I/AllAppsWorkspace( 1307): onPause() D/DragLayer( 1307): endDrag() D/Launcher( 1307): Ori_Sensor_on_off _SENSOR_OFF D/dalvikvm(16575): Trying to load lib /data/data/org.aros.bootstrap/lib/libAROSBootstrap.so 0x46cac658 D/dalvikvm(16575): Added shared lib /data/data/org.aros.bootstrap/lib/libAROSBootstrap.so 0x46cac658 D/dalvikvm(16575): No JNI_OnLoad found in /data/data/org.aros.bootstrap/lib/libAROSBootstrap.so 0x46cac658, skipping init D/AROS (16575): Started D/AROS.UI (16575): Orientation set to 1 D/AROS.UI (16575): Activity created V/OMXPlayer( 1031): worker before pause call = 0x711e0 D/AROS.UI (16575): Screen size set: 480x724 D/AROS (16575): Loading AROS, root path: /mnt/sdcard/AROS D/AROS (16575): [ELF Loader] Calculating kickstart size... D/AROS (16575): [ELF Loader] Code 895163 bytes, data 3064 bytes, BSS array 24 bytes D/AROS (16575): [ELF Loader] Loading kickstart... D/AROS (16575): [ELF Loader] Code 0x46b2c000, Data 0x206600, Module aros-bsp-android... D/AROS (16575): [ELF Loader] Code 0x46b51d51, Data 0x206e50, Module aros-base... D/AROS (16575): Starting AROS... D/AROS (16584): Resident modules (addr: pri flags version name): D/AROS (16584): + 46b46648: 127 02 3 "kernel.resource" D/AROS (16584): + 46b4b3e4: 125 02 3 "hostlib.resource" D/AROS (16584): + 46b470e8: 120 01 45 "exec.library" D/AROS (16584): + 46b4a3a8: 110 82 41 "expansion.library" D/AROS (16584): + 46becadc: 103 81 41 "utility.library" D/AROS (16584): + 46be7f9c: 102 81 1 "debug.library" D/AROS (16584): + 46be7e9c: 101 81 41 "aros.library" D/AROS (16584): + 46bee920: 100 01 41 "bootloader.resource" D/AROS (16584): + 46b4b4a4: 99 01 2 "processor.resource" D/AROS (16584): + 46bec758: 94 81 42 "oop.library" D/AROS (16584): + 46bed6ec: 92 81 1 "hiddclass.hidd" D/AROS (16584): + 46b4a8c0: 91 81 43 "unixio.hidd" D/AROS.Server(16575): Display server started D/AROS (16584): + 46bf2b2c: 80 01 1 "FileSystem.resource" D/AROS (16584): + 46b4b27c: 70 81 41 "battclock.resource" D/AROS (16584): + 46bedd44: 66 81 1 "graphics.hidd" D/AROS (16584): + 46be9498: 65 81 41 "graphics.library" I/#LGIME ( 1300): #### onStartInput restarting : false / inputType : 0 V/MediaPlayerService( 1031): disconnect(155) from pid 1300 V/MediaPlayerService( 1031): Client(156) constructor V/MediaPlayerService( 1031): Create new client(156) from pid 1300, fd=35, offset=810707, length=4650 V/MediaPlayerService( 1031): setDataSource fd=35, offset=810707, length=4650 V/MediaPlayerService( 1031): st_dev = 45825 V/MediaPlayerService( 1031): st_mode = 33188 V/MediaPlayerService( 1031): st_uid = 0 V/MediaPlayerService( 1031): st_gid = 0 V/MediaPlayerService( 1031): st_size = 2823849 V/MediaPlayerService( 1031): player type = 3 V/MediaPlayerService( 1031): create VorbisPlayer V/MediaPlayerService( 1031): Client(155) destructor pid = 1300 V/AudioSink( 1031): close V/MediaPlayerService( 1031): disconnect(155) from pid 1300 V/MediaPlayerService( 1031): [156] setAudioStreamType(3) V/MediaPlayerService( 1031): [156] prepareAsync V/MediaPlayerService( 1031): [156] notify (0x176b78, 1, 0, 0) D/AROS (16584): + 46bec2cc: 60 81 50 "layers.library" D/AROS (16584): + 46b4a704: 50 81 41 "timer.device" D/AROS (16584): + 46bee594: 45 81 1 "keyboard.hidd" D/AROS (16584): + 46bee76c: 45 81 1 "mouse.hidd" D/AROS (16584): + 46bed3e4: 44 81 41 "gameport.device" D/AROS (16584): + 46bed55c: 44 81 41 "keyboard.device" D/AROS (16584): + 46bebcb0: 40 81 41 "keymap.library" D/AROS (16584): + 46bed1f4: 30 81 41 "input.device" D/AROS (16584): + 46beaa54: 15 81 50 "intuition.library" D/AROS (16584): + 46b4ac50: 9 81 42 "androidgfx.hidd" D/AROS (16584): + 46beccac: 4 81 41 "console.device" D/AROS (16584): + 46b46ae0: -1 01 42 "emul-handler" D/AROS (16584): + 46beea2c: -50 01 41 "dosboot.resource" D/AROS (16584): + 46be836c: -120 00 50 "dos.library" D/AROS (16584): + 46bf27dc: -120 04 41 "DOSBoot cleanup" D/AROS (16584): + 46bf2bf8: -123 04 41 "lddemon.resource" D/AROS (16584): + 46be78b8: -124 04 41 "con-handler" D/AROS (16584): + 46be77d4: -125 04 1 "amber-ram-handler" D/AROS (16584): [Init] Post-kernel init D/AROS (16584): [Init] Memory page size: 4096 D/AROS (16584): [InitResident] InitResident end 0x46B46648 ("kernel.resource"), result 0x4903A044 D/AROS (16584): [InitCode] calling InitResident (125 02 "hostlib.resource") I/ActivityManager( 1103): Displayed activity org.aros.bootstrap/.PortraitActivity: 182 ms (total 338 ms) D/AROS (16584): [InitResident] InitResident begin 0x46B4B3E4 ("hostlib.resource") D/AROS (16584): [InitResident] Initresident !RTF_AUTOINIT D/AROS (16584): [CreateLibrary] MakeFunctions(0x4903A2F0, 0x46B4B3C0, 0x00000000) D/AROS (16584): [CreateLibrary] Created 36 vectors D/AROS (16584): [InitResident] InitResident end 0x46B4B3E4 ("hostlib.resource"), result 0x4903A2F0 D/AROS (16584): [InitCode] calling InitResident (110 82 "expansion.library") D/AROS (16584): [InitResident] InitResident begin 0x46B4A3A8 ("expansion.library") D/AROS (16584): [InitResident] Initresident RTF_AUTOINIT D/AROS (16584): [CreateLibrary] MakeLibrary: functions table at 0x46B4A450, data size is 184 D/AROS (16584): [CreateLibrary] Table contains 27 absolute pointers D/lifecycle( 1307): onStop:com.lge.launcher.Launcher@46ba4680 I/INKSPOT ( 1307): ContentResolver.unregisterContentObserver : android.database.AbstractCursor$SelfContentObserver@46ba2ee8 I/INKSPOT ( 1307): ContentResolver.unregisterContentObserver : android.database.AbstractCursor$SelfContentObserver@46bd4660 I/INKSPOT ( 1307): ContentResolver.unregisterContentObserver : android.database.AbstractCursor$SelfContentObserver@46e35628 I/INKSPOT ( 1307): ContentResolver.unregisterContentObserver : android.database.AbstractCursor$SelfContentObserver@46c8ff98 D/AROS (16584): [CreateLibrary] Allocated vector table at 0x4903A340, size is 112 D/AROS (16584): [CreateLibrary] MakeFunctions(0x4903A3B0, 0x46B4A450, 0x00000000) D/AROS (16584): [CreateLibrary] Created 112 vectors D/AROS (16584): [CreateLibrary] Created library 0x4903A3B0 D/AROS (16584): [InitResident] InitResident end 0x46B4A3A8 ("expansion.library"), result 0x4903A3B0 D/AROS (16584): [InitCode] leave InitCode(0x02, 0) D/AROS (16584): [InitCode] enter InitCode(0x01, 0) D/AROS (16584): [InitCode] kickmemptr=0x00000000 kicktagptr=0x00000000 kickchecksum=0x00000000 D/AROS (16584): [InitCode] calling InitResident (120 01 "exec.library") D/AROS (16584): [InitResident] InitResident begin 0x46B470E8 ("exec.library") D/AROS (16584): [InitResident] Initresident !RTF_AUTOINIT D/AROS (16584): [Init] exec.library init D/AROS (16584): [AddTask] NewCreateTaskA: name __RemTask_Cleaner__ D/AROS (16584): [AddTask] NewAddTask (0x4903AB20 ("__RemTask_Cleaner__"), 0x46B39860, 0x46B33AA0) D/AROS (16584): [AddTask] NewAddTask MemEntry head: 0x4903AAE0 D/AROS (16584): [AddTask] NewAddTask: SPLower: 0x4903AB80 SPUpper: 0x49044B80 SP: 0x49044B80 D/AROS (16584): [AddTask] Added task 0x4903AB20 D/AROS (16584): [RemTask] __RemTask_Setup cleaner task created D/AROS (16584): [InitResident] InitResident end 0x46B470E8 ("exec.library"), result 0x49039380 D/AROS (16584): [InitCode] calling InitResident (103 81 "utility.library") D/AROS (16584): [InitResident] InitResident begin 0x46BECADC ("utility.library") D/AROS (16584): [InitResident] Initresident RTF_AUTOINIT D/AROS (16584): [CreateLibrary] MakeLibrary: functions table at 0x46BECB80, data size is 116 D/AROS (16584): [CreateLibrary] Table contains 45 absolute pointers D/AROS (16584): [CreateLibrary][RemTask] remtaskcleaner RemTaskPort created