安卓應(yīng)用開發(fā):簽名文件的意義與開發(fā)者技巧
一、安卓應(yīng)用簽名文件的意義
在安卓應(yīng)用開發(fā)過程中,所有的應(yīng)用程序都要求開發(fā)人員使用證書進行數(shù)字簽名。這是因為安卓系統(tǒng)不會安裝未進行簽名的應(yīng)用程序,簽名是確保應(yīng)用程序來源可靠、未被篡改的重要手段。

在開發(fā)階段,以Debug模式編譯的應(yīng)用程序,ADT會自動使用默認的密鑰和證書進行簽名。在以發(fā)布模式編譯時,apk文件則不會得到自動簽名,這就需要開發(fā)者進行手工簽名。
為apk文件簽名具有以下好處:
1. 應(yīng)用程序升級:若希望用戶無縫升級到新的版本,必須使用同一個證書進行簽名。只有以相同證書簽名的應(yīng)用程序,系統(tǒng)才會允許安裝升級。
2. 應(yīng)用程序模塊化:安卓系統(tǒng)允許同一證書簽名的多個應(yīng)用程序在一個進程里運行,此時可以將應(yīng)用程序以模塊的方式部署,用戶可獨立升級其中一個模塊。
3. 代碼或數(shù)據(jù)共享:基于簽名的權(quán)限機制使得同一證書簽名的應(yīng)用程序可以共享代碼和數(shù)據(jù)。

簡而言之,不同的應(yīng)用程序之間要想共享數(shù)據(jù)或代碼,就必須使用相同的證書進行簽名,并在同一進程中運行。
二、安卓系統(tǒng)的開發(fā)者小技巧
在安卓開發(fā)過程中,有許多小技巧可以幫助開發(fā)者提高效率,解決問題。
1. 找一些與你想做的事情類似的代碼,進行調(diào)整,嘗試讓它做你想做的事情。這是一個很好的起點。
2. 遇到問題時,可以使用StackOverflow等開發(fā)者社區(qū)來尋找解決方案。

3. 對于每個想要添加的功能,都重復上述過程。這種方法能夠激勵開發(fā)者,因為你在不斷地迭代學習。
在發(fā)布安卓應(yīng)用時,開發(fā)者還需要考慮一些更深層次的問題。安卓平臺的碎片化問題相比iOS更為嚴重。在iOS上發(fā)布應(yīng)用時,只需考慮一個設(shè)備的屏幕、硬件和操作系統(tǒng)版本。但在安卓世界中,開發(fā)者必須處理各種屏幕、處理器、定制的操作系統(tǒng)、API層級以及其他特定設(shè)備的問題。
為應(yīng)對這些問題,開發(fā)者需要注意以下幾點:
1. 確保應(yīng)用在不同屏幕尺寸上有良好的布局和結(jié)構(gòu)。
2. 確保圖像在不同分辨率下正常工作。

針對屏幕尺寸的多樣性問題,盡管存在超過100種不同的屏幕尺寸,但只要我們妥善處理布局和圖像問題,就可以使應(yīng)用適應(yīng)各種屏幕配置。這些都是獨立的任務(wù),需要逐一解決。為不同的屏幕而設(shè)計
一、ScrollView與ListView的應(yīng)用
當我們面臨一系列不同尺寸的大屏手機時,屏幕高度成為它們之間最顯著的差異。盡管ScrollView和ListView在許多情況下能夠有效地工作,但它們有時并不能完全覆蓋整個屏幕。以O(shè)penSignal中的Dashboard標簽為例,所有部件無縫銜接,無需滑動。對于許多高級類型的標簽,滑動展示并不總是壞事。關(guān)鍵在于確保設(shè)計能夠適配各種屏幕。否則,ScrollView和ListView將成為保證軟件在多數(shù)屏幕上正常展示的最小代價解決方案。
《Dashboard style的設(shè)計無需滾動》
二、利用資源文件夾結(jié)構(gòu)

Android的資源文件夾結(jié)構(gòu)極為強大,允許開發(fā)者根據(jù)不同的圖片、字符串、布局文件、樣式、顏色等資源進行細分,以適應(yīng)api、代碼、屏幕尺寸等不同的需求。例如,在資源文件夾下,我們可以按照以下方式組織資源:
在values-small文件夾中存放一個bools.xml文件,文件中包含如下內(nèi)容:
```xml

```
在代碼中,我們可以這樣引用:
```java
if(getResources().getBoolean(R.bool.small_screen)){

getSupportActionBar().hide();
}
```
在小尺寸設(shè)備上,此boolean值設(shè)為true,于是我們隱藏ActionBar以節(jié)省空間。這一策略是ActionBarSherlock擴展庫的一部分。對于寬于360dp的屏幕,我們可以創(chuàng)建values-sw360dp文件夾,并在其中設(shè)置相同的bool資源,但將其值設(shè)為false,這樣在大屏幕上ActionBar就會顯示出來。操作系統(tǒng)會自動按相應(yīng)的路徑搜索這些資源文件。例如,對于一個寬600dp的設(shè)備,系統(tǒng)會在values-sw600dp及其包含的文件夾中搜索bools.xml文件,若未找到則繼續(xù)搜索其他文件夾。
三、尺寸與密度的建議

建議采用以下尺寸與密度的對應(yīng)關(guān)系:160dp等于1英寸,320dp等于2英寸。這里的dp(密度無關(guān)像素)等同于dip(密度獨立像素)。這些目錄結(jié)構(gòu)技巧不僅適用于布爾值資源,還可以應(yīng)用于所有資源類型。例如,對于XML布局,可以使用指定的系統(tǒng)目錄名稱來解決特定屏幕尺寸的適配問題。如layout-sw360dp目錄可以匹配目標寬是360dp的機器。通過這種方式,開發(fā)者可以更有效地為不同的屏幕設(shè)計和優(yōu)化應(yīng)用。如果你也要支持橫豎屏布局切換,那么可以參考以下目錄結(jié)構(gòu)來管理你的布局文件:
一、基本布局命名規(guī)則
在Android開發(fā)中,布局文件的命名有其特定的規(guī)則。基本的布局目錄可以命名為:
layout-sw360dp-land
layout-sw360dp-port
這樣的命名方式適用于大多數(shù)情況,其中“l(fā)and”和“port”分別代表橫豎屏模式。對于一般的手機設(shè)備,這兩種布局足以應(yīng)對大多數(shù)情況。如果你的應(yīng)用有面向特定設(shè)備的布局需求,比如平板或者特定品牌的手機,那么你可能需要更具體的布局文件。

二、針對特定語言的布局命名
如果你的應(yīng)用需要支持多種語言,特別是阿拉伯語,那么你可能需要考慮語言因素對布局的影響。在這種情況下,你可以采用以下命名方式:
layout-sw360dp-land-ar
layout-sw360dp-port-ar
這樣的命名方式表示這些布局是為使用阿拉伯語的設(shè)備準備的。"-ar"后綴就是為了標識這種語言特定的布局。對于其他語言,你可以相應(yīng)地添加不同的后綴。
三、資源規(guī)則簡介

在Android開發(fā)中,資源規(guī)則是管理不同設(shè)備屏幕大小和密度的關(guān)鍵。以下是幾個常見的資源規(guī)則示例:
四、使用dimens.xml管理布局尺寸
第一章:尺寸處理的挑戰(zhàn)與解決方案
你是否曾疑惑,為何不讓Android OS來統(tǒng)一處理所有尺寸問題?實際上,使用values目錄和布局目錄是一種可行的解決方案。對于某些元素的尺寸計算,如果設(shè)置不當,可能會出現(xiàn)顯示上的瑕疵。當屏幕大小發(fā)生變化時,如何確保界面元素的比例和布局依然和諧,是一個需要深入思考的問題。
第二章:空間布局的空白藝術(shù)

在界面設(shè)計中,空白空間的重要性不容忽視。對于圖像和按鈕等元素,適當?shù)目瞻组g隔能夠提升整體的視覺效果。當按鈕、多選框、切換控件等被放大時,過多的細節(jié)可能會破壞整體的布局美感。我們應(yīng)該在元素之間添加適當?shù)目瞻?,使界面更加簡潔、大氣?/p>
第三章:GraphicalLayout工具的應(yīng)用與預(yù)覽
GraphicalLayout是一個強大的WYSIWYG XML編輯器,它讓我們能夠更直觀地編輯和預(yù)覽界面布局。雖然我喜歡直接編寫元素,但有時候,使用GraphicalLayout能夠快速測試不同屏幕尺寸下的界面表現(xiàn)。通過簡單的操作,你可以在不同的屏幕尺寸下預(yù)覽你的布局,從而確保在各種設(shè)備上都能獲得良好的用戶體驗。
第四章:圖像適應(yīng)不同屏幕尺寸的策略
在處理不同屏幕尺寸時,僅僅依靠布局文件是不夠的。布局中的元素,如圖片,也需要能在各種屏幕下良好地工作。為了解決這個問題,我們可以創(chuàng)建一套完整的圖片目錄,并將它們與多個drawable目錄相匹配。這樣做可以確保圖片在不同的屏幕尺寸下都能保持清晰和美觀。我們也要避免過度依賴位圖(jpg、png等),在有條件的情況下,盡量使用XML繪圖來替代位圖,以節(jié)省空間并提高靈活性。

第五章:XML繪圖的魅力與實戰(zhàn)
XML繪圖是一種強大的工具,它可以讓我們避免過度依賴位圖,從而節(jié)省空間并提升布局的靈活性。通過簡單的XML定義,我們可以創(chuàng)建出復雜的界面元素,如圓角矩形、帶有漸變的邊框等。我們還可以結(jié)合位圖和XML繪圖來創(chuàng)建更復雜的動態(tài)效果,如根據(jù)光的強度動態(tài)填充的燈泡以及可旋轉(zhuǎn)的指針等。這些實例展示了XML繪圖的強大和便捷,讓我們能夠創(chuàng)造出豐富、動態(tài)的界面。
第一章:為什么選擇使用9-patch而非XML drawables?
在Android開發(fā)中,我們擁有多種方式來定義drawables,其中包括使用XML和9-patch技術(shù)。當面臨選擇時,了解兩者的優(yōu)勢和劣勢至關(guān)重要。9-patch技術(shù)允許我們在圖像伸展時保持某些區(qū)域的固定,這在某些場景下非常有用。如果你熟悉并擅長使用9-patch,那么它是值得使用的工具。如果你不熟悉或者想要更豐富的效果,XML drawables同樣強大且靈活。在考慮使用哪種方式時,理解項目的需求和團隊的技術(shù)背景是關(guān)鍵。
第二章:通過覆蓋onDraw()創(chuàng)建自定義Views的樂趣

雖然XML可以處理許多圖形需求,但在某些場景下,我們可能需要更高度動態(tài)和自定義的圖像。這時,覆蓋onDraw()方法并編寫自定義的view代碼成為了一種有趣且強大的技術(shù)。盡管這可能不是每個項目的必要步驟,但對于追求圖像高度自定義的項目來說,這通常是實現(xiàn)目標的必經(jīng)之路。
第三章:在不能使用XML的地方,為何選擇使用SVG?
在某些情況下,使用SVG可能是一個更合適的選擇。SVG是一種矢量圖像語言,可以創(chuàng)建出動態(tài)且高度自定義的線條和弧線。在OpenSignal等應(yīng)用中,我們廣泛使用了SVG來繪制儀表盤等界面元素。與XML相比,SVG在某些場景下更具優(yōu)勢。
第四章:關(guān)于UI組件的一致性問題及解決方案
在不同的Android系統(tǒng)中,如TouchWhizz、HTC Sense、MotoBlur等,默認的UI組件可能會與原生系統(tǒng)存在顯著差異。為了確保應(yīng)用程序在所有設(shè)備上的展示一致性,我們需要自定義UI組件。雖然這可能需要一些努力,但一旦實現(xiàn),就能確保應(yīng)用程序在所有設(shè)備上的外觀一致。

第五章:性能優(yōu)化與測試策略
為了提升應(yīng)用程序的性能并避免運行緩慢的問題,我們需要采取一系列策略。這包括在運行緩慢的手機上進行測試,以確保在各種環(huán)境下都能流暢運行。我們還應(yīng)該盡量減少XML布局層次并充分利用Android Lint工具來檢查代碼、優(yōu)化性能并清理冗余代碼。通過這些策略,我們可以確保應(yīng)用程序的性能和用戶體驗。
第一章:深入了解代碼提示功能
它為你的代碼提供豐富的信息,并在錯誤萌芽之前為你敲響警鐘。這就像一位經(jīng)驗豐富的導師,在你編寫代碼的過程中,不斷給予你指導和建議,幫助你避免誤區(qū),讓你的編程之路更加順暢。
第二章:利用簡化視圖層次結(jié)構(gòu)

在復雜的界面布局中,視圖層次結(jié)構(gòu)可能會變得混亂。這時,
第三章:使用HierarchyViewer直觀展示布局層次
HierarchyViewer是一個強大的工具,它能讓你直觀地看到布局的層次結(jié)構(gòu)。它能展示布局中的每一層,甚至可以提醒你哪些層次可能導致程序運行緩慢。這就像一位細心的設(shè)計師,幫你找出布局中的瓶頸,優(yōu)化你的代碼。
第四章:合理選擇布局方式
在Android開發(fā)中,選擇合適的布局方式至關(guān)重要。已經(jīng)過時的AbsoluteLayout不再推薦使用。當你面臨在RelativeLayout和LinearLayout之間做出選擇時,優(yōu)先考慮RelativeLayout。因為它能夠幫你更有效地管理視圖層次,使你的界面更加簡潔明了。

第五章:總結(jié)與前瞻
深入理解并應(yīng)用這些建議,可以幫助你提高Android開發(fā)的效率和質(zhì)量。從代碼提示到視圖層次結(jié)構(gòu)的管理,每一個細節(jié)都關(guān)乎你的程序的運行效率和用戶體驗。未來,隨著Android開發(fā)技術(shù)的不斷進步,我們期待更多的工具和技巧出現(xiàn),幫助我們更好地進行開發(fā)。
第一章:初識視圖布局
在移動應(yīng)用的開發(fā)中,我們常常需要實現(xiàn)特定的布局,比如將屏幕分為左右兩個部分。一種直觀的方式是使用LinearLayout,通過水平排列來實現(xiàn)這一需求。
第二章:LinearLayout的實現(xiàn)方式

在LinearLayout中,我們可以輕松地將視圖分為左右兩部分。這種方法直觀且易于理解,只需要設(shè)置每個子視圖的權(quán)重即可。我們還有其他方式可以實現(xiàn)這一需求。
第三章:RelativeLayout的引入
RelativeLayout是一種更為靈活的布局方式,允許我們通過相對位置來布局視圖。盡管它可能在某些情況下看起來更復雜,但它提供了更多的選擇和靈活性。
第四章:RelativeLayout的具體應(yīng)用
在這個例子中,我們使用RelativeLayout來實現(xiàn)同樣的布局。我們創(chuàng)建了一個假想的中心視圖(dummy_center),然后讓兩個TextView分別位于其左右兩側(cè)。這種方法的優(yōu)點是可以更靈活地控制視圖的位置。

第五章:兩種方式的比較與總結(jié)
兩種方式都可以實現(xiàn)將屏幕分為左右兩部分的需求。LinearLayout的方法更直觀,易于理解,而RelativeLayout的方法則提供了更多的靈活性。雖然RelativeLayout的代碼可能看起來更復雜,但它確實給我們提供了更多的選擇和可能性。在選擇使用哪種布局方式時,需要根據(jù)具體的需求和場景來決定。
一、界面布局與圖片整合
當我們需要在每個盒子中加入圖片時,可以采取特定的布局策略。例如,對于盒子A,將其圖片置于屏幕左半邊,盒子B的圖片在右半邊。這可以通過創(chuàng)建層次型的LinearLayout或RelativeLayout來實現(xiàn)。在RelativeLayout中,我們可以更靈活地指定元素間的位置關(guān)系,使得布局更為高效。
二、開發(fā)工具的使用

為了提高開發(fā)效率和識別潛在問題,推薦使用一系列工具。DDMS這類擴展工具可以幫助我們監(jiān)控網(wǎng)絡(luò)調(diào)用、電池使用、垃圾回收等信息,有助于我們及時發(fā)現(xiàn)并解決問題。其中,LittleEye是我目前較為推薦的工具之一。
三: 關(guān)于設(shè)備空間與資源優(yōu)化
考慮到目標設(shè)備的空間限制,我們需要對資源和應(yīng)用大小進行優(yōu)化。部分Android設(shè)備存儲空間有限,因此減少應(yīng)用大小至關(guān)重要。使用XML資源代替PNG可以節(jié)省空間。如果必須使用PNG,建議使用工具如PNGCrush或ImageOptim進行優(yōu)化。
四:應(yīng)對Bug與程序性能提升
針對可能出現(xiàn)的Bug和程序性能問題,建議采取以下措施:

1. 在Android開發(fā)者控制臺檢查自動檢測到的bug。
2. 使用ProGuard來加快應(yīng)用速度并減小文件大小。但需注意,ProGuard會使StackTraces難以處理,因此需要保留Proguard的映射文件。
3. 修改ProGuard配置以顯示StackTraces中的行數(shù)。確保proguard.cfg包含特定設(shè)置。
4. 使用staged rollouts進行逐步推廣,先測試基礎(chǔ)用戶并觀察bug報告。
五:測試與代碼分享

測試是開發(fā)過程中不可或缺的一環(huán)。建議使用真實設(shè)備測試平臺如Device Anywhere和Perfecto Mobile進行虛擬測試。盡管這些平臺在某些情況下可能顯得笨拙,但在連續(xù)測試時能提供寶貴的數(shù)據(jù)。如果條件允許,建議建立“設(shè)備池”進行實地測試。至于分享和博客寫作,分享知識和經(jīng)驗是一種關(guān)愛,值得我們不斷去做。至于第40條建議,我認為強調(diào)的是平衡工作與生活、專注代碼編寫與知識分享的重要性。
一、簽名的步驟
在開發(fā)Android應(yīng)用時,簽名是必不可少的一環(huán)。簽名能夠確保應(yīng)用的完整性和來源可靠性。 a. 創(chuàng)建密鑰:我們需要創(chuàng)建一個密鑰庫,用于存儲簽名所需的私鑰和公鑰。 b. 使用步驟a中產(chǎn)生的密鑰對apk進行簽名:利用創(chuàng)建的密鑰對編譯生成的apk文件進行簽名。二、具體操作
方法一:命令行下對apk簽名(原理)
在命令行下操作,需要我們手動輸入一系列命令來完成簽名過程。 需要找到并打開keytool.exe和jarsigner.exe這兩個工具,它們分別位于jdk1.6.0_24的jrein和bin目錄下。將這兩個軟件的目錄添加到環(huán)境變量path后,就可以通過cmd進行簽名操作了。 簽名的命令如下: D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore (說明:使用-genkey產(chǎn)生密鑰,-alias指定別名,-keyalg選擇RSA算法加密,設(shè)置有效期為4000天,最后指定密鑰庫的位置。) 接下來使用jarsigner進行簽名: D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore (說明:-verbose輸出簽名詳細信息,-keystore指定密鑰庫位置,最后三個參數(shù)是進行簽名的過程。) 注意事項:已經(jīng)使用debug用戶簽名的apk文件不能再進行簽名。正確的步驟應(yīng)該是先導出未簽名的apk文件,然后再進行簽名。方法二:使用Eclipse導出帶簽名的apk

對Android應(yīng)用進行簽名是確保應(yīng)用安全和可靠的重要步驟。通過命令行或Eclipse等工具,我們可以輕松完成簽名過程,為應(yīng)用提供合法的身份認證。在發(fā)布應(yīng)用時,務(wù)必確保已經(jīng)正確簽名,以保護應(yīng)用的完整性和用戶的利益。使用IntelliJ IDEA導出帶簽名的APK:詳細步驟指南
一、簡介
在移動應(yīng)用開發(fā)領(lǐng)域,使用IntelliJ IDEA導出帶簽名的APK是發(fā)布應(yīng)用程序的重要步驟。簽名可以保證應(yīng)用程序的完整性和可信度,確保用戶安全下載和使用。本文將詳細介紹在IntelliJ IDEA中導出帶簽名APK的方法。
二、準備工作
確保你已經(jīng)完成了以下準備工作:

1. 在IntelliJ IDEA中成功創(chuàng)建并開發(fā)完你的Android項目。
2. 準備好簽名用的密鑰文件(Keystore),包括私鑰和證書。如果你還沒有密鑰文件,需要先生成一個。
三、進入導出界面
在IntelliJ IDEA中,按照以下路徑進入導出界面:菜單 -> Tools -> Android -> Export signed apk。
四、選擇簽名方式

在導出界面,你將看到兩種簽名方式:使用已有的簽名配置和使用新的簽名配置。如果你已經(jīng)生成了密鑰文件,可以選擇使用已有的簽名配置;如果你還沒有密鑰文件或者需要生成新的密鑰文件,可以選擇使用新的簽名配置。
五、配置并導出APK
1. 配置簽名信息:根據(jù)你的選擇,輸入密鑰文件的路徑、別名、密碼等信息。
2. 選擇導出的APK文件路徑和名稱。
3. 點擊“導出”按鈕,開始導出帶簽名的APK文件。

4. 等待導出完成,成功后將在指定的路徑找到你的帶簽名APK文件。
六、注意事項
1. 確保使用的密鑰文件安全存儲,避免丟失或泄露。
2. 在導出前,最好先備份你的項目,以防萬一。
3. 簽名后的APK只能在對應(yīng)的密鑰文件下重新簽名,否則將無法安裝和運行。

4. 在發(fā)布應(yīng)用程序前,確保你的APK已經(jīng)通過了充分的測試,以保證用戶的使用體驗和安全。
七、總結(jié)
使用IntelliJ IDEA導出帶簽名的APK是Android開發(fā)的必要環(huán)節(jié)。你應(yīng)該已經(jīng)掌握了詳細的操作步驟和注意事項。在實際操作中,如果遇到問題,可以參考官方文檔或者尋求開發(fā)者社區(qū)的幫助。希望本文能對你有所幫助,祝你在移動應(yīng)用開發(fā)道路上越走越遠!