Android 台灣中文網

標題: 簡單易懂的Android ROM定制與修改教程 [打印本頁]

作者: 暗桌之光    時間: 2012-3-2 15:59
標題: 簡單易懂的Android ROM定制與修改教程
每個人對手機都有不同的要求,這裡我想談談我的修改ROM的方法,其中大部分是總結於論壇中其他帖子,有一小部分是自己總結的經驗。

玩Android手機可為個層次:
       1。最高境界:對Android系統十分熟悉,能夠編寫系統代碼
       2。大大境界:能夠修改代碼和編譯,需要熟悉linux系統和具備編程知識
       3。高手境界:能夠在非代碼級修改ROM,美化ROM。
       4。普通境界:會玩,會設定等
       前兩個層次要花大力氣學習,向我這樣的懶人看樣子是達不到了,只能努力達到第三層。這裡我想跟大家分享一下我的修改ROM的方法,其中大部分是總結與論壇中其他帖子,有一小部分是自己總結的經驗。

修改ROM大致可分為:精簡、增補、美化三類這裡主要討論的是精簡和增補兩個方面,至於美化大家可以參看其他帖子。

一。首先我們來看看ROM中到底有些什麼:
       用WinRAR開啟刷機包後可以看到幾個目錄,下面列出了和我們有關的幾個目錄和說明
            dev_data/apps/ : 系統程式的apk文件目錄,相當於刷機後 "/data/app_s/",這裡的程式刷機後不可卸載
            dev_data/app/  : 用戶程式apk文件目錄,相當於刷機後  "/data/app/",這裡的程式刷機後可卸載。(10月28日以後的版本中才有,以前的版本大家可以自己加這個目錄)
            META-INF/com/google/android/ : 刷機腳本文件
            system/etc/: 存放了一些配置文件
            system/etc/permissions/ : 和軟體權限有關,部分補丁需要在這個目錄中添加文件
            system/lib/ : 系統程式的庫文件存放位置

二。再來認識一下刷機腳本文件
    用recovery刷機時,刷機過程由腳本文件控制。  腳本文件就是壓縮包中 META-INF\com\google\android 目錄下的 update-script文件,用文本編輯器可以開啟。
    腳本文件中有這麼幾條語句是我們關心的
    (1)show_progress 0.1 0 :顯示進度條
         這是用來顯示刷機進度條的,前面的0.1表示進度條的位置,可以改為別的數值(小於1)。後面的數字不清楚是什麼含義,大體上除了最後一條為10,其他都為0。有些ROM在刷機時會出現刷機完成了進度條才走到一半多點,大家可以試試把最後一句改為 show_progress 0.8 10,進度條就可以走到底了。
    (2)幾個關鍵字
         (A)"SYSTEM:" 代表刷機後的系統目錄 = "/system/"
         (B)"INTERNAL:" 代表刷機後的 /data 目錄 = "/data/"
         (C)"PACKAGE:" 代表壓縮包的根目錄
                  例如 "SYSTEM:etc/ " 相當於刷機後的 "/system/etc/" 目錄
                       "PACKAGE:dev_data" 相當於壓縮包中的 dev_data 目錄
           (3) copy_dir PACKAGE:dev_data INTERNAL:
                copy_dir是用來複製目錄的,前一個參數是要複製的目錄,後一個參數是複製到那裡。
               例如 copy_dir PACKAGE:dev_data INTERNAL: 是用來把ROM壓縮包中dev_data目錄中的東西複製到刷機後的"/data/"目錄下
        (4)set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
               設定目錄或文件權限的,使用方法和linux中設定權限的方法類似。
        (5)delete SYSTEM:app/YouTube.apk
               刪除文件,這個一般用不到,要刪除的話,直接刪就是了。

     好了,可以動手精簡和增加程式了

二。精簡系統程式
       所謂精簡實際上就是刪除系統程式,我們用不到的那些程式可以刪除掉。刪除這些程式好處在於(1)有些東西是我們用不到的,顯示在程式列表中很煩人,如果這樣的程式過多也會導致開啟程式列表過慢。(2)有些程式啟動後會佔用記憶體而我們又用不到。例如,簡訊攔截等。(3)有些程式不想用原ROM中自帶的,想換個別的,例如不喜歡ADW,改用LAUNCH PRO等。
    精簡的方法很簡單,用WinRAR開啟ROM,進入dev_data\apps中找到不要的程式,刪除。
    那些程式可以精簡,這個各個機型一般都有精簡列表,網上隨便搜索!
                                             
三。添加程式
    添加程式有兩個方法,一是把程式添加為系統程式,二是添加為用戶程式。 把程式添加為系統程式的好處在於執行速度快(大家這麼說的,我好像沒有體會到),缺點是不能直接卸載,只有通過RE等工具刪除。其實用RE直接刪除系統程序APK文件時並非都卸載乾淨了,不信大家可以看看/data/data/這個目錄,是不是每個程式都對應了一個目標,其目錄名和程式包的名稱相同(不是XXX.APK這個XXX)。
    1。添加系統程式:
         添加系統程式方法最簡單:
         (1)用WinRAR開啟ROM壓縮文件,進入 "\dev_data\app_s" 這個目錄,把要添加的程式的APK文件複製進去。
         (2)用WinRAR開啟要添加進去的APK文件看看「\lib\armeabi」目錄中是否有.so結尾的文件,它們是程式執行時需要用到的庫文件,有的話把他們複製到壓縮包中的「system/lib/」目錄中。有些童鞋在修改ROM的時候添加的程式無法執行,大多屬於這個情況。例如新版本的Google拼音輸入法。
   2。添加用戶程式:
         添加用戶程式稍微麻煩點,但是刷機後可直接卸載。如果用的是10月28日以後的ROM,直接把apk拖入"dev_data/app/"目錄中。這一步很簡單,麻煩的是apk中有庫文件的情況。簡單處理方法同添加系統程式中的第2步,這種方法的缺點是卸載時庫文件還會保留在「system/lib/」中,好在大多數程式都沒有庫文件,少數程式保留下來的庫文件並無大礙。高級點的方法是通過寫腳本進行安裝。
        10月28日以前的ROM在「dev_data/」中沒有app這個目錄,大家可以自己建立(winRAR中點擊右鍵,選創建一個新文件夾),建立好目錄後要在刷機腳本中設定目錄屬性:
                在刷機腳本中找到這一段:
                copy_dir PACKAGE:dev_data INTERNAL:
                set_perm 1000 1000 0771 INTERNAL:app_s
                在其後加上這一句:
                 set_perm 1000 1000 0771 INTERNAL:app
         其中第一句是把ROM中dev_data目錄中的所有東東複製到/data目錄下
         第二句是設定 app_s的權限
         我們加的那一句是設定app的權限

    接下來可以修補,調整ROM了

四。firstboot腳本
       要對ROM進行高級點的設定,可以利用firstboot.sh腳本。firstboot.sh腳本在ROM中的dev_data目錄中。腳本中的代碼是在刷完機後第一次啟動時執行的,利用它可以對系統進行設定,安裝APK等工作。
       看看liudidi1028rom中的腳本片段
            # System default settings
            /system/xbin/sqlite3 $DATABASE "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
            /system/xbin/sqlite3 $DATABASE "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"

            /system/xbin/sqlite3 $DATABASE "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"
      我想大家應該可以猜出這三句代碼的作用了吧。至於腳本這麼寫,不要來問我,我也不熟,大家可以共同研究。
      在腳本中可以使用rm,mv等命令,用它可以直接把某些配置文件覆蓋掉。
       例如: busybox rm /system/etc/某文件  
                   busybox mv /system/etc/某文件
       當然,如果修改的是系統文件,先要取得權限: busybox mount -o remount,rw /system
      之後再改為只讀 :busybox mount -o remount,ro /system
      firstboot.sh很有用,要是哪位大大能寫個初級教程就好了!

五。ROM常見的系統配置文件。
    修改這些文件可以調整系統設定
    1。\system\etc\spn-conf.xml:顯示營運商的
        例如
        <?xml version="1.0" encoding="utf-8"?>
        <spnOverrides>
           <spnOverride
              numeric="46688"
              spn="和信電訊"
              spn_display_rule="SPN_RULE_SHOW_SPN"/>
           <spnOverride
              numeric="46689"
              spn="威寶電信"
              spn_display_rule="SPN_RULE_SHOW_SPN"/>
           <spnOverride
              numeric="466890"
              spn="震旦電信"
              spn_display_rule="SPN_RULE_SHOW_SPN"/>
           </spnOverrides>
       如果下載的ROM中顯示的是英文,可以試著修改這個文件。
   2。 \system\etc\gps.conf:和GPS搜星相關,所謂提高搜星速度就是修改這個文件了
       方法,把文件中 NTP_SERVER=XXXXX.pool.ntp.org改為NTP_SERVER=cn.pool.ntp.org。我試過,這個網站ping的速度的確比原始設定中的那個要快一倍以上
   3。\system\bin\rc:這個大家應該很熟悉了,用來設定Swap,Compcache之類的。
      (1)設定SWAP
      進入文件後找到
        ####################
        ###### Swap ########
        ####################
       其後的代碼是和開啟Swap有關的
       例如
      SWAPNUM=`fdisk -l /dev/block/mmcblk1|grep swap|sed -e 's/ .*//g'`
      if [ -n "$SWAPNUM" ];then
         echo 60 > /proc/sys/vm/swappiness
         swapon $SWAPNUM
      fi
      在每行前面加#註釋掉後就可以不開機啟動swap了
      要改swappiness的大小可以該第三行中的60這個數字。
      
      設定 Compcache大家可以自己試試

    (2)修改記憶體管理參數
       在rc文件中加入這一行
       echo "1536,1536,3072,1536,10240,12800" > /sys/module/lowmemorykiller/parameters/minfree
       其中的數字從左到右為:前台進程、可見進程、次要服務、後台服務、內容供應節點、空進程,其中的數值的單位是4k,也就是說1536 : 4k*1536=6144k=6M
  4。 \system\etc\apns-conf.xml:和網路接入點設定有關
     例如,和移動聯通有關的設定
        <apn carrier="CSL" mcc="454" mnc="00" apn="hkcsl" user="" server="" password="" proxy="192.168.59.51" port="8080" mmsc="http://192.168.58.171:8002/" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms"/>
        <apn carrier="PEOPLES" mcc="454" mnc="12" apn="peoples.net" user="" server="" password="" mmsc="" type="default,supl"/>
        <apn carrier="PEOPLES MMS" mcc="454" mnc="12" apn="170170" user="" server="" password="" mmsc="http://mms.peoples.com.hk/mms" mmsproxy="172.31.31.36" mmsport="8080" type="mms"/>
        <apn carrier="3 HK" mcc="454" mnc="03" apn="mobile.three.com.hk" user="*" server="*" password="*" mmsc="http://mms.um.three.com.hk:10021/mmsc" mmsproxy="172.20.97.116" mmsport="8799"/>

    如果ROM中沒有自帶apn設定,可以在這個文件中加入,如果ROM中顯示的接入點名稱不是中文也可以通過修改這個來實現

注意
    1. 修改ROM時最好不要解壓縮,直接在WINRAR中操作,因為ROM應該是在Linux中壓縮的,壓縮格式可能會和在weindows下直接用winRAR壓縮出來的不同。
    2. 包中的文件不要有中文文件名
    3. 刷機前一定要備份,修改的ROM要是有什麼地方弄錯了很容易進不了系統

    大家要是覺得有幫助就頂個帖吧!
作者: leo2588366    時間: 2012-3-2 17:50
話說 我只在普通境界的高一點的地方  不過離高手手境界還是有點距離   我還有須多東西要學習的...
作者: 艾力克    時間: 2012-3-3 00:05
寫的真的不錯,辛苦了...

話說我是在哪個層次呢???
作者: cracky    時間: 2012-3-3 02:08
艾力克 發表於 2012-3-3 00:05
寫的真的不錯,辛苦了...

話說我是在哪個層次呢???

小弟我正在朝「大大」邁進XD
作者: apocaho    時間: 2012-3-10 12:07
大家都很想學習~
作者: steve0000    時間: 2012-3-26 00:07
雖然不太了解 知道寫的真的不錯,大大辛苦了
作者: hjkl1234    時間: 2012-3-26 00:57
有些不清楚 但大概我猜我在接近高手那邊......
謝謝大大的說明  最進在探討這些東西說
作者: hunter0529    時間: 2012-3-26 20:39
哇~大大講的好
小的受益良多
努力學習中
作者: 辜士豪    時間: 2012-4-1 21:43
妳好猛! 我慢慢玩 安卓真是深不可測
作者: lai50    時間: 2012-4-2 15:38
受益良多!!!!!!!!!!
作者: pcstrrl0811    時間: 2012-4-2 21:22
凡人境界的我不小心走進來了,果然看不懂,不過看來是好文啊!!

作者: yenyu0312    時間: 2012-4-3 02:44
感謝大大的詳細分享
感恩阿
作者: 寂寞獅子座    時間: 2012-4-7 04:46
又學到東西~
謝謝大大的分享!!!
作者: TSYI    時間: 2012-4-7 15:12
很複雜似的,不過感謝分享
作者: wai0124    時間: 2012-4-8 16:23
很高深..好難明白喔T^T
作者: zergann    時間: 2012-4-12 00:53
寫的粉清楚~~可是偶看的粉模糊~~
呵呵~偶還是負責玩就好嚕^^
作者: hzc386    時間: 2012-4-13 00:14
非常感謝~太棒了
作者: moriwang    時間: 2012-4-14 14:16
太深奧了看都看不懂
作者: wshmllii    時間: 2012-4-19 12:16
用心分類~細心編文
感謝樓主無私的奉獻與分享~
作者: nickliang    時間: 2012-4-30 12:25
摁摁~
學到嘞許多~

可以問一下~有關第一次刷機所開啟的桌布要去哪修改嗎?
謝謝~
作者: chuiwenchiu    時間: 2012-5-3 00:00

哇~大大講的好
小的受益良多
努力學習中
作者: wannnnnabe    時間: 2012-5-10 14:05
謝謝大大的分享!!!
作者: Eken    時間: 2012-5-16 15:14
正準備開始研究客製化ROM給自己用。這篇介紹真不錯
作者: Liszt-mazeppa    時間: 2012-6-22 19:28
其實..我是電腦白痴...看不懂
作者: mm9679    時間: 2012-6-23 15:44
細心的編文要用心慢慢
看才懂謝謝
作者: houbou    時間: 2012-7-2 23:23
不能用快速評分 只能用言語讚美大大的用心良苦了~!
作者: vicent-yang    時間: 2012-7-7 03:47
大家都很想學習~
作者: 笑巨豆    時間: 2012-7-13 10:22
看得眼淚都留下來了,呵呵。。。。。。。。。。。。。
作者: tim198311    時間: 2012-7-15 21:17
cracky 發表於 2012-3-3 02:08
小弟我正在朝「大大」邁進XD

ROM修改過後是不是需要重新簽名?那工具要用甚麼?大大可以提供仔點嗎?
作者: cracky    時間: 2012-7-15 21:35
tim198311 發表於 2012-7-15 21:17
ROM修改過後是不是需要重新簽名?那工具要用甚麼?大大可以提供仔點嗎?

ROM的話,簽名可以無視Q_Q

我自己是無視簽名XDD
作者: tim198311    時間: 2012-7-15 22:05
cracky 發表於 2012-7-15 21:35
ROM的話,簽名可以無視Q_Q

我自己是無視簽名XDD

那........為甚麼修改後再安裝會出問題,就是剛開始就安裝中斷,是不能刪除或取代原ROM中檔案,一定要用腳本刪嗎?
作者: cracky    時間: 2012-7-15 22:22
tim198311 發表於 2012-7-15 22:05
那........為甚麼修改後再安裝會出問題,就是剛開始就安裝中斷,是不能刪除或取代原ROM中檔案,一定要用腳本 ...

要看一下報錯的報告吧...

看是哪裡出錯
作者: duck789qq    時間: 2012-7-16 02:19
謝謝你 研習中!!
作者: gn00633086    時間: 2012-7-16 18:30
真的很厲害懂著這麼多
作者: tom840303    時間: 2012-7-17 08:04
普通級 高手級還差一點點><
作者: qqq561115    時間: 2012-7-19 16:05
新手來學習囉
作者: tobyyeh    時間: 2012-7-21 21:21
感謝大大分享
作者: 0066    時間: 2012-7-31 23:51
連邊都構不著、有看沒有懂
作者: lilybbng    時間: 2012-8-7 16:58
= =看來我還只是個普通組。。。
感謝分享~回頭自己研究下~

不過想問一下
有能把HTC Sense換成ss Launcher為默認的可能嗎?
或者說兩者合併下= =、(不知您能看得懂不。。。)
作者: lis4080    時間: 2012-8-24 10:28
頂一下
我也在正在學習~
多謝您的分享
作者: power001    時間: 2012-9-1 13:51
我都還沒找到門呢~~
作者: keho1205    時間: 2012-9-23 14:26
完全看不懂你再貢三小.我資質不夠還是花錢弄..哈哈

你的世界真是太厲害了
作者: shuttleantant    時間: 2012-10-5 12:14
本帖最後由 shuttleantant 於 2012-10-5 13:43 編輯

辛苦了,寫這麼詳細的步驟,只想提醒幾點,因為你應該是使用某種 ROM,所以有些在其他 ROM image
中是不見得有的:
1. dev_data/apps/ 和 dev_data/app 並非每個 ROM 都有
2. firstboot.sh 這個 shell script 也不是每個 ROM 都有
3. system/bin/rc 不見的每種 ROM 都支援
作者: a0926559361    時間: 2012-10-6 18:14
淺顯易懂  果然簡單多了   謝分享
作者: upspeeder    時間: 2012-10-18 00:21
good JOB ~~~
作者: pypypk    時間: 2012-10-18 18:47
剛玩刷機
先參考
謝謝大大的努力
作者: t123937    時間: 2012-10-22 13:50
那些文件是C語言嗎
作者: asia275    時間: 2012-10-22 22:48
版主寫的這麼詳細,
只是覺得比較複雜一點了,
這可能需要時間摸索這方面了解,
謝謝版主的分享。
作者: Tony-Chuang    時間: 2012-10-24 11:25
看來想進一步了解ROM運作方式,還需要一大段路要走,謝謝分享

作者: marko@1122    時間: 2012-10-24 22:09
好詳細,細心編文
感謝樓主無私的奉獻與分享~
作者: csu    時間: 2012-10-25 15:02
我不小心走進來了,果然看不懂,不過看來是好文啊!!
作者: jeffalex    時間: 2012-10-28 11:15
目前連第四層都不熟
努力上第四層

作者: bb775Gdan    時間: 2012-11-2 11:42
good.............................
作者: stc581    時間: 2012-12-2 02:46
3QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
作者: pintung    時間: 2012-12-2 15:13
看了一遍,我隨然是初學者,請大大多發表這類文件,慢慢學也會滴水成川。
作者: oldhu    時間: 2012-12-3 15:35
雖然不太了解 知道寫的真的不錯
thanks a lot
作者: yf_0520    時間: 2012-12-4 02:27
good, 好有用...............
作者: zip99    時間: 2012-12-4 15:31
thank you for sharing so useful instruction
that helps me a lot


^^
作者: limited2000hk    時間: 2012-12-12 20:56
我只在普通境界
作者: zvxbcn    時間: 2012-12-19 23:34
我想我應該只是菜鳥吧....目前只會照著說明的步驟刷rom      看來我還有好多要學  

作者: pel3234    時間: 2012-12-24 00:55
不太明白,但會慢慢學習
作者: lxy740201    時間: 2012-12-24 08:49
我還有須多東西要學習.
作者: gn02145919    時間: 2013-1-6 17:15
我慢慢玩 安卓真是深不可測.話說我是在4。普通境界
作者: 8551648    時間: 2013-1-7 09:00
看完整篇後,還是覺得自己改還是有風險在,謝謝分享
還是用別人優化的好了~~哈!!
作者: loop9977    時間: 2013-1-8 09:56

作者: ldtakl    時間: 2013-1-8 21:35
解說清楚,謝謝分享。
作者: popowolf    時間: 2013-1-10 00:42
對於新手來說這無疑提供非常大的參考訊息
也縮短了摸索與找尋的方向
太感謝了
作者: ay10987    時間: 2013-1-12 12:13
只簡略的懂程式碼而已
也好想來學一學喔
作者: davie841113    時間: 2013-1-12 15:28
請問一下!
我的平板更新方法是先用一個6mb的img檔放在sd卡
重開機之後會自動更新!
之後會卡在一個小綠人畫面!
再把記憶卡拔除,灌入一個158mb的img檔!
按reset按扭重開!
就會再次自動更新!
請問意思是:
6mb是boot.img
158mb是firmware.img 嗎??
作者: ant7049    時間: 2013-1-12 16:12
大家都很想學習~
作者: 1966aabb    時間: 2013-1-12 17:06
寫得很讚,只是大部分仍然看不太懂
作者: bbggbbgg    時間: 2013-1-19 19:25
太深澳了....努力中~~
作者: tjsking    時間: 2013-1-20 19:05
看了這麼多的說明,一個頭兩個大.不能再省略一點步驟嗎,謝謝,大大辛苦了
作者: a48602    時間: 2013-1-21 10:52
向Android又邁進一步了,謝謝樓主用力的分享。
作者: copymantw    時間: 2013-1-26 07:12
我也要努力向您看齊,至少達到第三層。
但是還是希望向第二層及第一層前進。
謝謝您的分享!
作者: 瘋魔御守矢    時間: 2013-1-29 10:16
我果然是普通境界人   .好多好多不知道在講啥.果然要多學習ㄌ?哈哈
作者: flyaway    時間: 2013-1-29 10:53
詳細的解說,不過我只會刷機
作者: hjk71115987    時間: 2013-2-3 11:25
非常感謝~太棒了
作者: Jeffantasy    時間: 2013-2-5 04:18
這個真的太強大了...
作者: we100    時間: 2013-2-5 09:16
雖然標題寫 [簡單易懂] 但是看完還是霧煞煞
作者: gi1867    時間: 2013-2-8 21:46
吃了這麼久的米飯,總要知道米怎麼種的
作者: a765177619    時間: 2013-2-9 15:52
真是不錯的教學文~只是剛入門  看起來有一點難度~先研究先
作者: apple87731251    時間: 2013-2-10 13:58
原來如此,我在這方面知識太淺薄了,還有恨多要雪的
作者: toadskin    時間: 2013-2-11 22:37
感謝分享及說明,望塵莫及啊,呵呵~
作者: sing04780    時間: 2013-2-13 18:41
good 十分好用
作者: kaito228    時間: 2013-2-15 13:43
小弟應該連入門那個等級都不到吧
謝謝大大的文章分享,學習學習
作者: tonking0331    時間: 2013-2-18 12:35
感謝分享~獲益良多
作者: bbspill    時間: 2013-2-19 09:03
感謝, 找個時間深入的研究研究
作者: bbspill    時間: 2013-2-19 18:57
謝謝, 不知版主何時要再撰文, 寫更深入一點點的.
作者: FRIEND    時間: 2013-2-22 12:10
Thanks for your guide.
作者: yoyoman0105    時間: 2013-2-26 10:01
果然 一山還有一山高~~~

不過 我還在山腳下 ... 囧
作者: yunger    時間: 2013-2-26 11:07
我是才剛剛接觸的新手,雖然還看不懂,不過我會努力研究
希望有朝一日能達到大大的境界。
作者: 結城晶    時間: 2013-3-1 22:11
謝謝分享此文
看來我要多多研究
作者: siuemily    時間: 2013-3-2 03:00
謝謝分享
作者: siuemily    時間: 2013-3-2 08:41
cccccccccccccccccccccccccc
作者: wangfood    時間: 2013-3-13 13:14
我還有須多東西要學習的...
作者: 隱藏版    時間: 2013-3-13 13:40
看來我要學習的地方還多的哩....
作者: ysbledmh    時間: 2013-3-20 11:00
感謝大大的熱心發文分享
作者: 子恩車    時間: 2013-3-20 13:41
本帖最後由 子恩車 於 2013-3-20 13:43 編輯

昨天就在想加一些程式到下載來的rom裡面 今天就看到這篇
感覺很詳細 不過現在用手機看 等回家來去用電腦研究研究

感謝大大分享喔^^
作者: mrcarlcheung    時間: 2013-4-6 15:00
深奧! 努力學習中!




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1