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

2014年11月25日 星期二

解決"Conversion to dalvik format failed with error 1"

[Coding][Android] 如何Release Android APK這篇文章的最後其實就有提到,有時候Release APK的時候就會跳出"Conversion to dalvik format failed with error 1"的錯誤訊息。

之前每次都是透過Projects -> Clean All,然後再做一次就可以解決了,可惜爛招用不了太久,還是遇到失敗的一天。以下就來說明該怎麼正確的解決這個問題吧。


概念其實很簡單,就是將Library project獨立放在自己的folder當中,不要放入主要Project的目錄下,像是以下的放置方式,就是有可能會有問題的方式

修改方式很簡單,把所要用到的Library project,移出主要Project的目錄,改為放置到自己的目錄下,如下:

之後再把這些Library project重新Import進來,問題就解決了。

當然網路上還有很多方法,我自己試過有用的就只有Clean build和上面這個方法,大家就當做多一個選擇吧。

2014年11月21日 星期五

[科技新知][Android] Android 5.0 (Lollipop) 帶來的新功能以及如何調整

即使在今年的Google I/O中,就已經引進了Material Design,也有很多App開始進行一些調整,也感受到改變;但是在升級到5.0以後,那整体的視覺改變,還是帶來不小的衝擊。以下就來說說我個人看到最驚訝的功能吧!

1. 一觸即通

一直以來Google的backup、restore功能都是被大家詬病的,雖然Android 5.0還是沒有徹底改善這個問題,不過倒是引進了一個新功能。只要透過NFC,就可以將現有手機中所有的資料,全部都直接還原到新的手機上。

這對於要換手機的人來說,還真是有夠方便。直接手機背對背擁抱,就可以搞定了。可惜,這對於升級手機的人來說,就沒多大用處了。不過,還是算是一個不錯的想法。

2. 還原應用程式和資料

雖然無法用上一觸即通,Google還有個法寶,就是只要你是透過Google Play所下載、安裝的App,都可以直接幫你重新還原安裝完畢。

其實也沒多神奇,就是利用Google Play最後一次記住你手機上已經安裝了哪些App的資訊,將其還原而已。App裡面的資料還是無法還原 (唉...我的遊戲紀錄阿...)。

3. 新的Notification頁面

這個算是蠻大的改動,也有很多小技巧可以用喔。
如果單純只有一隻手指往下拉,就可以看到所有的Notification

此時,可以再下拉一次,就可以出現快捷控制台。除了UI Layout換了以外,這次新增了閃光燈的開關,等於就不用再安裝手電筒程式啦。

最炫的是,如果你有仔細注意看到,右上角除了以外的設定的圖示以外,還多新增了一個人像圖示。點下去,就會進入切換使用者的介面喔。這代表允許多人共用手機,使用上可以專門新增一個給小朋友使用的帳戶,只顯示一些兒童相關的APK即可,個人認為還蠻實用的。

4. 音量控制介面

在音量模式控制上這版本做了蠻大的改變。以前長按電源鍵,除了可以關機、切換到飛航模式,還可以快速切換靜音(Silient)、震動 (Vibrate)和正常模式。

這版本中,長按電源鍵就只剩下關機的功能。
只剩下關機功能
切換飛航模式已經移到快捷控制台中;那音量模式呢?

在音量模式上,Android 5.0則改由不同的呈現方式,按下音量鍵就可以知道啦!

可以發現,有別於以往的音量,現在還多了"無"、"優先"和"全部"。

所謂的"無"、"優先"和"全部"指的是現在所設定的音量是要什麼時候才可以發出干擾。如果選的是"無",那麼表現就會和以前的靜音(Silent)模式一樣,完全不會有聲音和震動

如果選擇的是"全部",則是指全部的提示都會套用一樣的方式 (聲音音量)喔。舉凡:來電、簡訊通知、新訊息或者是其他的提示訊息...等等。如果設定音量最小的話,那就是所有的提示都會變成震動,如果有聲音的話,那所有的提示都會以所設定的音量大小呈現。

所以如果選擇"全部",並將音量調整到最小的話,那就是跟以前的震動模式一樣啦

在說明優先之前,先停下來思考一下。如果你曾仔細想過,以前的音量模式雖然簡單設定,但是卻給了所有的App提示都是一致的優先權,指定設定好模式以後,所有的提示都是用一樣的方式提醒使用者。然而,對某些人而言,也許會希望來電的提示和Facebook的交友通知,所收到的提醒是不同的。

而"優先"就是在這個需求下產生,當選擇"優先"時,就只有被列為優先干擾,可以按照音量的設定發出提醒。

那怎麼設定哪些是優先干擾呢? 只需要按下右邊、中間的設定圖示,就可以進入設定的頁面啦。按照下圖的設定,則可以發現只有活動和提醒可以按照音量設定發出聲音(或震動),其他通話和訊息都是靜音的。

5. 新的Lock Screen頁面
在Android 5.0的Lock Screen也算是改變挺大的,包括:

  • 提供方便的快速撥號、拍照、快捷控制台進入操作
    只要手指往右、左、下、上,就分別可以進入撥號介面(右)、拍照(左)、快捷控制台(下)和解鎖(上)
  • 直接顯示Notification
  • 顯示剩餘多久可以充飽電池
這些改動可以說是把整個螢幕都充分利用了;尤其是新增加上下左右的快速操作,可以更快打電話、拍照,都是很棒的改動。

倒是顯示Notification就真的是見仁見智了,畢竟這可是涉及個人隱私,好險這功能還是可以關掉的,只需要進入設定 > 音效通知 > 將裝置鎖定時的設定由原本的"顯示所有通知內容"改為"完全不顯示通知"。

  

以上,大致是目前為止看到的改變。UI操作雖然變快了,但是整體上還需要點時間習慣。分享給大家參考參考囉。

解決升級Android 5.0 (Lollipop)遇到的問題 (For Nexus5)

每當看到有人手機收到Lollipop的OTA通知,心中總是羨慕不知道何時可以輪到自己。就在今天早上,願望終於實現了,終於收到了OTA,卻是一連串災難的開始。

OTA下載的檔案在哪裡?


首先,遇到的第一個問題就是TWRP;是的,在上一篇[科技新知][Android] 如何Root Nexus5 (以版本號碼: KTU84P為例)中,就已經把手機的Recovery換成TWRP。

當按下重新啟動並安裝之後,重開機看到TWRP的時候就傻了,因為得要自己選擇要安裝的zip檔案。查了很久,才終於知道OTA下載的檔案都會放在/cache目錄下。當然,你得要Root才看的到。

選了該檔案安裝以為就可以順利了嗎? No no...非經一番寒徹骨、哪得梅花撲鼻香。就讓我們繼續看下去...

TWRP error flashing zip file....


關於這個問題,網路上說是因為SuperSU造成的問題,也提供解法,不過我測試倒是一直失敗。山不轉路轉,就改成手動安裝吧。


注意:按照以下方式會把手機上的資料都刪掉,操作前,請一定要先備份重要資料。

手動安裝Lollipop


首先,請先到這裡下載安裝包,MD5 checksum為761667f1ddaf4e38d4792136df4ab927,點選Link就開始下載囉,檔案名稱為hammerhead-lrx21o-factory-01315e08.tgz

下載完成後,請按照以下步驟

  1. 將檔案解壓縮至adb以及fastboot的相同目錄,預設應該是{Android_SKO}/platform-tools
  2. 手機開機到bootloader (先關機後,同時按Volume - (減少)和電源鍵)
  3. double-click flash_all.bat即可

當然世界沒那麼美好,此時有可能會遇到以下的錯誤訊息
target reported max download size of 1073741824 bytes
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
failed to allocate 1005154516 bytes
error: update package missing system.img


解決"failed to allocate 1005154516 bytes"


還好,天無絕人之路,請將目錄下的image-hammerhead-lrx21o.zip,解壓縮在相同目錄,裡面應該包括:android-info.txt、boot.img、cache.img、recovery.img、userdata.img和system.img。

之後,修改flash_all.bat,原始內容如下:
@ECHO OFF
:: Copyright 2012 The Android Open Source Project
::
:: Licensed under the Apache License, Version 2.0 (the "License");
:: you may not use this file except in compliance with the License.
:: You may obtain a copy of the License at
::
::      http://www.apache.org/licenses/LICENSE-2.0
::
:: Unless required by applicable law or agreed to in writing, software
:: distributed under the License is distributed on an "AS IS" BASIS,
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
:: See the License for the specific language governing permissions and
:: limitations under the License.

PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-hammerhead-hhz12d.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.21.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot -w update image-hammerhead-lrx21o.zip

echo Press any key to exit...
pause >nul
exit

修改如下:
@ECHO OFF
:: Copyright 2012 The Android Open Source Project
::
:: Licensed under the Apache License, Version 2.0 (the "License");
:: you may not use this file except in compliance with the License.
:: You may obtain a copy of the License at
::
::      http://www.apache.org/licenses/LICENSE-2.0
::
:: Unless required by applicable law or agreed to in writing, software
:: distributed under the License is distributed on an "AS IS" BASIS,
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
:: See the License for the specific language governing permissions and
:: limitations under the License.

PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-hammerhead-hhz12d.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.21.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash system system.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot erase cache
fastboot flash cache cache.img
fastboot reboot 

echo Press any key to exit...
pause >nul
exit

最後,再次雙擊flash_all.bat,應該就搞定啦。接著就可以好好享用棒棒糖啦。

2014年10月30日 星期四

[Coding][Android] 如何Release Android APK

開發APP在行動裝置越來越多、越來越豐富的時代,也變成一個很熱門的活動。即使,大多數的APP就僅只是開發出來,也沒多少人使用,但是可以自行開發出APP來解決自己遇到的問題,也是一件很酷的事情。

至於要如何開發Android APK,這裡就不多著墨,有意願的就請參考Android Developer吧。雖然大多都是英文,慢慢地,還是可以自行建立一個簡單的APK。

但是,最後如果想要變成一個可以安裝在手機的APK,那得怎麼做呢?以下我將會以Eclipse為範例,操作一次:

Step 1、先將整個Project Clean build。這步理論上是可以省略的,但是我遇過多次Release APK的過程失敗的case,只要再Clean build就好了。因此建議還是做一下安心點。

操作方式:[Project] > [Build Automatically],[Project] > [Clean]

Step 2、在自己的Project上按滑鼠右鍵,選擇[Android Tools] > [Export Signed Application Package...]

Step 3、輸入要Export的Project的名稱,例如:AutoMute;之後按下[Next]

再進行接下來的動作之前,先說明,網路上的APK那麼多,怎麼判斷哪個APK是誰開發的呢?又怎麼確保APK的安全性,不會有偷偷被改過呢?

這就得需要透過簽名 (Sign),確保這個APK是由你所開發的。現實中的簽名需要的是一支筆,在網路上則是需要一把鑰匙 (Key);而用來存放鑰匙的地方,就稱為鑰匙儲存庫 (keystore)。

接下來我們就可以透過Android Tool,順便幫我們建立鑰匙儲存庫以及簽名所需要的鑰匙。
鑰匙是唯一可以在網路上識別身分的方式,因此千萬不可以遺失或給別人,否則也就代表其他人可以假冒你的身分。因此,建立好鑰匙和儲存庫以後,一定要妥善保管。
Step 4、建立keystore
選擇keystore所需要存放的位置,並且對這個檔案加上密碼(長度至少要6個字元)保護,確保其他人即使拿到檔案,也無法使用。

Step 5、建立key
輸入鑰匙的名稱,方便之後使用,像是我就使用Android_key代表專門用來加密Android APK的key。並且輸入密碼、有效期間 (至少要超過2033年10月22日)、以及個人的相關資訊 (至少要填寫一個欄位)。

Step 6、最後填入產出APK的位置就好啦

2014年10月15日 星期三

[Android] 如何獲取SPC code (For Nexus5 only)

以下這篇將會說明在Nexus 5手機中,要如何取得手機的SPC code。

必要軟件

1. 手機一定要先Root過,還沒Root的,可以先按照這篇或是這篇將手機Root
2. 手機安裝Nexus 5 Field Test Mode
3. PC要下載adb (如果有安裝Android SDK,則Android SDK的目錄下也會有)

操作步驟

1. (PC) 開始 >> 執行 >> 輸入"cmd"後,按下Enter
2. (PC) 切換目錄到adb所在目錄,例如:C:\Program Files\Android\android-sdk\platform-tools
3. (手機) 打開安裝好的Nexus 5 Field Test Mode,點選右上角Menu,選擇Settings (View)

4. (手機) 選擇LTE

5. (手機) 選擇Edit,保持不要再輸入任何東西

6 (PC) 輸入adb logcat -s LG_SVC_CMD,搜尋itemID = 200,其後的Value就是SPC code。如下圖中,SPC code = 000000 (這是因為我有修改過,預設不是這個數字)。

以上提供大家參考。

[科技新知][Android] 如何Root Nexus5 (使用Nexus Root ToolKit)

在上篇中,我們介紹如何手動的方式一步一步Root手機,而在這篇中,我們將會介紹更方便好用的工具 - Nexus Root Toolkit (NRT)

借由這個由Wug Fresh所開發的Tool,可以很方便的備份、還原手機內重要檔案、也可以Unlock bootloader、更可以Root手機;除此之外,更強的是可以將手機還原回初始狀況 (UnRoot)、也可以Relock bootloader,這樣就可以輕鬆地將手機回復到剛出廠的樣子,真的超猛的!

講完功能,接下來就看看怎麼操作吧。

下載

請到這裡下載,目前最新的版本是1.8.8

安裝

直接雙擊下載下來的安裝檔,就可以安裝完成。不需要額外的特殊設定。

第一次設定

啟動NRT後,第一個會看到的畫面就是這個,要求選好你的手機以及相對應的軟體版本。
手機型號應該很清楚,而關於Android build則可以開啟設定 >> 關於手機,就可以得到相關資訊,以下圖為例:就是Nexus 5,Android 4.4.4 - Build: KTU84P
或是你也可以將手機接上電腦以後,按下左下角的Auto Detect Device + Build...,就可以得到正確的資訊了。

接著,就可以看到NRT會自動地去下載需要的檔案,最後就會進入主畫面如下:

檢查電腦是否已經安裝好所有必要的Driver
如果你已經有按照這篇『[科技新知] 如何下載以及安裝Nexus 5 USB driver (For WInXP only)』安裝好Driver,理當是沒問題的,不過為了避免萬一,第一次使用建議還是先檢查一下。

先點選畫面右上方的Full Driver Installation Guide - Automatic + Mannual

進入Full Driver Configuration Guide

不過,我個人是沒有真的按照裡面的步驟每個都做,而是直接跳到Step 4,點選下方的Full Driver Test測試,檢查都通過就沒問題啦。


備份、還原

透過主畫面中的Backup和Restore,可以輕鬆的將手機內的檔案先備份起來,以免之後的過程遺失重要資料,而之後,也可以在利用Restore將檔案重新放進手機裡。

而備份和還原中,也有很多選項可以選,這裡就不多詳細介紹,留待各位自己發掘囉。


Unlock bootloader、Root、Back to Stock、Relock

這些分別代表Unlock bootloader、Root手機、還原手機 (清除掉custom recovery和Un-root)、以及Relock bootloader

只要按下去,就只要等待,最後提示完成即可。要提醒的是,有時候某個動作會卡比較久,又沒有任何訊息印出來,此時千萬不要在過程中卡住了,就拔除了USB cable,或者是自己按下電源鍵操作,這些都有可能導致手機出問題喔

[科技新知][Android] 如何Root Nexus5 (以版本號碼: KTU84P為例)

有很多原因需要Root手機,最近最讓人開心的就是透過restore qcn就可以讓美版的Nexus5(D820)支援4G LTE-FDD Band3,過程中的第一步就得先Root手機,以下的文章也就是因此而誕生的。

廢話不多說,直接進入正題,要Root Android device,步驟大概上可以分為三點:
  1. Unlock Bootloader (Bootloader解鎖)
  2. Flash Custom Recovery (刷上客製化的Recovery)
  3. Install UPDATE-SuperSU.zip (刷上Root file)
其實要Root Nexus5,可以選擇手動的方式自己一步一步地做,也可以直接透過Nexus Root ToolKit (NRT) 這套ToolKit,透過NRT內建的script可以很快速地unlock bootloader、Root、甚至UnRoot以及Relock bootloader,可說是超方便的。

不過以下我們將只會只會介紹手動的方式,NRT的使用方式就留待下一篇再介紹吧。

(提醒:NRT只有支援Nexus系列喔,所以如果你不是Nexus家族的手機或者平板,還是只能乖乖的用手動的方式)

寫在前頭

1. Root有一定的風險,請自行評估
Root的動作有一定的風險讓手機無法正常使用,請先確定自己可以承擔這樣的風險!

2. Root過程會把所有資料全部清除掉,所以請記得一定要先備份好你的重要資料,以免重要資料遺失

3. 如果過程中因為手機沒電而關機,將有可能會損壞你的手機,因此再操作之前請先確保電池電量在80%以上

4. 範例中所使用的SuperSU root file和TWRP recovery都是相容於Nexus5,其代碼為hammerhead,只能用在Android 4.4.4 Model number: KTU84P。請先至設定 > 關於手機 > 版本號碼,檢查是否為KTU84P,如果版本號碼不同,請自行下載對應的版本,避免問題產生。

5. Root的動作,端視不同的手機製造商可能會讓手機的保固失效,請謹慎考慮後為之。

必要軟件以及檔案

以下檔案為必要檔案,請先下載好正確的版本,以防過程中缺少檔案
  1. fastboot
    取得方法有兩種,一種是安裝Android SDK,則可以在/platform-tools下找到;另外也可以到這裡或是這裡下載
  2. openrecovery-twrp-2.8.0.1-hammerhead.img
    請到這裡下載
  3. UPDATE-SuperSU-v2.13.zip
    請至這裡下載

操作步驟

Step 1 ~ 6主要就是完成Unlock bootloader

Step 1、先找到fastboot的安裝目錄,將下載的openrecovery-twrp-2.8.0.1-hammerhead.img拷貝到相同目錄下

Step 2、將手機關機,然後同時按下"音量-"和"電源"鍵進入Bootloader

Step 3、(PC端) 點選 開始 >> 執行,輸入"cmd"後,按下確定

Step 4、(PC端) 切換到fastboot的安裝目錄輸入"fastboot oem unlock"。此時可以看到手機端會進入Unlock bootloader,跳出詢問是否要unlock。此時也可以把USB cable移除了。

Step 5、(手機端) 利用音量 + - 鍵上下切換,然後利用電源鍵選擇Yes Unlock bootloader (may void warranty)

Step 6、下方會出現erasing的字眼,等待完成後消失,再按下電源鍵開機,此時就會重新開機。開機完成後會進入第一次設定程序,完成設定後,就可以再關機。

Step 7 ~ 9 主要就是完成Flash Custom Recovery (TWRP)

Step 7、再次利用"音量 -"和"電源"鍵,開機進入boot loader。此時再把USB cable接上。

Step 8、(PC端) 接著輸入以下command,然後按下Enter
fastboot flash recovery openrecovery-twrp-2.8.0.1-hammerhead.img

Step 9、完成後,按下手機電源鍵,再開機

Step 10 ~ 13 主要就是完成Install Update-SuperSU.zip

Step 10、開機完成後,再把下載的UPDATE-SuperSU-v2.13.zip放到手機的根目錄下,放好後就可以將手機關機了。

Step 11、再利用"音量 -"和"電源"鍵,開機進入boot loader;之後利用音量鍵,選擇到Recovery Mode,按下電源鍵,選擇進入TWRP Recovery

Step 12、選擇左上角的Install,並選擇剛才放進去的UPDATE-SuperSU-v2.13.zip,最後滑動slider確認,就等待完成囉。




Step 13、按下右下角的Reboot System重新開機,進入Menu可以看到SuperSU就代表成功啦!

雖然步驟看起來很複雜,不過只要一步一步跟著做,十幾分鐘就可以搞定了喔,也沒想像中困難啦,有興趣且心臟大的就可以嘗試看看囉。

Reference

7. https://www.youtube.com/watch?v=KnlUdjUaD3Q&feature=youtu.be

最後,順便分享一下如何unlock LTE band3的秘技,有興趣的也可以玩玩看。
畅享4G!图解NEXUS5 D820破解Band3 4G LTE-FDD1800