跳轉到內容

Aros/平臺/在 Android 上安裝

來自華夏公益教科書
用於 Aros 華夏公益教科書的導航欄
Aros 使用者
Aros 使用者文件
Aros 使用者常見問題解答
Aros 使用者應用程式
Aros 使用者 DOS Shell
Aros/使用者/AmigaLegacy
Aros 開發文件
Aros 開發者文件
從 AmigaOS/SDL 移植軟體
面向 Zune 初學者
Zune .MUI 類
面向 SDL 初學者
Aros 開發者構建系統
特定平臺
Aros x86 完整系統 HCL
Aros x86 音訊/影片支援
Aros x86 網路支援
Aros 英特爾 AMD x86 安裝
Aros 儲存支援 IDE SATA 等
Aros Poseidon USB 支援
x86-64 支援
摩托羅拉 68k Amiga 支援
Linux 和 FreeBSD 支援
Windows Mingw 和 MacOSX 支援
Android 支援
Arm 覆盆子派支援
PPC Power 架構
雜項
Aros 公共許可證
  • 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)。


下載

[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 裝置,請執行以下操作

  1. 解壓存檔。
  2. 在存檔中,您將看到一個 AROS 目錄。將它的所有內容複製到 SD 卡(或您的裝置使用的任何其他可移動媒體)。
  3. 在您的裝置中安裝提供的 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
華夏公益教科書