導航:首頁 > APP軟體 > androidapp命名空間

androidapp命名空間

發布時間:2023-02-25 23:34:22

『壹』 有時android studio使用xml:app命名空間代碼不提示時該怎麼解決

在xml文件中如果一開始寫錯了,刪除掉一個,是沒有進行提示,你可以像使用eclipse一樣,設置一個快捷鍵,可以自動提示代碼.

『貳』 Android是如何使用AndroidManifest.xml的

一、關於AndroidManifest.xml

AndroidManifest.xml 是每個android程序中必須的文件。它位於整個項目的根目錄,描述了package中暴露的組件(activities, services, 等等),他們各自的實現類,各種能被處理的數據和啟動位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Intent Receivers,還能指定permissions和instrumentation(安全控制和測試)

二、AndroidManifest.xml結構

<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</activity>
<activity-alias>
<intent-filter></intent-filter>
<meta-data/>
</activity-alias>
<service>
<intent-filter></intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter></intent-filter>
<meta-data/>
</receiver>
<provider>
<grant-uri-permission/>
<meta-data/>
</provider>
<uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
</manifest>

三、各個節點的詳細介紹

上面就是整個am(androidManifest).xml的結構,下面以外向內開始闡述~~

1、第一層(<Manifest>):(屬性)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>

A、xmlns:android

定義android命名空間,一般為http://schemas.android.com/apk/res/android,這樣使得Android中各種標准屬性能在文件中使用,提供了大部分元素中的數據。


B、package

指定本應用內java主程序包的包名,它也是一個應用進程的默認名稱


C、sharedUserId

表明數據許可權,因為默認情況下,Android給每個APK分配一個唯一的UserID,所以是默認禁止不同APK訪問共享數據的。若要共享數據,第一可以採用Share Preference方法,第二種就可以採用sharedUserId了,將不同APK的sharedUserId都設為一樣,則這些APK之間就可以互相共享數據了。詳見:http://wallage.blog.163.com/blog/static/17389624201011010539408/

D、sharedUserLabel

一個共享的用戶名,它只有在設置了sharedUserId屬性的前提下才會有意義


E、versionCode

是給設備程序識別版本(升級)用的必須是一個interger值代表app更新過多少次,比如第一版一般為1,之後若要更新版本就設置為2,3等等。。。


F、versionName

這個名稱是給用戶看的,你可以將你的APP版本號設置為1.1版,後續更新版本設置為1.2、2.0版本等等。。。


G、installLocation

安裝參數,是Android2.2中的一個新特性,installLocation有三個值可以選擇:internalOnly、auto、preferExternal

選擇preferExternal,系統會優先考慮將APK安裝到SD卡上(當然最終用戶可以選擇為內部ROM存儲上,如果SD存儲已滿,也會安裝到內部存儲上)

選擇auto,系統將會根據存儲空間自己去適應

選擇internalOnly是指必須安裝到內部才能運行

(註:需要進行後台類監控的APP最好安裝在內部,而一些較大的游戲APP最好安裝在SD卡上。現默認為安裝在內部,如果把APP安裝在SD卡上,首先得設置你的level為8,並且要配置android:installLocation這個參數的屬性為preferExternal)


2、第二層(<Application>):屬性

一個AndroidManifest.xml中必須含有一個Application標簽,這個標簽聲明了每一個應用程序的組件及其屬性(如icon,label,permission等)

<application android:allowClearUserData=["true" | "false"]
android:allowTaskReparenting=["true" | "false"]
android:backupAgent="string"
android:debuggable=["true" | "false"]
android:description="string resource"
android:enabled=["true" | "false"]
android:hasCode=["true" | "false"]
android:icon="drawable resource"
android:killAfterRestore=["true" | "false"]
android:label="string resource"
android:manageSpaceActivity="string"
android:name="string"
android:permission="string"
android:persistent=["true" | "false"]
android:process="string"
android:restoreAnyVersion=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme" >
</application>

A、android:allowClearUserData('true' or 'false')

用戶是否能選擇自行清除數據,默認為true,程序管理器包含一個選擇允許用戶清除數據。當為true時,用戶可自己清理用戶數據,反之亦然


B、android:allowTaskReparenting('true' or 'false')

是否允許activity更換從屬的任務,比如從簡訊息任務切換到瀏覽器任務


C、android:backupAgent

這也是Android2.2中的一個新特性,設置該APP的備份,屬性值應該是一個完整的類名,如com.project.TestCase,此屬性並沒有默認值,並且類名必須得指定(就是個備份工具,將數據備份到雲端的操作)


D、android:debuggable

這個從字面上就可以看出是什麼作用的,當設置為true時,表明該APP在手機上可以被調試。默認為false,在false的情況下調試該APP,就會報以下錯誤:

Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.

Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.


E、android:description/android:label

此兩個屬性都是為許可提供的,均為字元串資源,當用戶去看許可列表(android:label)或者某個許可的詳細信息(android:description)時,這些字元串資源就可以顯示給用戶。label應當盡量簡短,之需要告知用戶該許可是在保護什麼功能就行。而description可以用於具體描述獲取該許可的程序可以做哪些事情,實際上讓用戶可以知道如果他們同意程序獲取該許可權的話,該程序可以做什麼。我們通常用兩句話來描述許可,第一句描述該許可,第二句警告用戶如果批准該許可權會可能有什麼不好的事情發生


F、android:enabled

Android系統是否能夠實例化該應用程序的組件,如果為true,每個組件的enabled屬性決定那個組件是否可以被 enabled。如果為false,它覆蓋組件指定的值;所有組件都是disabled。


G、android:hasCode('true' or 'false')

表示此APP是否包含任何的代碼,默認為true,若為false,則系統在運行組件時,不會去嘗試載入任何的APP代碼

一個應用程序自身不會含有任何的代碼,除非內置組件類,比如Activity類,此類使用了AliasActivity類,當然這是個罕見的現象

(在Android2.3可以用標准C來開發應用程序,可在androidManifest.xml中將此屬性設置為false,因為這個APP本身已經不含有任何的JAVA代碼了)

H、android:icon

這個很簡單,就是聲明整個APP的圖標,圖片一般都放在drawable文件夾下

I、android:killAfterRestore

J、android:manageSpaceActivity

K、android:name

為應用程序所實現的Application子類的全名。當應用程序進程開始時,該類在所有應用程序組件之前被實例化。

若該類(比方androidMain類)是在聲明的package下,則可以直接聲明android:name="androidMain",但此類是在package下面的子包的話,就必須聲明為全路徑或android:name="package名稱.子包名成.androidMain"

L、android:permission

設置許可名,這個屬性若在<application>上定義的話,是一個給應用程序的所有組件設置許可的便捷方式,當然它是被各組件設置的許可名所覆蓋的

M、android:presistent

該應用程序是否應該在任何時候都保持運行狀態,默認為false。因為應用程序通常不應該設置本標識,持續模式僅僅應該設置給某些系統應用程序才是有意義的。

N、android:process

應用程序運行的進程名,它的默認值為<manifest>元素里設置的包名,當然每個組件都可以通過設置該屬性來覆蓋默認值。如果你想兩個應用程序共用一個進程的話,你可以設置他們的android:process相同,但前提條件是他們共享一個用戶ID及被賦予了相同證書的時候

O、android:restoreAnyVersion

同樣也是android2.2的一個新特性,用來表明應用是否准備嘗試恢復所有的備份,甚至該備份是比當前設備上更要新的版本,默認是false

P、android:taskAffinity

擁有相同的affinity的Activity理論上屬於相同的Task,應用程序默認的affinity的名字是<manifest>元素中設定的package名


Q、android:theme

是一個資源的風格,它定義了一個默認的主題風格給所有的activity,當然也可以在自己的theme裡面去設置它,有點類似style。



不過現在在android stuido 上面 版本控制已經使用Gradle了。

『叄』 android中xml中有些控制項的屬性裡面有 "app:.." ,此處的app:是什麼意思和一般的android:有什麼區別

xmlns:Android=」http://schemas.android.com/apk/res/android」

xmlns:app=」http://schemas.android.com/apk/res-auto」

xmlns:cutstom="http://schemas.android.com/apk/res/com.example.customview"

android 和 app 都是xml 裡面的命名空間,android 是系統默認的,app是自定義的,你改成其它名字也可以,常用於自定義控制項的自定義屬性,res-auto會自動查找項目下的自定義屬性,也可以在後面跟上包名

--------------------
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<!--這里的name跟xmlns裡面的app沒關系,只是在自定義view裡面通過這個取自定義屬性-->
<declare-styleablename="CustomText">
<attrname="tsize"format="dimension"/>
<attrname="tcolor"format="color"/>
</declare-styleable>
</resources>
---------------------
xmlns:app=」http://schemas.android.com/apk/res-auto」

<com.example.customview.CustomTextView
app:tsize="5dp"
android:text="123"
>
</com.example.customview.CustomTextView>

『肆』 app:和android:namespace的區別

在 Android Studio 上為第三方和自定義控制項寫命名空間就比較容易了,直接統一寫為 xmlns:app=」http://schemas.android.com/apk/res-auto」 即可,無需帶上麻煩的包名,當然,如果你在 Android Studio並且使用 Gradle 構建的時候,不這樣寫也無法通過編譯

『伍』 如何理解Android中的xmlns

首先,我們先來看下到底什麼是xmlns,它是 XML 文檔中的一個概念:英文叫做 XML namespace,中文翻譯為 XML 命名空間。一講到命名空間,我想很多人會聯想到C++中的namespace和Java中的 packagename,而這兩者的作用都是為了解決命名上的沖突(例如類名,介面名等)。類似的,XML namespace也是為了解決 XML 中元素和屬性命名沖突,因為 XML 中的標簽並不是預定義的,這一點與 HTML 是有區別的,HTML 中的標簽是預定義的,所以我們會遇到命名沖突的問題。

XML 命名空間定義語法為xmlns:namespace-prefix="namespaceURI",一共分為三個部分:

xmlns:聲明命名空間的保留字,其實就是XML中元素的一個屬性;

namespace-prefix:命名空間的前綴,這個前綴與某個命名空間相關聯;

namespaceURI:命名空間的唯一標識符,一般就是一個URI引用。

通過上面的內容的講解,我們對命名空間有了一定的了解,下面我們通過一個例子引用來說明一下xmlns屬性是如何解決命名沖突的:

命名沖突
在 XML 中,元素名稱是由開發者定義的,當兩個不同的文檔使用相同的元素名時,就會發生命名沖突。這個 XML 文檔攜帶著某個表格中的信息:

<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>

這個 XML 文檔攜帶有關桌子的信息:

<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

假如這兩個 XML 文檔被一起使用,由於兩個文檔都包含帶有不同內容和定義的 <table> 元素,就會發生命名沖突。XML 解析器無法確定如何處理這類沖突。

使用命名空間(Namespace)
這個XML文檔攜帶著某個表格中的信息:

<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

此XML文檔攜帶著有關一件傢具的信息:

<f:table xmlns:f="http://www.w3school.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

我們為<table>標簽添加了一個xmlns屬性,並在每個標簽前面都添加了相應的前綴,這個前綴是一個與某個命名空間相關聯的限定名稱,這個前綴就代表後面那個 URI 引用,或者說一個縮寫。

關於xmlns就先簡單講到這里,大家如果要深入了解的話,可以點擊本文中的跳轉鏈接,下一節我們來看下 Android 中的那些xmlns。

Android中的xmlns

在Android中,目前我們碰到的xmlns一共有三種:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"

android

命名空間android用於 Android 系統定義的一些屬性。

app

命名空間app用於我們應用自定義的一些屬性,這個與 Android 自定義屬性和系統控制項擴展應該有關系,大家可以再繼續研究一下。

tools

根據官方定義,tools命名空間用於在 XML 文檔記錄一些,當應用打包的時候,會把這部分信息給過濾掉,不會增加應用的 size,說直白點,這些屬性是為IDE提供相關信息

閱讀全文

與androidapp命名空間相關的資料

熱點內容
sqlldr控制文件詳解 瀏覽:614
做界面用哪個編程語言 瀏覽:942
怎麼把網站打包成蘋果手機 瀏覽:913
補丁在哪個文件夾 瀏覽:170
類似安全文件的軟體 瀏覽:723
為什麼編程要學這門語言 瀏覽:678
網卡的配置文件目錄 瀏覽:960
計算器單片機編程叫什麼 瀏覽:736
網站編輯需要會什麼 瀏覽:622
單片機程序計數器的功能 瀏覽:917
網路攝像頭怎麼接虛擬儲存器 瀏覽:84
好壓IMG壓縮文件轉換成光碟 瀏覽:588
前端json格式如何排序 瀏覽:821
ocx實現選擇保存文件 瀏覽:986
office2007教程免費下載 瀏覽:489
pop編程是什麼 瀏覽:760
三星升級系統聯接失敗 瀏覽:929
微信忘記獨立密碼 瀏覽:555
spike如何編程 瀏覽:503
javajlabel位置 瀏覽:728

友情鏈接