Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
³ÖÐø¼¯³ÉÖ®´úÂëÖÊÁ¿¹ÜÀí-Sonar [Èý]
 
À´Ô´:csdn ·¢²¼ÓÚ:2017-11-8
  5247  次浏览      28
 

±¾ÎÄÊǵÚÈýƪ,µÚһƪ³ÖÐø¼¯³ÉÖ®Jenkins+Gitlab¼ò½é [Ò»]£¬µÚ¶þƪÊÇ£º³ÖÐø¼¯³ÉÖ®Jenkins+GitlabʵÏÖ³ÖÐø¼¯³É [¶þ]

Sonar½éÉÜ

Sonar ÊÇÒ»¸öÓÃÓÚ´úÂëÖÊÁ¿¹ÜÀíµÄ¿ª·Åƽ̨¡£Í¨¹ý²å¼þ»úÖÆ£¬Sonar ¿ÉÒÔ¼¯³É²»Í¬µÄ²âÊÔ¹¤¾ß£¬´úÂë·ÖÎö¹¤¾ß£¬ÒÔ¼°³ÖÐø¼¯³É¹¤¾ß¡£Óë³ÖÐø¼¯³É¹¤¾ß£¨ÀýÈç Hudson/Jenkins µÈ£©²»Í¬£¬Sonar ²¢²»ÊǼòµ¥µØ°Ñ²»Í¬µÄ´úÂë¼ì²é¹¤¾ß½á¹û£¨ÀýÈç FindBugs£¬PMD µÈ£©Ö±½ÓÏÔʾÔÚ Web Ò³ÃæÉÏ£¬¶øÊÇͨ¹ý²»Í¬µÄ²å¼þ¶ÔÕâЩ½á¹û½øÐÐÔÙ¼Ó¹¤´¦Àí£¬Í¨¹ýÁ¿»¯µÄ·½Ê½¶ÈÁ¿´úÂëÖÊÁ¿µÄ±ä»¯£¬´Ó¶ø¿ÉÒÔ·½±ãµØ¶Ô²»Í¬¹æÄ£ºÍÖÖÀàµÄ¹¤³Ì½øÐдúÂëÖÊÁ¿¹ÜÀí¡£

ÔÚ¶ÔÆäËû¹¤¾ßµÄÖ§³Ö·½Ã棬Sonar ²»½öÌṩÁË¶Ô IDE µÄÖ§³Ö£¬¿ÉÒÔÔÚ EclipseºÍ IntelliJ IDEA ÕâЩ¹¤¾ßÀïÁª»ú²é¿´½á¹û£»Í¬Ê± Sonar »¹¶Ô´óÁ¿µÄ³ÖÐø¼¯³É¹¤¾ßÌṩÁ˽ӿÚÖ§³Ö£¬¿ÉÒԺܷ½±ãµØÔÚ³ÖÐø¼¯³ÉÖÐʹÓà Sonar¡£

´ËÍ⣬Sonar µÄ²å¼þ»¹¿ÉÒÔ¶Ô Java ÒÔÍâµÄÆäËû±à³ÌÓïÑÔÌṩ֧³Ö£¬¶Ô¹ú¼Ê»¯ÒÔ¼°±¨¸æÎĵµ»¯Ò²ÓÐÁ¼ºÃµÄÖ§³Ö¡£

Sonar²¿Êð

[root@linux-node1 ~]# yum install -y java-1.8.0
[root@linux-node1 ~]# c d /usr/local/src
Èí¼þ°üÎÒÃÇͨ¹ýwget»òÕßÏÂÔØ£¬ rzÉÏ´«µ½·þÎñÆ÷
#Èí¼þ°üÏÂÔØ£ºhttps://sonarsource.bintray.com /Distribution/ sonarqube/ sonarqube-5.6.zip

[root@linux-node1 src]# unzip sonarqube -5.6.zip
[root@linux-node1 src]# mv sonarqube-5.6 /usr/local/
[root@linux-node1 src]# ln -s /usr/local/ sonarqube-5.6/ / usr/local/sonarqube

SonarµÄÏà¹ØÏÂÔØºÍÎĵµ¿ÉÒÔÔÚÏÂÃæµÄÁ´½ÓÖÐÕÒµ½£ºhttp://www.sonarqube.org/downloads/¡£ÐèҪעÒâ×îаæµÄSonarÐèÒªÖÁÉÙJDK 1.8¼°ÒÔÉϰ汾¡£

ÉÏÆªÎÄÕÂÎÒÃÇÒѾ­¿ÉÒԳɹ¦µÄʹÓÃgit½øÐÐÀ­È¥£¬SonarµÄ¹¦ÄܾÍÊÇÀ´¼ì²é´úÂëÊÇ·ñÓÐBUG¡£³ýÁ˼ì²é´úÂëÊÇ·ñÓÐbug»¹ÓÐÆäËûµÄ¹¦ÄÜ£¬±ÈÈç˵£ºÄãµÄ´úÂë×¢ÊÍÂÊÊǶàÉÙ£¬´úÂëÓÐһЩ½¨Ò飬±àдÓï·¨µÄ½¨Òé¡£ËùÒÔÎÒÃǽÐÖÊÁ¿¹ÜÀí

Sonar»¹¿ÉÒÔ¸ø´úÂë´ò·Ö£¬²¢ÇÒÒýÓÃÁ˼¼ÊõÕ¬µÄ¹¦ÄÜ£¨¸æËßÄãÓÐºÜ¶àµØ·½Ã»¸Ä£©

Sonar²¿Êð

[root@linux-node1 ~] # yum install -y java-1.8.0
[root@linux-node1 ~] # cd /usr/local/src
Èí¼þ°üÎÒÃÇͨ¹ýwget»òÕßÏÂÔØ£¬ rzÉÏ´«µ½·þÎñÆ÷
#Èí¼þ°üÏÂÔØ£º https://sonarsource.bintray.com/ Distribution/ sonarqube/ sonarqube-5.6.zip

[root@linux-node1 src] # unzip sonarqube-5.6.zip
[root@linux-node1 src] # mv sonarqube-5.6 /usr/local/
[root@linux-node1 src] # ln -s /usr/local/ sonarqube-5.6/ /usr/local/sonarqube

×¼±¸SonarÊý¾Ý¿â

Èç¹ûûÓÐÊý¾Ý¿âÇëÖ´ÐÐyum install -y mariadb mariadb-server

[root@linux-node1 ~] # systemctl start mariadb
[root@linux-node1 ~] # systemctl enable mariadb
Created symlink from /etc/ systemd/system/multi -user.target.wants/ mariadb.service to /usr/ lib/systemd/ system/ mariadb.service.
[root@linux-node1 ~]# mysql_secure_installation
[root@linux-node1 ~]# mysql -uroot -p123456

ÌØ±ðÌáʾ£º

image_1b4i40r9q13m916p9 jqke68au39.png-106.4kB

sonarºÃÏñ²»Ö§³Ömysql 5.5£¬ËùÒÔÈç¹û¿´ÈÕÖ¾³öÏÖÒÔÉÏerror Çë°²×°mysql5.6 »òÕ߸ü¸ß°æ±¾

http://blog.csdn.net/ onothing12345/ article/details/49910087

Ö´ÐÐsqlÓï¾ä

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar@pw';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@pw';
mysql> FLUSH PRIVILEGES;

ÅäÖÃSonar

[root@linux-node1 ~]# cd /usr/local/sonarqube/conf/
[root@linux-node1 conf]# ls
sonar.properties wrapper.conf

±àдÅäÖÃÎļþ£¬ÐÞ¸ÄÊý¾Ý¿âÅäÖÃ

[root@linux-node1 conf ] # vim sonar.properties
#ÎÒÃÇÖ»ÐèҪȥÅäÖÃÎļþÀïÃæÐÞ¸ÄÊý¾Ý¿âµÄÈÏÖ¤¼´¿É

14 sonar.jdbc.username =sonar #Êý¾Ý¿âÓû§
15 sonar.jdbc.password= sonar@pw #Êý¾Ý¿âÃÜÂë
23 sonar.jdbc.url= jdbc:mysql://localhost:3306/ sonar?useUnicode= true&character Encoding =utf8&rewriteBatchedStatements =true&useConfigs =maxPerformance

ÅäÖÃJava·ÃÎÊÊý¾Ý¿âÇý¶¯(¿ÉÑ¡)

ĬÈÏÇé¿öSonarÓÐ×Ô´øµÄǶÈëµÄÊý¾Ý¿â£¬ÄÇôÄãÈç¹ûʹÓÃÀàÊÇOracleÊý¾Ý¿â£¬±ØÐëÊÖ¶¯¸´ÖÆÇý¶¯Àൽ${SONAR_HOME}/extensions/jdbc-driver/oracle/Ŀ¼Ï£¬ÆäËüÖ§³ÖµÄÊý¾Ý¿âĬÈÏÌṩÁËÇý¶¯¡£ÆäËüÊý¾Ý¿âµÄÅäÖÿÉÒԲο¼¹Ù·½Îĵµ£º

http://docs.sonarqube.org/ display/HOME/ SonarQube+Platform

Æô¶¯Sonar

Äã¿ÉÒÔÔÚSonarµÄÅäÖÃÎļþÀ´ÅäÖÃSonar Web¼àÌýµÄIPµØÖ·ºÍ¶Ë¿Ú£¬Ä¬ÈÏÊÇ9000¶Ë¿Ú¡£

[root@linux-node1 conf]# vim sonar.properties
99 #sonar.web.host=0.0.0.0
106 #sonar.web.port=9000

Æô¶¯ÃüÁîÈçÏ£º

[root@linux-node1 ~]# /usr/local/sonarqube/bin/linux -x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.

Èç¹ûÓÐʲôÎÊÌâ¿ÉÒÔ¿´Ò»ÏÂÈÕÖ¾ [/usr/local/sonarqube/ logs/sonar.log]

¼ì²éÊÇ·ñÓÐÏàÓ¦µÄ¶Ë¿Ú

#¶Ë¿ÚÊÇ9000Ŷ£¡

WebµÇ½£ºIP:9000

Ìáʾ£º

sonar¸újenkinsÀàËÆ£¬Ò²ÊÇÒÔ²å¼þΪÖ÷

sonar°²×°²å¼þÓÐ2ÖÖ·½Ê½£ºµÚÒ»ÖÖ½«²å¼þÏÂÔØÍê´æ·ÅÔÚsonarµÄ²å¼þĿ¼£¬µÚ¶þÖÖʹÓÃweb½çÃæÀ´Ê¹Óð²×°

´æ·Å²å¼þ·¾¶[/usr/local /sonarqube/ extensions/plugins/]

°²×°ÖÐÎIJå¼þ

µÇ½£ºÓû§Ãû£ºadmin ÃÜÂ룺admin

ÐèÒªÖØÆô²Å»áÉúЧ

ÉúЧºóÈçÏÂͼ£º

ÎÒÃÇÔÚ°²×°Ò»¸öphpÓïÑÔ

ÎÂܰÌáʾ£ºÈç¹ûÏÂÔØ²»ÏÂÀ´ÎÒÃÇÖ±½ÓÈ¥github½øÐÐÏÂÔØ£¬ÒòΪÎÒÃÇÕâ¸ö²å¼þ¶¼ÊÇʹÓÃwget½øÐÐÏÂÔØµÄ

ÎÒÃÇÏÖÔÚÖ»ÄÜʹÓÃjavaµÄjar°üºÍphp£¬ÒòΪÎÒÃÇÖ»°²×°ÁËjavaºÍphpµÄÓïÑÔ²å¼þ¡£Èç¹ûÏëʹÓÃPythonµÄ³ÌÐò£¬¾ÍÐèÒª°²×°PythonµÄÓïÑÔ²å¼þ

Sonar ²å¼þ--->ÓïÑÔ²å¼þ £¨·ÖÎöʲôÓïÑÔ£¬Äã¾ÍÐèÒª°²×°Ê²Ã´ÓïÑԵIJå¼þ£©

Sonarͨ¹ýSonarQube Scanner£¨É¨ÃèÆ÷£©À´¶Ô´úÂë½øÐзÖÎö

¹Ù·½Îĵµ £ºhttp://docs.sonarqube.org/ display/SCAN/Analyzing +with+SonarQube+Scanner

ÏÂÔØÉ¨ÃèÆ÷²å¼þ

[root@linux-node1 ~]# wget https://sonarsource.bintray.com/ Distribution/s onar-scanner-cli/ sonar- scanner-2.8.zip
[root@linux-node1 ~]# unzip sonar-scanner -2.8.zip
[root@linux-node1 ~]# mv sonar-scanner -2.8 /usr/local/
[root@linux-node1 ~]# ln -s /usr/local/ sonar-scanner-2.8/ /usr/local/sonar-scanner

ÎÒÃÇÒª½«É¨ÃèÆ÷ºÍsonar¹ØÁªÆðÀ´

[root@linux-node1 ~] # cd /usr/local/sonar-scanner
[root@linu x-node1 sonar-scanner] # ls
bin conf lib
[root@linux-node1 sonar-scanner] # cd conf/
[root@linux-node1 conf]# ls
sonar-scanner.properties
[root@linux-node1 conf] # vim sonar-scanner.properties
sonar.host.url = http://localhost:9000 #sonarµØÖ·
sonar.sourceEncoding= UTF-8 #×Ö·û¼¯
sonar.jdbc.username= sonar #Êý¾Ý¿âÕ˺Å
sonar.jdbc.password= sonar@pw #Êý¾Ý¿âÃÜÂë
sonar.jdbc.url= jdbc:mysql://localhost:3306/sonar?useUnicode =true& characterEncoding= utf8 #Êý¾Ý¿âÁ¬½ÓµØÖ·

#´ò¿ª×¢Êͼ´¿É

ÎÒÃÇÏÖÔÚÐèÒªÕÒÒ»¸ö´úÂë½øÐзÖÎö¡£

sonar²å¼þÌṩÁËÒ»¸ö´úÂëµÄ¿â

github:https://github.com/ SonarSource/sonar-examples

ÎÒÃÇÏÂÔØÈí¼þ°ü£ºhttps://github.com /SonarSource/ sonar-examples /archive/master.zip

½âѹ

[root@linux-node1 src] # unzip sonar-examples-master.zip
[root@linux-node1 php] # cd sonar-examples- master/projects/languages/php
[root@linux-node1 php] # cd php-sonar-runner-unit-tests/
[root@linux-node1 php-sonar-runner -unit-tests]# ll
total 8
-rw-r--r-- 1 root root 647 Dec 14 09:57 README.md
drwxr-xr-x 2 root root 51 Dec 14 09:57 reports
-rw-r--r-- 1 root root 346 Dec 14 09:57 sonar- project.properties
drwxr-xr-x 3 root root 31 Dec 14 09:57 src
drwxr-xr-x 2 root root 25 Dec 14 09:57 tests
#ÕâÀï¾ÍÊÇPHPµÄĿ¼

ÅäÖÃÎļþ½âÊÍ£º

Èç¹ûÄãÏëÈÃÎÒɨÃ裬¾ÍÐèÒªÔÚ´úÂë·¾¶Ï·ÅÒ»¸öÅäÖÃÎļþ

[root@linux-node1 php -sonar-runner-unit-tests] # cat sonar-project. properties
sonar.projectKey =org.sonarqube: php-ut-sq-scanner #Key
sonar.projectName= PHP :: PHPUnit :: SonarQube Scanner #ÕâÀïµÄÃû³Æ»áÏÔʾÔÚÒ»»áµÄweb½çÃæÉÏ
sonar.projectVersion=1.0 #°æ±¾£¬ÕâÀïµÄ°æ±¾Ò»»áÒ²»áÏÔʾÔÚweb½çÃæÉÏ

sonar.sources=src #Èí¼þ°ü´æ·Å·¾¶
sonar.tests=tests

sonar.language=php #ÓïÑÔ

sonar.sourceEncoding=UTF-8 #×ÖÌå

# Reusing PHPUnit reports
sonar.php.coverage.reportPath = reports/phpunit.coverage.xml
sonar.php.tests.reportPath =reports/phpunit.xml

#Ò²¾ÍÊÇ˵ÔÚÏîÄ¿ÀïÃæ±ØÐëÓÐÕâ¸öÅäÖÃÎļþ²Å¿ÉÒÔ½øÐÐɨÃè

ɨÃè

#Ìáʾ£ºÐèÒªÔÚÏîÄ¿ÎļþÀïÃæ½øÐÐÖ´ÐÐ

[root@linux-node1 php -sonar-runner-unit-tests] # /usr/local/sonar- scanner/bin/sonar-scanner
INFO: Scanner configuration file: /usr/local/sonar -scanner/conf/sonar -scanner.properties
INFO: Project root configuration file: /usr/local/src/sonar-examples- master/projects/languages /php/php-sonar-runner -unit-tests/sonar -project.properties
INFO: SonarQube Scanner 2.8
INFO: Java 1.8.0_111 Oracle Corporation (64-bit)
INFO: Linux 3.10.0- 514.2.2.el7.x86_64 amd64
INFO: User cache: /root/ .sonar/cache
INFO: Load global repositories
INFO: Load global repositories (done) | time=211ms
WARN: Property 'sonar.jdbc.url' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
WARN: Property 'sonar.jdbc.username' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
WARN: Property 'sonar.jdbc.password' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
INFO: User cache: /root/ .sonar/cache
INFO: Load plugins index
INFO: Load plugins index (done) | time=3ms
INFO: Download sonar-csharp -plugin-5.0.jar
INFO: Download sonar-java -plugin-3.13.1.jar
INFO: Download sonar-l10n -zh-plugin-1.11.jar
INFO: Plugin [l10nzh] defines 'l10nen' as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
INFO: Download sonar-scm -git-plugin-1.2.jar
INFO: Download sonar-php -plugin-2.9.1.1705.jar
INFO: Download sonar-scm-svn -plugin-1.3.jar
INFO: Download sonar-javascript -plugin-2.11.jar
INFO: SonarQube server 5.6
INFO: Default locale: " en_US", source code encoding: "UTF-8"
INFO: Process project properties
INFO: Load project repositories
.................................................
.................................................

Ìáʾ£ºÎÒÃÇʲô¶¼²»Ö¸¶¨¾Í»áÔÚµ±ÃæÄ¿Â¼ÏÂɨÃèsonar-project.propertiesÎļþ£¬¸ù¾ÝÅäÖÃÎļþ½øÐÐɨÃ蹤×÷¡£É¨ÃèÖ®ºóÎÒÃÇÔÚweb½çÃæÉϾͿÉÒÔ¿´µ½´úÂëµÄɨÃè½á¹û

ÕâÀïµÄÃû×Ö£¬°æ±¾ ¶¼ÊÇÔÚsonar -project.propertiesÎļþÖж¨ÒåµÄ

ÖÊÁ¿ãаïÎÒÃÇÉ趨ºÃÒ»¸öãÐÖµ£¬³¬¹ýÏàÓ¦µÄãÐÖµ¾ÍËãÓÐbug

ΪÁËÈÃjenkins¿ÉÒÔÔÚ¹¹½¨ÏîÄ¿µÄʱºòÖ´ÐÐsonar£¬ËùÒÔÎÒÃÇÐèÒªÔÚjenkinsÉϰ²×°²å¼þ

ÏÖÔھͿÉÒÔ½øÐÐÅäÖã¬ÈÃjenkinsºÍsonar½áºÏÔÚÒ»Æð¡£ÕâÑùÎÒÃǹ¹½¨ÏîÄ¿µÄʱºò¾Í»á½øÐдúÂë¼ì²â

µã»÷±£´æ

ÅäÖÃ

±à¼­ÎÒÃǵÄÏîÄ¿£¬Ñ¡Ôñ×îÏ·š£ÕÒµ½¹¹½¨

¶ÔPHPÎļþ½øÐи´ÖÆ

[root@linux-node1 php-sonar-runner -unit-tests]# cat /usr/local/src/sonar-examples -master/projects/languages/ php/php-sonar -runner-unit-tests/ sonar-project.properties
sonar.projectKey =org.sonarqube:php-ut -sq-scanner
sonar.projectName =PHP :: PHPUnit :: SonarQube Scanner
sonar.projectVersion=1.0

sonar.sources=src
sonar.tests=tests

sonar.language=php

sonar.sourceEncoding =UTF-8

# Reusing PHPUnit reports
sonar.php.coverage.reportPath =reports/phpunit.coverage.xml
sonar.php.tests.reportPath =reports/phpunit.xml

Analysis properties ·ÖÎöµÄ²ÎÊý

ÌîдÍê±Ïºó£¬ÎÒÃǵã»÷±£´æ

ÎÒÃÇÑ¡ÔñÁ¢¼´¹¹½¨

Ìáʾ£º´ËʱµÄSonarQubeÊÇÎÞ·¨µã»÷µÄ

µã»÷Console Output¿ÉÒԲ鿴¹¹½¨Êä³öµÄÄÚÈÝ

#Ìáʾ£ºÖ»ÒªÃ»ÓÐerror¾Í¿ÉÒÔ

¹¹½¨Íê³Éºó£¬ÎÒÃÇ·¢ÏÖÕâÀïµÄSonarQube¿ÉÒÔµã»÷£¬ÎÒÃǵã»÷SonarQube¾Í»áÁ´½Óµ½192.168.56.11:9000 ¾ÍÊÇ´úÂë²é¿´Æ÷µÄµØÖ·

ÏÖÔÚÎÒÃÇÒѾ­×öµ½ÁË¿ÉÒÔÔÚgitÉϽøÐÐÀ­È¡´úÂë¡£²¢½øÐмì²â

ÎÒÃÇ»¹¿ÉÒÔÅäÖÃÒ»¸ö¹¹½¨Ê§°Ü·¢ËÍÓÊÏ䣺

ÔÚÎÒÃÇÏîÄ¿ÀïÃæÉèÖù¹½¨ºó²Ù×÷£¬Ñ¡ÔñE-mail Notification

ÎÂܰÌáʾ£ºÊ¹ÓÃ163ÓÊÏä·¢Ë͵Ä֪ͨ±»163·þÎñÆ÷ÍË»ØÁË£¬Òò´ËÎÒ½«ÉèÖÃÔÚjenkinsµÄÓÊÏä¸Ä³ÉÁËQQÓÊÏä

QQ£ºÓÊÏäÐèÒªÉèÖÃÈçÏ£º

**1¡¢ÐèÒª¿ªÆôPOPE3/SMTP·þÎñ

2¡¢ÔÚjenkinsÉÏÅäÖõÄÃÜÂëÎÒÃÇÐèÒªµã»÷Éú³ÉÊÚȨÂë½øÐÐʹÓÃ**

QQÓʼþĬÈÏ»áÊÕµ½ÈçÏÂÌáʾ£º

µ±Ôٴι¹¼þ³É¹¦Ê±£¬ÓʼþÄÚÈÝÈçÏ£º

 

 

   
5247 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ