顯示具有 app 標籤的文章。 顯示所有文章
顯示具有 app 標籤的文章。 顯示所有文章

2014年2月13日 星期四

如何在eclipse下build有system權限的apk


以下為各位介紹如何在eclipse下build有system權限的apk. 並相關會遇到的問題。

當我們要寫一支system permission的apk時,需要在AndroidManifast.xml加入下面文字:
    android:sharedUserId="android.uid.system"
    < uses-permission android:name="android.permission.REBOOT" / >
    < uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" / >
    .....
然而,加入之後,會有一些狀況,描述如下:


1. eclipse build error:
在eclipse的perference中,有一些android的相關設定。
在Android\Lint Error Checking\ProtectedPermissions預設是error等級(詳如下圖),也就是說當eclipse檢查到某些被定義成system權限的字串時,會提示user error訊息。
這樣的機制導致於無法build這個apk.
如:< uses-permission android:name="android.permission.REBOOT" / > 就被判定為 error 等級

解決方式:
到preference中將ProtectedPermissions設成warning即可通過eclipse檢查。也可build出具system權限的apk.

2. adb install:
雖然#1經過修改eclipse裡面的設定可以避開檢查,成功build出apk。
但是adb install會因權限呼叫PackageManager檢查signature。結果會出現沒有signatures.

adb logcat如下:
E/PackageManager( 176): Package com.test.android.testreboot has no signatures that match those in shared user android.uid.system; ignoring!
adb install回應如下:
Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE


3. adb push:
既然adb install不成功,那改用adb push.
adb push雖然不會因權限檢查signature,但是android執行時會因權限檢查signatures,導致於下列error.
adb logcat如下:
E/PackageManager( 176): Package com.test.android.testreboot has no signatures that match those in shared user android.uid.system; ignoring!

#2跟#3的解決方式:
用相對應的platform key去sign過即可解決問題。
Sign key語法如下:
java -jar signapk.jar [pem certificate file of platform] [pk8 certificate file of platform] [origin.apk] [target.pak]
example:
java -jar signapk.jar platform.x509.pem platform.pk8 origin.apk target.pak


其他資訊#1:
如果沒有加上
android:sharedUserId="android.uid.system",
只有加
是可以build出apk,也可以用adb install方式安裝,但是runtime會出現下列錯誤訊息:

adb logcat如下:
E/AndroidRuntime( 1131): java.lang.SecurityException: Neither user 10048 nor current process has android.permission.REBOOT.


其他資訊#2:
eclipse的權限檢查不是檢查
    android:sharedUserId="android.uid.system"
而是檢查
    < uses-permission android:name="android.permission.REBOOT" / >
    < uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" / >
導致上述問題的,應該還有其他項目,目前沒有找到哪裡有詳細列出檢查的項目。


2012年4月25日 星期三

android default luncher 決定流程

今天介紹一下Android如何決定使用哪一個luncher的。
我們在market上可以下載很多不同廠商製作的luncher,那當我們的luncher超過一個時,Android如何決定要使用哪一個luncher?

基本上Android system會先查看有多少luncher被安裝了,如果多於一個時,Android會再查看是否有default的luncher設定,如果有的話,優先使用deault luncher,如果沒有的話,會跳一個視窗讓使用者選擇要使用的luncher,同時也可以選擇將這個luncher設成預設。整個流程如下。

那如果已經設定一組default的luncher之後,如何變更呢?
只要到 [設定] / [應用程式] / [管理的應用程式] / [全部] 頁面,點選目前預設的luncher,然後點擊 [清除預設值],然後按 [Home] 時即會出現可以選擇luncher的視窗了。

2011年12月29日 星期四

如何設定android開發環境

這裡來介紹一下如何設定android的開發環境。
我們分為幾個階段:
1. linux基本環境設定
2. android apk 開發環境設定
3. android os 開發環境設定

首先,linux環境設定:

1. 安裝 ubuntu version 10.04 LTS 64bit (以下是以ubuntu來舉例說明)
1.1. 設定 eth0.
1.2. 設定 samba service. (這個是為了方便與windows共享檔案用)
參考資料: http://ithelp.ithome.com.tw/question/10027945
1.3. 最好執行 system / administration / update manager 將系統更新到最新.
2. 安裝瀏覽器 google chrome. (也可以用內建的firefox)
下載位置: https://www.google.com/chrome?hl=zh-TW
3. 安裝 ssh (方便用其他電腦連線進去作業)
參考資料: http://twntwn.info/blog/ajer001/archives/2822
安裝指令: sudo apt-get install ssh
4. 安裝中文輸入法 gcin.
參考資料: http://cle.linux.org.tw/trac/wiki/GcinInstallUbuntu


接下來,安裝 android apk 開發環境:

參考資料: http://developer.android.com/sdk/requirements.html

1. 安裝 jdk 6 (non-rpm version for ubuntu)
參考資料: http://source.android.com/source/initializing.html
安裝指令: sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
安裝指令: sudo apt-get update
安裝指令: sudo apt-get install sun-java6-jdk
2. 安裝 eclipse
下載位置: http://www.eclipse.org/downloads/
3. 安裝 android sdk
參考資料: http://developer.android.com/sdk/installing.html
4. 安裝 android adt from eclipse.
參考資料: http://developer.android.com/sdk/eclipse-adt.html
5. 安裝相關 android sdk 元件.
5.1. 設定 android sdk folder for eclipse.
5.2. 啟動 android sdk manager and download necessary components.
6. 安裝 android ndk (非必要步驟)
參考資料: http://developer.android.com/sdk/ndk/index.html


最後,安裝 android os 開發環境

1. 安裝必要元件.
參考資料: http://source.android.com/source/initializing.html    (key word: "Installing required packages")
安裝指令: sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
安裝指令: sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
安裝指令: sudo apt-get install sharutils    //for uudecode

2. 設定 USB Access 權限
參考資料: http://source.android.com/source/initializing.html (key word: "Configuring USB Access")
安裝指令: sudo vim /etc/udev/rules.d/51-android.rules
add following lines:
----------------------------------------------------------
SUBSYSTEM=="usb", SYSFS{idVendor}=="vendor id here", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="vendor id here", OWNER="user name here" GROUP="group name here"
----------------------------------------------------------
!!NOTE: This is known to work on both Ubuntu Hardy Heron (8.04.x LTS) and Lucid Lynx (10.04.x LTS).

3. 設定 ccache (加快 build image 速度)
參考資料: http://source.android.com/source/initializing.html (key word: "Setting up ccache")
安裝指令: mkdir ~/data/ccache
安裝指令: vim ~/.bashrc
add following lines at end of file:
----------------------------------------------------------
export USE_CCACHE=1
export CCACHE_DIR=~/data/ccache
----------------------------------------------------------

4. 設定開啟檔案最大值
安裝指令: sudo vim /etc/security/limits.conf
add following lines at end of file:
----------------------------------------------------------
user_name_here      -       nofile          4096
root             -       nofile          4096
----------------------------------------------------------




其他實用的設定
1. format history command:
安裝指令: vim ~/.bashrc
add following line at end of file:
----------------------------------------------------------
export HISTTIMEFORMAT="%F %T "
----------------------------------------------------------

2. format vim editor
安裝指令: vim ~/.vimrc
add following lines
----------------------------------------------------------
set hlsearch            "高亮度反白
set backspace=2         "可隨時用倒退鍵刪除
set autoindent          "自動縮排
set ruler               "可顯示最後一行的狀態
set showmode            "左下角那一行的狀態
set nu                  "可以在每一行的最前面顯示行號啦!
set bg=dark             "顯示不同的底色色調
syntax on               "進行語法檢驗,顏色顯示。
----------------------------------------------------------

2011年9月29日 星期四

[Android App] 緊急電話簿 v1.5

終於改版了,這次也算是大翻修,增加了交通運輸的服務電話,在經過一些思考之後,交通服務電話應該是比較會被大家用到的,也希望大家在緊急的時候都能得到協助。
趕緊來介紹一下新版本功能吧!


緊急電話簿更新 v1.5 版本了。
新的版本修改部分如下:

[修改部分]:

1. 修正永豐銀行、新光銀行服務電話。
2. 加大字體大小。
3. 自動辨識螢幕大小適時旋轉,提供更方便的操作介面。


[新增部分]:

增加交通運輸公司服務電話,有:

鐵路部分:高鐵、台鐵、台北捷運、高雄捷運。

航空部分:桃園機場、松山機場、高雄小港機場、中華航空、立榮航空、長榮航空、華信航空、復興航空、遠東航空、德安航空。

國道客運部分:三重客運、國光客運、日統客運、台中客運、和欣客運、統聯客運、阿羅哈客運、新竹客運。


相關連結
程式下載:Android Market 連結
[Android App] 緊急電話簿 v1.2
[Android App] 緊急電話簿




希望,這份資料可以提供給大家必要時的幫助。

2011年4月14日 星期四

[Android App] 緊急電話簿 v1.2

緊急電話簿更新 v1.2 版本了。
新的版本修改部分如下:

[修改部分]:
修正 1999 為全台各縣市政府通用的服務電話。

[新增部分]:
增加了兒童燙傷基金會、失蹤兒童通報、失蹤老人通報、平交道緊急事故通報、台電客服、警廣路況通報、高速公路拖吊申訴、國稅局。

並台灣電信業者服務電話:有中華電信、台灣大哥大、遠傳、威寶、亞太等。
另外,也增加各大壽險業者保戶免費服務電話:台灣人壽、南山人壽、保德信人壽、保誠人壽、紐約人壽、國泰人壽、富邦人壽等等。

產物保險部分加入:國泰產物保險、富邦產物保險、華南產物保險、新安東京產物保險、蘇黎世產物保險等等。(車禍受傷時很重要)

同時將原本只有3個分頁的電話增加到5個分頁!
新版縮圖如下:





前一版本介紹連結[Android App] 緊急電話簿



希望,這份資料可以提供給大家必要時的幫助。

2011年3月24日 星期四

[Android App] 緊急電話簿

Android確實是一股不可忽視的潮流,所以最近也趕趕時髦,來開始寫一些 Android 的小程式。
恰巧,最近日本發生9.0的大地震,一股腦聯想到災難來臨了。想到這裡就聯想到:手機到底在沒有sim卡時是要打112還是113求救?
對於記憶力不太好的我,這時就需要碰碰運氣了。
有鑒於此,就想說:做一個小程式來幫助自己記住這些資訊!於是,緊急電話簿就誕生了!先來介紹他吧。

小檔案
中文姓名緊急電話簿
英文姓名Emergency Call
生日2011/3/16
血型Android 1.6
所在地Android Market 前去看看
自我介紹
緊急電話簿收錄了在台灣不常用但是緊急時不能沒有的電話。
如:家暴專線、張老師專線、反詐騙專線等等。
政府提供很多便利專線,但是太多反而記不住,現在可以利用智慧型手機的功能,幫助我們記住這些資訊,需要的時候就不用擔心了!
如有這些資料有『更新』或是『需要新增加』的緊急聯絡電話,請直接線上回報,我們將儘快更新版本。
生活照
祝福大家都有平平安安的一天!