最近小的再因工作需要接了一些Android的plugin,
由於跟android真的很不熟,
參數一堆又看不懂,
真的是怎麼接怎麼錯...So Sad...
不過也因此有了些小心得,
在此記錄一下,
希望可以使下次少走些冤枉路~
那麼,就先從AndroidManifest.xml開始記錄囉~!

--------
動機:
一開始很開心想說很多都有支援unity的plugin
但是當需要的plugin不只一個時(比如說接了google play games又要接facebook),
就得額外處理AndroidManifest.xml,
不然檔案蓋來蓋去時,
沒意外不是build不過就是功能伍法正確執行...悲劇啊...

回到主題:
如果沒意外,大家可以在專案中找到這個檔案,
主要記錄了該專案的依些資訊,
如使用了哪些activity、需要使用到哪些權限、版本號等等,
以下再慢慢介紹,
沒意外它應該長成這樣:
<?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-sdk/>
    <uses-permission/>
    <permission/>
    <permission-tree/>
    <permission-group/>
    <instrumentation/>
    <uses-configuration/>  
    <uses-feature/>  
    <supports-screens/> 
</manifest>

----------
<manifest>
App的基本設定,如安裝App的位置、版本號、樣式等設定
範例:
<manifest xmlns:android= "http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" ...>  
部份參數說明:
xmlns:android 定義android命名空間,一般為http://schemas.android.com/apk/res/android
android:installLocation 安裝的位置,分別為:
 - internalOnly  只能安裝在手機上
 - auto 自動
 - preferExternal  希望裝在記憶卡中
android:theme App的樣式,如隱藏標題、背景色系、全螢幕等設定
package app包名
android:versionName 版本號,會於遊戲中顯示
android:versionCode 上架版號,須比上一個版本大
----------
<activity>
宣告使用到的activity與其相關參數,
如果沒有宣告,其他程式使用到該activity時可能會因找不到而發生錯誤
範例:
<activity android:name="com.exampleapp.AppActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|touchscreen"... >
</activity>

部份參數說明:
android:name activity名稱,由package + 子包名 + activity名稱組成
android:launchMode 加載的方式,分別為standard、singleTop、singleTask、singleInstance
android:label 於畫面上方的名稱
android:configChanges 用於捕獲手機狀態改變,當狀態改變時,呼叫onConfigurationChanged()
----------
<intent-filter>
Intent filter內會設定action、data與category
----------
<action />
常見到的用法為設定程式的進入口,
一份App只能有一個name的進入點
範例:
<action android:name="android.intent.action.MAIN" />
----------
<category/>
長見使用於該App是否顯示於列表中,
一個App基本上只會有一個android.intent.category.LAUNCHER
範例:
<category android:name="android.intent.category.LAUNCHER" />
----------
<meta-data/>
包含了name與value,
如果想在activity中使用到metadate的值,
則需要在AndroidManifest中先定義
範例:
<meta-data android:name="com.sample.Area" android:value="TW" />
----------
<uses-sdk />
版號需求設定
範例:
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="23" />
部份參數說明:
android:minSdkVersion 最低相容版號
android:targetSdkVersion 目標版號
----------
<uses-permission />
權限需求,跟使用者要權限,如開wifi、開網路、藍芽等等
範例:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

----------
<uses-feature/> 
App限制,如螢幕可點擊、支援多點觸控、版本等等
範例:
<uses-feature android:name="限制" android:required="false" />
部份參數說明:
<uses-feature android:name="android.hardware.touchscreen" android:required="true" /> 需要觸控螢幕
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="true" /> 需要多點觸控
----------

其他部分沒寫到,
因為還沒弄到或是不熟...
就先不寫出來誤人子弟了~

arrow
arrow
    文章標籤
    Android AndroidManifest plugin
    全站熱搜

    WilsonYo 發表在 痞客邦 留言(0) 人氣()