接下來將寫好的Android專案整個資料夾放在Linux底下的Android開發包\packages\apps\,此時資料夾裡的文件結構應該是:
5.03.2011
Linux: make APK (隨手札記)
為什麼APK需要特地在Linux底下make,而不使用像eclipse這麼好用的編譯軟體呢?原因就在,APK需要特別簽章的時候,如果APK不在linux下make是無法Install至系統的,至於特別簽章是甚麼意思呢?需要用到系統權限的AP,例如Reboot功能必須在Androidmanifest.xml下添加,uses-permission android:name="android.intent.action.REBOOT"這行得到了reboot的功能後,更重要的是必須要得到系統的權限,於是再添加"android:sharedUserId="android.uid.system",這行就是使用系統權限的關鍵<--詳細請點我-->
4.28.2011
Android APP概述(隨手札記)
Android 應用程式以java語言為主,副檔名為.apk,構成android應用程是主要有4大元件:
1.Activity(活動)
此為Android最基本的應用元件,一個活動通常是一個單獨的使用者介面,存在一個或多個UI(又稱view)控制項
One Activity(1) starts~ onCreate →onStart →onResume
當Activity(1)被創建時會調用onCreate在這裡通常做些初始化的動作,當初始化完後會進入onStart,將畫面秀在螢幕上,接著進入onResume,鎖定activity畫面(取得畫面控制權),接著Activity(1)就能被使用者操作。
1.Activity(活動)
此為Android最基本的應用元件,一個活動通常是一個單獨的使用者介面,存在一個或多個UI(又稱view)控制項
- Activity生命週期如下:
當Activity(1)被創建時會調用onCreate在這裡通常做些初始化的動作,當初始化完後會進入onStart,將畫面秀在螢幕上,接著進入onResume,鎖定activity畫面(取得畫面控制權),接著Activity(1)就能被使用者操作。
4.18.2011
U-boot 編譯錯誤
出現下面錯誤訊息:
board.c:126: error: inline function 'coloured_LED_init' cannot be declared weak
board.c:128: error: inline function 'red_LED_on' cannot be declared weak
board.c:130: error: inline function 'red_LED_off' cannot be declared weak
board.c:132: error: inline function 'green_LED_on' cannot be declared weak
board.c:134: error: inline function 'green_LED_off' cannot be declared weak
board.c:136: error: inline function 'yellow_LED_on' cannot be declared weak
board.c:138: error: inline function 'yellow_LED_off' cannot be declared weak
[board.o]ERROR
後來GOOGLE了一下,有人提到是gcc版本太高的緣故
我查了一下我的gcc -v,是gcc-4.4.3的版本,想起來之前有更新過
於是下"sudo apt-get remove gcc-4.4.3"將gcc-4.4.3 remove掉,在下sudo apt-get install gcc-4.3的指令去下載4.3版的gcc,問題就解決了
board.c:126: error: inline function 'coloured_LED_init' cannot be declared weak
board.c:128: error: inline function 'red_LED_on' cannot be declared weak
board.c:130: error: inline function 'red_LED_off' cannot be declared weak
board.c:132: error: inline function 'green_LED_on' cannot be declared weak
board.c:134: error: inline function 'green_LED_off' cannot be declared weak
board.c:136: error: inline function 'yellow_LED_on' cannot be declared weak
board.c:138: error: inline function 'yellow_LED_off' cannot be declared weak
[board.o]ERROR
後來GOOGLE了一下,有人提到是gcc版本太高的緣故
我查了一下我的gcc -v,是gcc-4.4.3的版本,想起來之前有更新過
於是下"sudo apt-get remove gcc-4.4.3"將gcc-4.4.3 remove掉,在下sudo apt-get install gcc-4.3的指令去下載4.3版的gcc,問題就解決了
4.17.2011
Linux: Unable to look up git.kernel.org 錯誤
下git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.35.y.git kernel_imx這指令結果ubuntbu一直報錯,出現Unable to look up git.kernel.org........的錯誤訊息,首先我就先去檢查網路是否有通,結果是可以上網的。但是只要上android.git.kernel.org、git.kernel.org皆會報找不到server的訊息,後來去網路上查資料,發現可能是因為公司的無線網路把git給檔下來,以致無法連上git...server,後來用ip分享器連接公司的有線網路,在將/etc/resolv.conf這文件內容改成:
nameserver 192.168.0.1
domain ol
search ol
,改完後check "sudo vim /etc/network/interfaces"裡面的內容
auto lo
iface lo inet loopback <<自動取得IP位址
並下"sudo /etc/init.d/networking restart"命令去restart network,問題就解決了。不過我想IP分享器只是多餘的一個步驟,直接用有線網路就可以解決了。
nameserver 192.168.0.1
domain ol
search ol
,改完後check "sudo vim /etc/network/interfaces"裡面的內容
auto lo
iface lo inet loopback <<自動取得IP位址
並下"sudo /etc/init.d/networking restart"命令去restart network,問題就解決了。不過我想IP分享器只是多餘的一個步驟,直接用有線網路就可以解決了。
SD card on Android
這禮拜上了SDcard on Android的課,發現單單SDcard的mount
unmoun format功能背後的架構卻那麼複雜。上這門課的是因為當初有個
特殊的要求,必須要在android的機子上安裝兩個SDcard插槽,一張boot
一張user,想用android.os.Environment.getExternalStorageState()
取得SDcard的狀態,可是卻永遠取得/mmt/sdcard/(boot)這張SDcard
的State,這件事困擾了很久。後來用了broadcastreceiver去接收
Intent.ACTION_MEDIA_UNMOUNTED、Intent.ACTION_MEDIA_MOUNTED訊息,暫時解
決的問題,但是這並不是一個好的解決方法,後來歪腦筋就動到了Framework
那層,後來發現了MountService總是會送出
"When the second sd card acts, the state doesn't change!"這樣的訊息。
去看了source發現他裡面複雜的很,追到PackageManagerService的updata
後我就舉雙手投降了。廢話了那麼久,下面我終於要進入到重點了......
unmoun format功能背後的架構卻那麼複雜。上這門課的是因為當初有個
特殊的要求,必須要在android的機子上安裝兩個SDcard插槽,一張boot
一張user,想用android.os.Environment.getExternalStorageState()
取得SDcard的狀態,可是卻永遠取得/mmt/sdcard/(boot)這張SDcard
的State,這件事困擾了很久。後來用了broadcastreceiver去接收
Intent.ACTION_MEDIA_UNMOUNTED、Intent.ACTION_MEDIA_MOUNTED訊息,暫時解
決的問題,但是這並不是一個好的解決方法,後來歪腦筋就動到了Framework
那層,後來發現了MountService總是會送出
"When the second sd card acts, the state doesn't change!"這樣的訊息。
去看了source發現他裡面複雜的很,追到PackageManagerService的updata
後我就舉雙手投降了。廢話了那麼久,下面我終於要進入到重點了......
4.14.2011
tar解壓指令 of Linux (轉)
再詳細不過了......文章來源
------------------------------------------------
tar [-cxtzjvfpPN] 文件與目錄 ....
參數:
-c :建立一個壓縮文件的參數指令(create 的意思);
-x :解開一個壓縮文件的參數指令!
-t :查看 tarfile 裡面的文件!
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加參數!
例如使用『 tar -zcvfP tfile sfile'就是錯誤的寫法,要寫成
『 tar -zcvPf tfile sfile'才對喔!
-p :使用原文件的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的文件中!
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!
範例:
範例一:將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
# 特別注意,在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/' from member names'那是關於絕對路徑的特殊設定。
參數:
-c :建立一個壓縮文件的參數指令(create 的意思);
-x :解開一個壓縮文件的參數指令!
-t :查看 tarfile 裡面的文件!
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加參數!
例如使用『 tar -zcvfP tfile sfile'就是錯誤的寫法,要寫成
『 tar -zcvPf tfile sfile'才對喔!
-p :使用原文件的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的文件中!
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!
範例:
範例一:將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
# 特別注意,在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/' from member names'那是關於絕對路徑的特殊設定。
訂閱:
文章 (Atom)