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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÌÚѶ×ÀÇò£º¿Í»§¶Ë×ܽá
 
×÷ÕߣºÎâÇØ À´Ô´£º²©¿ÍÔ°;·¢²¼ÓÚ£º2016-7-25
  4406  次浏览      27
 

±¾´Î·ÖÏí×ܽᣬÆðÔ´ÓÚÌÚѶ×ÀÇòÏîÄ¿£¬µ«ÊDz»½ö½öÏÞÓÚÏîÄ¿±¾Éí¡£ËäÈ»»ùÓÚUnity3D£¬ºÜ¶à¶«Î÷ͬÑùÊÊÓÃÓÚCocos¡£±¾ÎÄ´ÓÒÔÏÂ10´óµã½øÐвûÊö£º

1.¼Ü¹¹Éè¼Æ

2..Ô­Éú²å¼þ/ƽ̨½»»¥

3..°æ±¾Óë²¹¶¡

4..Óýű¾£¬»¹ÊDz»Óã¿ÕâÊÇÒ»¸öÎÊÌâ

5..×ÊÔ´¹ÜÀí

6..ÐÔÄÜÓÅ»¯

8...Òì³£ÓëCrash

8..ÊÊÅäÓë¼æÈÝ

9..µ÷ÊÔ¼°¿ª·¢¹¤¾ß

10..ÏîÄ¿ÔËÓª

1.¼Ü¹¹Éè¼Æ

ºÃµÄ¼Ü¹¹ÀûÓôó¹æÄ£ÏîÄ¿µÄ¶àÈËÍŶӿª·¢ºÍ´úÂë¹ÜÀí£¬Ò²ÀûÓòéÕÒ´íÎóºÍºóÆÚά»¤¡£

1.¿ò¼ÜµÄÑ¡Ôñ£ºÐèÒª¸ù¾ÝÍŶӡ¢ÏîÄ¿À´½øÐÐÑ¡Ôñ£¬Ã»ÓÐ×îºÃµÄ¿ò¼Ü£¬Ö»ÓÐ×îºÏÊʵĿò¼Ü¡£

2.¿ò¼ÜµÄʹÓãºÍ³Ò»µÄ¿ò¼ÜÄܹ淶´ó¼ÒµÄÐÐΪ£¬»¥ÏàÖ®¼ä¿ÉÒÔ±È½ÏÆ½»¬Çл»£¬¿Éά»¤ÐÔ´ó´óÌáÉý¡£³ý´ËÖ®Í⣬»¹ÄÜ´úÂë½âñî¡£ÀýÈçStrangeIOCÊÇÒ»¸ö³¬ÇáÁ¿¼¶ºÍ¸ß¶È¿ÉÀ©Õ¹µÄ¿ØÖÆ·´×ª(IoC)¿ò¼Ü£¬×¨ÃÅΪC#ºÍUnity±àд¡£ÒÑÖª¹«Ë¾ÄÚ²¿Ê¹ÓÃStrangeIOC¿ò¼ÜµÄÓÎÏ·ÓУºÌÚѶ×ÀÇò¡¢»¶ÀÖÂ齫¡¢Ö²Îï´óÕ½½©Ê¬Online¡£<https://github.com/strangeioc/strangeioc>

ÒÀÀµ×¢È루Dependency Injection£¬¼ò³ÆDI£©£¬ÊÇÒ»¸öÖØÒªµÄÃæÏò¶ÔÏó±à³ÌµÄ·¨ÔòÀ´Ï÷¼õ¼ÆËã»ú³ÌÐòµÄñîºÏÎÊÌâ¡£ÒÀÀµ×¢È뻹ÓÐÒ»¸öÃû×Ö½Ð×ö¿ØÖÆ·´×ª£¨Inversion of Control£¬Ó¢ÎÄËõдΪIoC£©¡£ÒÀÀµ×¢ÈëÊÇÕâÑùÒ»¸ö¹ý³Ì£ºÓÉÓÚij¿Í»§ÀàÖ»ÒÀÀµÓÚ·þÎñÀàµÄÒ»¸ö½Ó¿Ú£¬¶ø²»ÒÀÀµÓÚ¾ßÌå·þÎñÀ࣬ËùÒÔ¿Í»§ÀàÖ»¶¨ÒåÒ»¸ö×¢Èëµã¡£ÔÚ³ÌÐòÔËÐйý³ÌÖУ¬¿Í»§À಻ֱ½ÓʵÀý»¯¾ßÌå·þÎñÀàʵÀý£¬¶øÊǿͻ§ÀàµÄÔËÐÐÉÏÏÂÎÄ»·¾³»òרÃÅ×é¼þ¸ºÔðʵÀý»¯·þÎñÀ࣬Ȼºó½«Æä×¢Èëµ½¿Í»§ÀàÖУ¬±£Ö¤¿Í»§ÀàµÄÕý³£ÔËÐС£¼´¶ÔÏóÔÚ±»´´½¨µÄʱºò£¬ÓÉÒ»¸öÔËÐÐÉÏÏÂÎÄ»·¾³»òרÃÅ×é¼þ½«ÆäËùÒÀÀµµÄ·þÎñÀà¶ÔÏóµÄÒýÓô«µÝ¸øËü¡£Ò²¿ÉÒÔ˵£¬ÒÀÀµ±»×¢Èëµ½¶ÔÏóÖС£ËùÒÔ£¬¿ØÖÆ·´×ªÊÇ£¬¹ØÓÚÒ»¸ö¶ÔÏóÈçºÎ»ñÈ¡ËûËùÒÀÀµµÄ¶ÔÏóµÄÒýÓã¬Õâ¸öÔðÈεķ´×ª¡£

StrangeIOC²ÉÓÃMVCS£¨Êý¾ÝÄ£ÐÍ Model£¬Õ¹Ê¾ÊÓͼ View£¬Âß¼­¿ØÖÆ Controller£¬·þÎñService£©½á¹¹£¬Í¨¹ýÏûÏ¢/ÐźŽøÐн»»¥ºÍͨÐÅ¡£Õû¸öMVCS¿ò¼Ü¸úflashµÄrobotlegs»ù±¾Ò»Ö£¬£¨ºöÂÔÓïÑÔ²»Ò»Ñù£©ÏêϸµÄ²Î¿¼<http://www.cnblogs.com/skynet/archive/2012/03/21/2410042.html>¡£

1.Êý¾ÝÄ£ÐÍ Model£ºÖ÷Òª¸ºÔðÊý¾ÝµÄ´æ´¢ºÍ»ù±¾Êý¾Ý´¦Àí

2.չʾÊÓͼ View£ºÖ÷Òª¸ºÔðUI½çÃæÕ¹Ê¾ºÍ¶¯»­±íÏֵĴ¦Àí

3.Âß¼­¿ØÖÆ Controller£ºÖ÷Òª¸ºÔðÒµÎñÂß¼­´¦Àí£¬

4.·þÎñService£ºÖ÷Òª¸ºÔð¶ÀÁ¢µÄÍøÂçÊÕ·¢ÇëÇóµÈµÄһЩ¹¦ÄÜ¡£

5.ÏûÏ¢/ÐźţºÍ¨¹ýÏûÏ¢/ÐźÅÈ¥½âñîModel¡¢View¡¢Controller¡¢ServiceÕâËÄÖÖÄ£¿é£¬ËûÃÇÖ®¼äͨ¹ýÏûÏ¢/ÐźŽøÐн»»¥¡£

6.°ó¶¨Æ÷Binder£º¸ºÔð°ó¶¨ÏûÏ¢´¦Àí¡¢½Ó¿ÚÓëʵÀý¶ÔÏó¡¢ViewÓëMediatorµÄ¶ÔÓ¦¹ØÏµ¡£

7.MVCS Context£º¿ÉÒÔÀí½âΪMVC¸÷¸öÄ£¿é´æÔÚµÄÉÏÏÂÎÄ£¬¸ºÔðMVC°ó¶¨ºÍʵÀýµÄ´´½¨¹¤×÷¡£

ÌÚѶ×ÀÇò¿Í»§¶ËÏîÄ¿¿ò¼Ü

8.´úÂëĿ¼µÄ×éÖ¯£ºÒ»°ã¿Í»§¶ËÓõñȽ϶àµÄMVC¿ò¼Ü£¬Ôõô»®·ÖĿ¼£¿

9.ÏȰ´ÒµÎñ¹¦ÄÜ»®·Ö£¬ÔÙ°´ÕÕ MVC À´»®·Ö¡£"µ°¸âÐÄÓï"¾ÍÊÇʹÓõÄÕâÖÖ·½Ê½¡£

10.ÏȰ´ MVC »®·Ö£¬ÔÙ°´ÕÕÒµÎñ¹¦ÄÜ»®·Ö¡£"D9"¡¢"±¦±¦¶·³¡"¡¢"ħ·¨»¨Ô°"¡¢"ÌÚѶ×ÀÇò"¡¢"»¶ÀÖÂ齫"ʹÓõÄÕâÖÖ·½Ê½¡£

¸ù¾ÝʹÓÃϰ¹ß£¬¿ÉÒÔ×ÔÐÐÑ¡Ôñ¡£¸öÈËÍÆ¼ö"ÏȰ´ÒµÎñ¹¦ÄÜ»®·Ö£¬ÔÙ°´ÕÕ MVC À´»®·Ö"£¬Ê¹µÃÄ£¿é¸ü¾Û½¹£¨¸ßÄÚ¾Û£©£¬µÚ¶þÖÖ·½Ê½ÓöàÁË·¢ÏÖËæ×ÅÏîÄ¿µÄÔËӪģ¿éÔö¶à£¬Ã»ÓеÚÒ»ÖÖÄÇôºÃά»¤¡£

1.UnityÏîĿĿ¼µÄ×éÖ¯£º½áºÏUnity¹æ¶¨µÄÒ»Ð©ÌØÊâµÄÓÃ;µÄÎļþ¼Ð£¬ÎÒÃǽ¨ÒéUnityÏîÄ¿Îļþ¼Ð×éÖ¯·½Ê½ÈçÏ¡£

ÆäÖУ¬PluginsÖ§³ÖPlugins/{Platform}ÕâÑùµÄÃüÃû¹æ·¶£º

1. Plugins/x86

2.Plugins/x86_64

3.Plugins/Android

4.Plugins/iOS

Èç¹û´æÔÚPlugins/{Platform}£¬Ôò¼ÓÔØPlugins/{Platform}Ŀ¼ÏµÄÎļþ£¬·ñÔò¼ÓÔØPluginsĿ¼Ïµģ¬Ò²¾ÍÊÇ˵£¬Èç¹û´æÔÚ{Platform}Ŀ¼£¬Plugins¸ùĿ¼ÏµÄDLLÊDz»»á¼ÓÔØµÄ¡£

ÁíÍ⣬×ÊÔ´×éÖ¯²ÉÓ÷ÖÎļþ¼Ð´æ´¢"³ÉÆ·×ÊÔ´"¼°"Ô­ÁÏ×ÊÔ´"µÄ·½Ê½´¦Àí£º·ÀÖ¹ÎÞ¹Ø×ÊÔ´²ÎÓë´ò°ü£¬RawResource¼´Ô­Ê¼×ÊÔ´£¬Resource¼´³ÉÆ·×ÊÔ´¡£µ±È»²¢²»ÏÞÓÚRawResourceÕâÖÖÐÎʽ£¬ÆäËûUnity¹æ¶¨µÄÌØÊâÎļþ¼Ð¶¼¿ÉÒÔÕâÑù£¬ÀýÈçRaw Standard Assets¡£

¹«Ë¾×é¼þ

1..msdk£¨sns¡¢Ö§¸¶midas¡¢ÍÆË͵ÆËþ¡¢¼à¿ØBugly£©

2.apollo

3.apollo voice

4.xlua

ĿǰÎÒÃǵÄÌÚѶ×ÀÇò¡¢ËĹú¾üÆå¶¼½ÓÈëÁËapollo£¬µ«ÊÇÈç¹û·þÎñÆ÷²»²ÉÓÃapollo¿ò¼Ü£¬²»½¨Òé¿Í»§¶Ë½Óapollo£¬¶øÊÇÖ±½Ó½Ómsdk¼õÉÙ¶þ´Î·â×°ÐÅÏ¢µÄ¶ªÊ§ºÍ´øÀ´µÄ´íÎ󣬷½±ãÒÔºóÉý¼¶Î¬»¤£¬²¢ÇÒ¼õÉÙµ¼ÈëÎÞÓõĴúÂë¡£

µÚÈý·½²å¼þÑ¡ÐÍ

1.NGUI

2.DoTween

3.GIF

4.GAF

5. VectrosityScripts

6. PoolManager

7. Mad Level Manger

2.Ô­Éú²å¼þ/ƽ̨½»»¥

ËäÈ»´ó¶àʱºòʹÓÃUnity3D½øÐÐÓÎÏ·¿ª·¢Ê±£¬Ö»ÐèҪʹÓÃC#½øÐÐÂß¼­±àд¡£µ«ÓÐʱºò²»¿É±ÜÃâµÄÐèҪʹÓúͱàдԭÉú²å¼þ£¬ÀýÈçһЩµÚÈý·½²å¼þÖ»ÌṩC/C++Ô­Éú²å¼þ¡¢¸´ÓÃÒÑÓеÄC/C++Ä£¿éµÈ¡£ÓÐһЩ¹¦ÄÜÊÇUnity3DʵÏÖ²»ÁË£¬±ØÐëÒªµ÷ÓÃAndroid/iOSÔ­Éú½Ó¿Ú£¬±ÈÈç»ñÈ¡ÊÖ»úµÄÓ²¼þÐÅÏ¢£¨UnityEngine.SystemInfoûÓÐÌṩµÄ²¿·Ö£©¡¢µ÷ÓÃϵͳµÄÔ­Éúµ¯´°¡¢ÊÖ»úÕ𶯵ȵÈ

2.1C/C++²å¼þ

±àдºÍʹÓÃÔ­Éú²å¼þµÄ¼¸¸ö¹Ø¼üµã£º

´´½¨C/C++Ô­Éú²å¼þ

1.µ¼³ö½Ó¿Ú±ØÐëÊÇC ABI-compatibleº¯Êý

2.º¯Êýµ÷ÓÃÔ¼¶¨

ÔÚC#ÖбêʶC/C++µÄº¯Êý²¢µ÷ÓÃ

1.±êʶ DLL Öеĺ¯Êý¡£ÖÁÉÙÖ¸¶¨º¯ÊýµÄÃû³ÆºÍ°üº¬¸Ãº¯ÊýµÄ DLL µÄÃû³Æ¡£

2.´´½¨ÓÃÓÚÈÝÄÉ DLL º¯ÊýµÄÀà¡£¿ÉÒÔʹÓÃÏÖÓÐÀ࣬Ϊÿһ·ÇÍйܺ¯Êý´´½¨µ¥¶ÀµÄÀ࣬»òÕß´´½¨°üº¬Ò»×éÏà¹ØµÄ·ÇÍйܺ¯ÊýµÄÒ»¸öÀà¡£

3.ÔÚÍйܴúÂëÖд´½¨Ô­ÐÍ¡£Ê¹Óà DllImportAttribute ±êʶ DLL ºÍº¯Êý¡£ Óà static ºÍ extern ÐÞÊηû±ê¼Ç·½·¨¡£

4.µ÷Óà DLL º¯Êý¡£Ïñ´¦ÀíÆäËûÈκÎÍйܷ½·¨Ò»Ñùµ÷ÓÃÍйÜÀàÉϵķ½·¨¡£

ÔÚC#Öд´½¨»Øµ÷º¯Êý£¬C/C++µ÷ÓÃC#»Øµ÷º¯Êý

1.´´½¨Íйܻص÷º¯Êý¡£

2.´´½¨Ò»¸öίÍУ¬²¢½«Æä×÷Ϊ²ÎÊý´«µÝ¸ø C/C++º¯Êý¡£Æ½Ì¨µ÷Óûá×Ô¶¯½«Î¯ÍÐת»»Îª³£¼ûµÄ»Øµ÷¸ñʽ¡£

3.È·±£Ôڻص÷º¯ÊýÍê³ÉÆä¹¤×÷֮ǰ£¬À¬»ø»ØÊÕÆ÷²»»á»ØÊÕίÍС£

ÄÇôC#ÓëÔ­Éú²å¼þÖ®¼äÊÇÈçºÎʵÏÖ»¥Ïàµ÷ÓõÄÄØ£¿ÔÚŪÇå³þÕâ¸öÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈ¿´ÏÂC#´úÂ루.NETÉϵijÌÐò£©µÄÖ´ÐеĹý³Ì£º£¨¸üÏêϸһµãµÄ½éÉÜ¿ÉÒԲμûÎÒ֮ǰдµÄ²©¿Í£ºhttp://www.cnblogs.com/skynet/archive/2010/05/17/1737028.html£©

1.½«Ô´Âë±àÒëΪÍйÜÄ£¿é£»

2.½«ÍйÜÄ£¿é×éºÏΪ³ÌÐò¼¯£»

3.¼ÓÔØ¹«¹²ÓïÑÔÔËÐÐʱCLR£»

4.Ö´ÐгÌÐò¼¯´úÂë¡£

×¢£ºCLR(¹«¹²ÓïÑÔÔËÐÐʱ£¬Common Language Runtime)ºÍJavaÐéÄâ»úÒ»ÑùÒ²ÊÇÒ»¸öÔËÐÐʱ»·¾³£¬Ëü¸ºÔð×ÊÔ´¹ÜÀí£¨ÄÚ´æ·ÖÅäºÍÀ¬»øÊÕ¼¯£©£¬²¢±£Ö¤Ó¦Óú͵ײã²Ù×÷ϵͳ֮¼ä±ØÒªµÄ·ÖÀë¡£

ΪÁËÌá¸ßƽ̨µÄ¿É¿¿ÐÔ£¬ÒÔ¼°ÎªÁË´ïµ½ÃæÏòÊÂÎñµÄµç×ÓÉÌÎñÓ¦ÓÃËùÒªÇóµÄÎȶ¨ÐÔ¼¶±ð£¬CLR»¹Òª¸ºÔðÆäËûһЩÈÎÎñ£¬±ÈÈç¼àÊÓ³ÌÐòµÄÔËÐС£°´ÕÕ.NETµÄ˵·¨£¬ÔÚCLR¼àÊÓÖ®ÏÂÔËÐеijÌÐòÊôÓÚ"ÍйÜ"(managed)´úÂ룬¶ø²»ÔÚCLR֮ϡ¢Ö±½ÓÔÚÂã»úÉÏÔËÐеÄÓ¦ÓûòÕß×é¼þÊôÓÚ"·ÇÍйÜ"(unmanaged)µÄ´úÂë¡£

Õ⼸¸ö¹ý³ÌÎÒ×ܽáΪÏÂͼ£º

ͼ .NETÉϵijÌÐòÔËÐÐ

»Øµ÷º¯ÊýÊÇÍйܴúÂëC#Öе͍ÒåµÄº¯Êý£¬¶Ô»Øµ÷º¯ÊýµÄµ÷Óã¬ÊµÏÖ´Ó·ÇÍйÜC/C++´úÂëÖе÷ÓÃÍйÜC#´úÂë¡£ÄÇôC/C++ÊÇÈçºÎµ÷ÓÃC#µÄÄØ£¿´óÖ·ÖΪ2²½£¬¿ÉÒÔÓÃÏÂͼ±íʾ£º

1.½«»Øµ÷º¯ÊýÖ¸Õë×¢²áµ½·ÇÍйÜC/C++´úÂëÖУ¨C#Öлص÷º¯ÊýָίÍÐdelegate£©

2.µ÷ÓÃ×¢²á¹ýµÄÍйÜC#º¯ÊýÖ¸Õë

Ïà±È½ÏÍйܵ÷Ó÷ÇÍйܣ¬»Øµ÷º¯Êý·½Ê½ÉÔ΢¸´ÔÓһЩ¡£»Øµ÷º¯Êý·Ç³£ÊʺÏÖØ¸´Ö´ÐеÄÈÎÎñ¡¢Òì²½µ÷ÓõÈÇé¿öÏÂʹÓá£

3.ÓÉÉÏÃæµÄ½éÉÜ¿ÉÒÔÖªµÀCLRÌṩÁËC#³ÌÐòÔËÐеĻ·¾³£¬Óë·ÇÍйܴúÂëµÄC/C++½»»¥µ÷ÓÃÒ²ÓÉËüÀ´Íê³É¡£CLRÌṩÁ½ÖÖÓÃÓÚÓë·ÇÍйÜC/C++´úÂë½øÐн»»¥µÄ»úÖÆ£º

ƽ̨µ÷Óã¨Platform Invoke£¬¼ò³ÆPInvoke»òÕßP/Invoke£©£¬ËüʹÍйܴúÂëÄܹ»µ÷ÓôӷÇÍйÜDLLÖе¼³öµÄº¯Êý¡£

4.COM »¥²Ù×÷£¬ËüʹÍйܴúÂëÄܹ»Í¨¹ý½Ó¿ÚÓë×é¼þ¶ÔÏóÄ£ÐÍ (COM) ¶ÔÏó½»»¥¡£¿¼ÂÇ¿çÆ½Ì¨ÐÔ£¬Unity3D²»Ê¹ÓÃÕâÖÖ·½Ê½¡£

ƽ̨µ÷ÓÃÒÀÀµÓÚÔªÊý¾ÝÔÚÔËÐÐʱ²éÕÒµ¼³öµÄº¯Êý²¢·âËÍ£¨Marshal£©Æä²ÎÊý¡£ ÏÂͼÏÔʾÁËÕâÒ»¹ý³Ì¡£

×¢Ò⣺1.³ýÉæ¼°»Øµ÷º¯ÊýʱÒÔÍ⣬ƽ̨µ÷Ó÷½·¨µ÷ÓôÓÍйܴúÂëÁ÷Ïò·ÇÍйܴúÂ룬¶ø¾ø²»»áÒÔÏà·´·½ÏòÁ÷¶¯¡£ ËäȻƽ̨µ÷Óõĵ÷ÓÃÖ»ÄÜ´ÓÍйܴúÂëÁ÷Ïò·ÇÍйܴúÂ룬µ«ÊÇÊý¾ÝÈÔÈ»¿ÉÒÔ×÷ΪÊäÈë²ÎÊý»òÊä³ö²ÎÊýÔÚÁ½¸ö·½ÏòÁ÷¶¯¡£2.ͼÖÐDLL±íʾ¶¯Ì¬¿â£¬Windowsƽָ̨.dllÎļþ¡¢Linux/AndroidÖ¸.soÎļþ¡¢Mac OS XÖ¸.dylib/frameworkÎļþ¡¢iOSÖÐÖ»ÄÜʹÓÃ.a¡£ºóÎĶ¼Ê¹ÓÃDLL´úÖ¸£¬²¢ÇÒDLLʹÓÃC/C++±àд¡£

µ±"ƽ̨µ÷ÓÃ"µ÷Ó÷ÇÍйܺ¯Êýʱ£¬Ëü½«ÒÀ´ÎÖ´ÐÐÒÔϲÙ×÷£º

1.²éÕÒ°üº¬¸Ãº¯ÊýµÄDLL¡£

2.½«¸ÃDLL¼ÓÔØµ½ÄÚ´æÖС£

3.²éÕÒº¯ÊýÔÚÄÚ´æÖеĵØÖ·²¢½«Æä²ÎÊýÍÆµ½¶ÑÕ»ÉÏ£¬ÒÔ·âËÍËùÐèµÄÊý¾Ý£¨²ÎÊý£©¡£

 

×¢Òâ Ö»ÔÚµÚÒ»´Îµ÷Óú¯Êýʱ£¬²Å»á²éÕҺͼÓÔØ DLL ²¢²éÕÒº¯ÊýÔÚÄÚ´æÖеĵØÖ·¡£iOSÖÐʹÓõÄÊÇ.aÒѾ­¾²Ì¬´ò°üµ½×îÖÕÖ´ÐÐÎļþÖÐ

4.½«¿ØÖÆÈ¨×ªÒƸø·ÇÍйܺ¯Êý¡£

2.2Android²å¼þ

JavaͬÑùÌṩÁËÕâÑùÒ»¸öÀ©Õ¹»úÖÆJNI£¨Java Native Interface£©£¬Äܹ»ÓëC/C++»¥ÏàͨÐÅ¡£

×¢£º

1.JNI wiki-https://en.wikipedia.org/wiki/Java_Native_Interface£¬ÕâÀï²»ÉîÈë½éÉÜJNI£¬ÓÐÐËȤµÄ¿ÉÒÔ×ÔÐÐÈ¥Ñо¿¡£Èç¹ûÄ㻹²»ÖªµÀJNIÒ²²»ÓÃÅ£¬¾ÍÏñUnity3DʹÓÃC/C++¿âÒ»Ñù£¬ÓÃÆðÀ´»¹ÊDZȽϼòµ¥µÄ£¬Ö»ÐèÒªÖªµÀÕâ¸ö¶«Î÷¼´¿É¡£²¢ÇÒUnity3D¶ÔC/C++ÇŽӯ÷Õâ¿é×öÁË·â×°£¬ÌṩAndroidJNI/AndroidJNIHelper/AndroidJavaObject/AndroidJavaClass/AndroidJavaProxy·½±ãʹÓõȣ¬¾ßÌåʹÓúóÃæÔÚ½éÉÜ¡£JNIÌṩÁËÈô¸ÉµÄAPIʵÏÖÁËJavaºÍÆäËûÓïÑÔµÄͨÐÅ£¨Ö÷ÒªÊÇC&C++£©¡£´ÓJava1.1¿ªÊ¼£¬JNI±ê×¼³ÉΪjavaƽ̨µÄÒ»²¿·Ö£¬ËüÔÊÐíJava´úÂëºÍÆäËûÓïÑÔдµÄ´úÂë½øÐн»»¥£¬±£Ö¤±¾µØ´úÂëÄܹ¤×÷ÔÚÈκÎJava ÐéÄâ»ú»·¾³Ï¡£"

2.×÷Ϊ֪ʶÀ©Õ¹£¬ÌáÒ»ÏÂAndroid JavaÐéÄâ»ú¡£AndroidµÄJavaÐéÄâ»úÓÐ2¸ö£¬×ʼÊÇDalvik£¬ºóÃæGoogleÔÚAndroid 4.4ϵͳÐÂÔöÒ»ÖÖÓ¦ÓÃÔËÐÐģʽART¡£ARTÓëDalvik Ö®¼äµÄÖ÷񻂿±ðÊÇÆä¾ßÓÐÌáǰ (AOT) ±àÒëģʽ¡£ ¸ù¾Ý AOT ¸ÅÄÉ豸°²×°Ó¦ÓÃʱ£¬DEX ×Ö½Ú´úÂëת»»½ö½øÐÐÒ»´Î¡£ Ïà±ÈÓÚ Dalvik£¬ÕâÑù¿ÉʵÏÖÕæÕýµÄÓÅÊÆ £¬ÒòΪ Dalvik µÄ¼´Ê± (JIT) ±àÒë·½·¨ÐèÒªÔÚÿ´ÎÔËÐÐÓ¦ÓÃʱ¶¼½øÐдúÂëת»»¡£ÏÂÎÄÖÐÓÃJavaÐéÄâ»ú´úÖ¸Dalvik/ART¡£

C#/Java¶¼¿ÉÒÔºÍC/C++ͨÐÅ£¬ÄÇôͨ¹ý±àдһ¸öC/C++Ä£¿é×÷ΪÇŽӣ¬¾ÍʹµÃC#ÓëJavaͨÐųÉΪÁË¿ÉÄÜ£¬ÈçÏÂͼËùʾ£º

×¢£ºC/C++ÇŽӯ÷±¾Éí¸úUnity3DûÓÐÖ±½Ó¹ØÏµ£¬²»ÊôÓÚAndroidºÍUnity3D£¬Í¼ÖзÅÔÚUnity3DÖÐÊÇΪÁË´úÖ¸libunity.soÖÐʵÏÖµÄÇŽӯ÷ÒÔ±íÊ¾ÕæÊµµÄÇé¿ö¡£

ͨ¹ýJNI¼È¿ÉÒÔÓÃÓÚJava´úÂëµ÷ÓÃC/C++´úÂ룬Ҳ¿ÉÓÃÓÚC/C++´úÂëÓëJava£¨Dalvik/ARTÐéÄâ»ú£©µÄ½»»¥¡£JNI¶¨ÒåÁË2¸ö¹Ø¼ü¸ÅÄî/½á¹¹£ºJavaVM¡¢JNIENV¡£JavaVMÌṩÐéÄâ»ú´´½¨¡¢Ïú»ÙµÈ²Ù×÷£¬JavaÖÐÒ»¸ö½ø³Ì¿ÉÒÔ´´½¨¶à¸öÐéÄâ»ú£¬µ«ÊÇAndroidÒ»¸ö½ø³ÌÖ»ÄÜÓÐÒ»¸öÐéÄâ»ú¡£JNIENVÊÇÏß³ÌÏà¹ØµÄ£¬¶ÔÓ¦µÄÊÇJavaVMÖеĵ±Ç°Ï̵߳ÄJNI»·¾³£¬Ö»Óи½¼Ó£¨attach£©µ½JavaVMµÄÏ̲߳ÅÓÐJNIENVÖ¸Õ룬ͨ¹ýJNIEVNÖ¸Õë¿ÉÒÔ»ñÈ¡JNI¹¦ÄÜ£¬·ñÔò²»Äܹ»µ÷ÓÃJNIº¯Êý¡£

C/C++Òª·ÃÎʵÄJava´úÂ룬±ØÐëÒªÄÜ·ÃÎʵ½JavaÐéÄâ»ú£¬»ñÈ¡ÐéÄâ»úÓÐ2Öз½·¨£º

1.ÔÚ¼ÓÔØ¶¯Ì¬Á´½Ó¿âµÄʱºò£¬JVM»áµ÷ÓÃJNI_OnLoad(JavaVM* jvm, void* reserved)£¬µÚÒ»¸ö²ÎÊý»á´«ÈëJavaVMÖ¸Õë¡£

2.ÔÚC/C++Öе÷ÓÃJNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)´´½¨JavaVMÖ¸Õë

ËùÒÔ£¬ÎÒÃÇÖ»ÐèÒªÔÚ±àдC/C++ÇŽӯ÷soµÄʱºò¶¨ÒåJNI_OnLoad(JavaVM* jvm, void* reserved)·½·¨¼´¿É£¬È»ºó°ÑJavaVMÖ¸Õë±£´æÆðÀ´×÷ΪÉÏÏÂÎÄʹÓá£

»ñÈ¡µ½JavaVMÖ®ºó£¬»¹²»ÄÜÖ±½ÓÄõ½JNIº¯ÊýÈ¥»ñÈ¡Java´úÂ룬±ØÐëͨ¹ýÏ̹߳ØÁªµÄJNIENVÖ¸ÕëÈ¥»ñÈ¡¡£ËùÒÔ£¬×÷Ϊһ¸öºÃµÄ¿ª·¢Ï°¹ßÔÚÿ´Î»ñȡһ¸öÏ̵߳ÄJNIÏà¹Ø¹¦ÄÜʱ£¬Ïȵ÷ÓÃAttachCurrentThread()£»ÓÖ»òÕßÿ´Îͨ¹ýJavaVMÖ¸Õë»ñÈ¡µ±Ç°µÄJNIENV£ºjava_vm->GetEnv((void**)&jni_env, version)£¬Ò»¶¨ÊÇÒѾ­¸½¼Óµ½JavaVMµÄÏ̡߳£Í¨¹ýJNIENV¿ÉÒÔ»ñÈ¡µ½JavaµÄ´úÂ룬ÀýÈçÄãÏëÔÚ±¾µØ´úÂëÖзÃÎÊÒ»¸ö¶ÔÏóµÄ×ֶΣ¨field£©£¬Äã¿ÉÒÔÏñÏÂÃæÕâÑù×ö£º

1. ¶ÔÓÚÀ࣬ʹÓÃjni_env->FindClass»ñµÃÀà¶ÔÏóµÄÒýÓÃ

2.¶ÔÓÚ×ֶΣ¬Ê¹ÓÃjni_env->GetFieldId»ñµÃ×Ö¶ÎID

3.ʹÓöÔÓ¦µÄ·½·¨£¨ÀýÈçjni_env->GetIntField£©»ñÈ¡×ֶεÄÖµ

ÀàËÆµØ£¬Òªµ÷ÓÃÒ»¸ö·½·¨£¬Äãstep1.µÃ»ñµÃÒ»¸öÀà¶ÔÏóµÄÒýÓÃobj£¬step2.ÊÇ·½·¨methodID¡£ÕâЩIDͨ³£ÊÇÖ¸ÏòÔËÐÐʱÄÚ²¿Êý¾Ý½á¹¹¡£²éÕÒµ½ËüÃÇÐèҪЩ×Ö·û´®±È½Ï£¬µ«Ò»µ©Äãʵ¼ÊÈ¥Ö´ÐÐËüÃÇ»ñµÃ×ֶλòÕß×ö·½·¨µ÷ÓÃÊǷdz£¿ìµÄ¡£step3.µ÷ÓÃjni_env->CallVoidMethodV(obj, methodID, args)¡£

´ÓÉÏÃæµÄʾÀý´úÂ룬ÎÒÃÇ¿ÉÒÔ¿´³öʹÓÃԭʼµÄJNI·½Ê½È¥ÓëAndroid£¨Java£©²å¼þ½»»¥ÊǶàµÄ·±Ëö£¬Òª×Ô¼º×öÌ«¶àµÄÊÂÇ飬²¢ÇÒΪÁËÐÔÄÜÐèÒª×Ô¼º¿¼ÂÇ»º´æ²éѯµ½µÄ·½·¨ID£¬×Ö¶ÎIDµÈµÈ¡£ÐÒÔ˵ÄÊÇ£¬Unity3DÒѾ­ÎªÎÒÃÇ·â×°ºÃÁËÕâЩ£¬²¢ÇÒ¿¼ÂÇÁËÐÔÄÜÓÅ»¯¡£Unity3DÖ÷ÒªÌṩÁËÒ»ÏÂ2¸ö¼¶±ðµÄ·â×°À´°ïÖú¸ßЧ±àд´úÂ룺

×¢£ºUnity3DÖжÔÓ¦µÄC/C++ÇŽӯ÷°üº¬ÔÚlibunity.soÖС£

1.Level 1£ºAndroidJNI¡¢AndroidJNIHelper£¬Ô­Ê¼µÄ·â×°Ï൱ÓÚÎÒÃÇÉÏÃæ×Ô¼º±àдµÄC# Wrapper¡£AndroidJNIHelper ºÍAndroidJNI×Ô¶¯Íê³ÉÁ˺ܶàÈÎÎñ£¨Ö¸ÕÒµ½ÀඨÒ壬¹¹Ôì·½·¨µÈ£©£¬²¢ÇÒʹÓûº´æÊ¹µ÷ÓÃjavaËٶȸü¿ì¡£AndroidJavaObjectºÍAndroidJavaClass»ùÓÚAndroidJNIHelper ºÍAndroidJNI´´½¨£¬µ«ÔÚ´¦Àí×Ô¶¯Íê³É²¿·ÖÒ²Óкܶà×Ô¼ºµÄÂß¼­£¬ÕâЩÀàÒ²Óо²Ì¬µÄ°æ±¾£¬ÓÃÀ´·ÃÎÊjavaÀàµÄ¾²Ì¬³ÉÔ±¡£¸üÏêϸ½Ó¿Ú²Î¿¼°ïÖúÎĵµ£ºhttp://docs.unity3d.com/ScriptReference/AndroidJNI.html£¬http://docs.unity3d.com/ScriptReference/AndroidJNIHelper.html

2.Level2£ºAndroidJavaObject¡¢AndroidJavaClass¡¢AndroidJavaProxy£¬Õâ¸ö3¸öÀàÊÇ»ùÓÚLevel1µÄ·â×°ÌṩÁ˸ü¸ß²ã¼¶µÄ·âװʹÓÃÆðÀ´¸ü¼òµ¥£¬Õâ¸öÔÚµÚÈý²¿·ÖÏêϸ½éÉÜ¡£

2.3iOS²å¼þ

iOS±àд²å¼þ±ÈAndroidÒª¼òµ¥ºÜ¶à£¬ÒòΪObjective-CÒ²ÊÇ C-compatibleµÄ£¬ÍêÈ«¼æÈݱê×¼CÓïÑÔ¡£ÕâЩ¾Í¿ÉÒԷdz£¼òµ¥µÄ°üÒ»²ã extern "c"{}£¬ÓÃCÓïÑÔ·â×°µ÷ÓÃiOS¹¦ÄÜ£¬±©Â¶¸øUnity3Dµ÷Óᣲ¢ÇÒ¿ÉÒÔ¸úÔ­ÉúC/C++¿âÒ»Ñù±à³É.a²å¼þ¡£C#ÓëiOS£¨Objective-C£©Í¨ÐŵÄÔ­Àí¸úC/C++ÍêȫһÑù£º

³ý´ËÖ®Í⣬Unity iOSÖ§³Ö²å¼þ×Ô¶¯¼¯³É·½Ê½¡£ËùÓÐλÓÚAsset/Plugings/iOSÎļþ¼ÐÖкó׺ÃûΪ.m , .mm , .c , .cppµÄÎļþ¶¼½«×Ô¶¯²¢Èëµ½ÒÑÉú³ÉµÄXcodeÏîÄ¿ÖС£È»¶ø£¬×îÖÕ±à½øÖ´ÐÐÎļþÖС£ºó׺Ϊ.hµÄÎļþ²»Äܱ»°üº¬ÔÚXcodeµÄÏîÄ¿Ê÷ÖУ¬µ«ËûÃǽ«³öÏÖÔÚÄ¿±êÎļþϵͳÖУ¬´Ó¶øÊ¹.m/.mm/.c/.cppÎļþ±àÒë¡£ÕâÑù±àдiOS²å¼þ£¬³ýÁËÐèÒª¶ÔiOS Objective-CÓÐÒ»¶¨Á˽âÖ®Í⣬ÓëC/C++²å¼þûÓвîÒ죬·´¶ø¸ü¼òµ¥¡£

3.°æ±¾Óë²¹¶¡

ÈκÎÓÎÏ·£¨¶ËÓΡ¢ÊÖÓΣ©¶¼Ó¦¸ÃÌṩÓÎÏ·ÄÚ¸üеÄ;¾¶¡£Ò»°ãÓÎÏ··ÖΪȫÁ¿¸üÐÂ/Õû°ü¸üС¢ÔöÁ¿¸üС¢×ÊÔ´¸üС£

È«Á¿

androidÓÎÏ·ÄÚÍêÕû°²×°°üÏÂÔØ£¨iosÌø×ªµ½AppStoreÏÂÔØ£©

ÔöÁ¿£ºÖ÷ÒªÖ¸androidÊ¡Á÷Á¿¸üÐÂ

1.¿ÉÒÔʹÓÃbsdiffÉú³Épatch°ü

2.Ó¦Óñ¦Ò²ÌṩÔöÁ¿¸üÐÂsdk¿É¹©½ÓÈë

×ÊÔ´

Unity3Dͨ¹ýʹÓÃAssetBundle¼´¿ÉʵÏÖ¶¯Ì¬¸üÐÂ×ÊÔ´µÄ¹¦ÄÜ¡£

ÊÖÓÎÔÚʵÏÖÕâ¿éʱÐèҪעÒâµÄ¼¸µã£º

1.ÓÎÏ··¢²¼³öÒ»¶¨ÒªÌṩÓÎÏ·ÄÚ¸üеÄ;¾¶¡£¼´Ê¹ÊÇɾµô²âÊÔ£¬±£²»×¼ÕâÆÚ¼äÐèÒª½øÐÐ×ÊÔ´»òÕßBUGÐÞ¸´¸üС£ºÜ¶àÍæ¼Ò²¢²»ÖªµÀÈçºÎ¸üУ¬¶øÇÒAndroidÊÖ»úÓ¦Ó÷ַ¢Æ½Ì¨¶àÑù£¬·Ö·¢Æ½Ì¨±¾ÉíÒ²²»»á¸ú¹Ù·½Í¬²½¸üУ¨ÌرðÊÇСµÄ·Ö·¢Æ½Ì¨£©¡£

2.¸üй¦ÄÜÒªÌá¹©Ç¿ÖÆ¸üС¢·ÇÇ¿ÖÆ¸üÐÂÅäÖû¯Ñ¡Ï²¢Ö¸¶¨ÄÄЩ°æ±¾¿ÉÒÔ²»Ç¿¸ü£¬ÄÄЩ°æ±¾±ØÐëÇ¿¸ü¡£

3.µ±ÓÎÏ·Ìṩ·ÇÇ¿ÖÆ¸üй¦ÄÜÖ®ºó£¬ÏÖÍøÒ»¶¨»á´æÔÚ¶à¸ö°æ±¾¡£Èç¹ûÐèÒªÕë¶Ô²»Í¬°æ±¾×ö²»Í¬µÄ¸üУ¬ÀýÈçÅäÖÃÎļþAÕë¶Ô1.0.0.1ÐÞ¸ÄÁËÒ»ÏÕë¶Ô1.0.0.2ÐÞ¸ÄÁËÁíÒ»Ï2¸ö°æ±¾ÐèÒª·Ö±ð¸üжÔÓ¦µÄÐ޸ģ¬ÐèÒª×Ô¼ºÊµÏÖ¸üвßÂÔIIPS²»ÌṩÕâ¸ö¹¦ÄÜ¡£µ±ÐèÒª¸´ÔӵĸüвßÂÔ£¬ÍƼö×Ô¼º±àд¸üзþÎñÆ÷ºÍ¿Í»§¶ËÂß¼­£¬²»Ê¹ÓÃiips×é¼þ£¨Æäʵ×Ô¼ºÊµÏÖÒ²ºÜ¼òµ¥£©¡£

ûÓÐÔËÓª¾­ÑéµÄÈË»áÑ¡Ôñ¶þ½øÖÆ£¬ÈÏΪ¶þ½øÖư²È«¡¢¸üС£¬Õâ¶Ô¶ËÓÎ/ÊÖÓÎÍâÍøÖ»´æÔÚÒ»¸ö°æ±¾µÄÓÎÏ·Êʺϣ¬¶ÔÒ»°ã²»Ç¿Éý°æ±¾µÄÊÖÓβ¢²»Êʺϣ¬·´¶ø»á¶Ô¸üкÍά»¤´øÀ´ºÜ´óµÄÂé·³¡£

4.ÅäÖÃʹÓÃXML»òÕßJSONµÈÎı¾¸ñʽ£¬¸üÀûÓÚ¶à°æ±¾µÄ¼æÈݺ͸üС£×ʼÌÚѶ×ÀÇò¿Í»§¶ËʹÓõĶþ½øÖƸñʽ£¨ÓÉexcelת»»¶øÀ´£©£¬µ«ÊÇËæ×ÅÔËÓªÅäÖøñʽÐèÒªÔö¼Ó×ֶΣ¬ÕâÑùÀϰ汾³ÌÐò¾Í½âÎö²»ÁËеĶþ½øÖÆÊý¾Ý£¬¸ø¼æÈݺ͸üдøÀ´Á˺ܴóµÄÂé·³¡£ÕâÑù¾ÍÒªÇóÉÏÃæÌáµ½µÄÕë¶Ô²»Í¬²½×ö²»Í¬¸üУ¬ÓÖ»òÕßÅäÖÃÒ»¿ªÊ¼¾ÍÔ¤ÁôºÃ×ã¹»µÄÀ©Õ¹ÏÆäʵ²»¹ÜÔõôԤÁôÀ©Õ¹Ò²ºÜÄѸúÉÏÐèÇóµÄ±ä»¯£¬¶øÇÒÒ»¿ªÊ¼»á°ÑÅäÖÃ±í¸´ÔÓ»¯µ«ÊÇÆäʵֻÓÐÒ»ÕÅ»òÕß¼¸ÕŲŻá±ä¸ü½á¹¹¡£

5.iOS°æ±¾µÄËÍÉó°æ±¾ÐèÒªÁ¬½ÓÌØ¶¨µÄ°üº¬ÐÂÄÚÈݵķþÎñÆ÷£¬ÏÖÍø·þÎñÆ÷»¹²»°üº¬ÐÂÄÚÈÝ¡£ËÍÉóͨ¹ýÖ®ºó£¬ÉϼÜÓÎÏ·ÏÖÍø·þÎñÆ÷»á½øÐиüУ¬iOS°æ±¾ÐèÒªÁ¬½ÓÏÖÍø·þÎñÆ÷¶ø·ÇËÍÉó·þÎñÆ÷£¬µ«ÊÇÕâÆÚ¼äÓÖ²»ÄÜÐ޸Ŀͻ§¶È£¬Õâ¸öÇл»ÐèҪͨ¹ý·þÎñÆ÷Ï·¢¿ª¹Ø½øÐпØÖÆ¡£ÀýÈçͨ¹ýÖ¸¶¨ËÍÉóµÄiOSÓÎÏ·°æ±¾ºÅ£¬¿Í»§¶ËÅжϱ¾µØ°æ±¾ºÅÊÇ·ñΪËÍÉó°æ±¾£¬Èç¹ûÊÇÁ¬½ÓËÍÉó·þÎñÆ÷£¬·ñÔòÁ¬½ÓÏÖÍø·þÎñÆ÷¡£

4.Óýű¾£¬»¹ÊDz»Óã¿ÕâÊÇÒ»¸öÎÊÌâ

·½±ã¸üУ¬¼õÉÙCrash£¨ÌرðÊÇʹÓÃC++µÄcocosÒýÇæ£©

ͨ¹ýÉÏÃæÒ»½Ú¡¾°æ±¾Óë²¹¶¡¡¿ÖªµÀҪʵÏÖ´úÂë¸üÐÂÊǷdz£À§Äѵģ¬ÕýʽÕâ¸öÔ­Òò¿Í»§¶Ë¿ª·¢µÄѹÁ¦ÊDZȽϴóµÄ£¬Èç¹û³öÏÖÁ˱ȽÏÑÏÖØµÄBUG±ØÐë·¢Ç¿ÖÆ¸üа汾£¬Ê¹Óýű¾¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ¡£

ÓÉÓÚUnity3DÊÖÓθüгɱ¾±È½Ï´ó£¬¶øÇÒĿǰÌÚѶ×ÀÇòÒªÇó²»ÄÜÇ¿ÖÆ¸üУ¬Õâµ¼ÖÂа汾µÄ»î¶¯¸²¸ÇÂÊÌáÉý±È½ÏÂý¡¢³öÏÖÎÊÌâÖ®ºóÄÑÒÔÐÞ¸´¡£Õë¶ÔÕâ¸öÇé¿ö£¬¿¼ÂÇÒýÈëlua½øÐл¿ª·¢£¬ºóÐø·¢²¼»î¶¯¼°ÐÞ¸´bugÖ»ÐèÒª·¢²¼lua×ÊÔ´£¬½øÐÐ×ÊÔ´¸üм´¿É£¬´ó´ó½µµÍÁË·¢²¼ºÍÐÞ¸´ÎÊÌâµÄ³É±¾¡£

¿ÉÑ¡·½°¸»¹ÓÐʹÓÃHtml5½øÐл¿ª·¢£¬Ä¿Ç°ÓÎÏ·ÖÐÒѾ­Ô¤ÂñÁËHtml5»î¶¯Èë¿Ú£¬²¢ÇÒÒѾ­ÓÃÀ´·¢¹ý"Íæ¼Òµ÷²é"¡¢"ÌÚѶÆåÅÆÐû´«"µÈ¡£µ«ÊÇÓëlua¶Ô±È£¬²»ÄÜ×öµ½ÓëUnity3DµÄÉî¶ÈÈںϣ¬ÌåÑé²»ÈçʹÓÃlua£¬ÀýÈç²»ÄܲÙ×÷ÓÎÏ·ÖеÄui¡¢²»ÄÜÍê³É¸´ÔÓ½çÃæµÄÖÆ×÷¡¢²»Äܸ´ÓÃÒÑÓеŦÄÜ¡¢Íæ¼Ò¸¶·Ñ³äÖµ¸úÒÑÓеÄÒ²»áÓвîÒì

ÓÎÏ·½Å±¾Ö®Íõ¡ª¡ªLua

ÔÚ¹«Ë¾ÄÚ²¿Ä§·½±È½Ïϲ»¶ÓÃlua£¬»ðÒþÈÌÕߣ¨ÊÖÓΣ©unity+ulua£¬È«ÃñË®ä°cocos2d-x+luaµÈµÈ¶¼ÓÐʹÓÃlua½øÐпª·¢¡£ÎÒÃÇ¿ÉÒÔʹÓù«Ë¾ÄÚ²¿µÄxlua×é¼þ£¬Ò²¿ÉÒÔʹÓÃulua<http://ulua.org/>¡¢UniLua<https://github.com/xebecnan/UniLua>µÈµÈ¡£

5.×ÊÔ´¹ÜÀí

5.1×ÊÔ´¹ÜÀíÆ÷

ÒµÎñ²»ÒªÖ±½ÓʹÓÃÒýÇæ»òÕßϵͳԭÉú½Ó¿Ú£¬¶øÊÇ·â×°Ò»¸ö×ÊÔ´¹ÜÀíÆ÷¸ºÔð£º×ÊÔ´¼ÓÔØ¡¢Ð¶ÔØ

¼æÈÝResource.LoadÓëAssetBundle×ÊÔ´»¥Ïà±ä¸üÐèÇ󣬿ª·¢ÆÚ¼äʹÓÃResource.Load·½Ê½¶ø²»±Ø´òAB°üЧÂʸü¸ß

¼ÓÔØ×ÊԴʱ£¬²»¹ÜÊÇͬ²½¼ÓÔØ»¹ÊÇÒì²½¼ÓÔØ£¬×îºÃÊÇʹÓÃÒì²½±àÂ뷽ʽ£¨»Øµ÷º¯Êý»òÕßÏûϢ֪ͨ»úÖÆ£©¡£Èç¹ûÄÄÒ»Ìì×ÊÔ´Óɱ¾µØ¼ÓÔØ¸ÄΪ´Ó·þÎñÆ÷°´Ðè¼ÓÔØ£¬¶øÓÎÏ·ÖеÄÂß¼­¶¼ÊÇͬ²½·½Ê½±àÂëµÄ£¬¸ÄÆðÀ´½«·Ç³£Í´¿à¡£ÆäʵÒì²½±àÂ뷽ʽºÜ¼òµ¥£¬²»±Èͬ²½·½Ê½¸´ÔÓ¡£

5.2×ÊÔ´ÀàÐÍ

ͼƬ/ÎÆÀí£¨¶ÔÐÔÄÜ¡¢°üÌåÓ°Ïì×î´óÒòËØ£©

񙮵

1.±³¾°ÒôÀÖ£¬ÌÚѶ×ÀÇòʹÓÃ.ogg/.mp3

2. ÒôЧ£¬ÌÚѶ×ÀÇòʹÓÃ.wav

Êý¾Ý

1.Îı¾

2.¶þ½øÖÆ

¶¯»­/ÌØÐ§

5.3ͼƬ-Îļþ¸ñʽÓëÎÆÀí¸ñʽ

³£ÓõÄͼÏñÎļþ¸ñʽÓÐBMP£¬TGA£¬JPG£¬GIF£¬PNGµÈ£»

³£ÓõÄÎÆÀí¸ñʽÓÐR5G6B5£¬A4R4G4B4£¬A1R5G5B5£¬R8G8B8, A8R8G8B8µÈ¡£

Îļþ¸ñʽÊÇͼÏñΪÁË´æ´¢ÐÅÏ¢¶øÊ¹ÓõĶÔÐÅÏ¢µÄÌØÊâ±àÂ뷽ʽ£¬Ëü´æ´¢ÔÚ´ÅÅÌÖУ¬»òÕßÄÚ´æÖУ¬µ«ÊDz¢²»Äܱ»GPUËùʶ±ð£¬ÒòΪÒÔÏòÁ¿¼ÆËã¼û³¤µÄGPU¶ÔÓÚÕâЩ¸´ÔӵļÆËãÎÞÄÜΪÁ¦¡£ÕâЩÎļþ¸ñʽµ±±»ÓÎÏ·¶ÁÈëºó£¬»¹ÊÇÐèÒª¾­¹ýCPU½âѹ³ÉR5G6B5£¬A4R4G4B4£¬A1R5G5B5£¬R8G8B8, A8R8G8B8µÈÏñËØ¸ñʽ£¬ÔÙ´«Ë͵½GPU¶Ë½øÐÐʹÓá£

ÎÆÀí¸ñʽÊÇÄܱ»GPUËùʶ±ðµÄÏñËØ¸ñʽ£¬Äܱ»¿ìËÙѰַ²¢²ÉÑù¡£¾Ù¸öÀý×Ó£¬DDSÎļþÊÇÓÎÏ·¿ª·¢Öг£ÓõÄÎļþ¸ñʽ£¬ËüÄÚ²¿¿ÉÒÔ°üº¬A4R4G4B4µÄÎÆÀí¸ñʽ£¬Ò²¿ÉÒÔ°üº¬A8R8G8B8µÄÎÆÀí¸ñʽ£¬ÉõÖÁ¿ÉÒÔ°üº¬DXT1µÄÎÆÀí¸ñʽ¡£ÔÚÕâÀïDDSÎļþÓеãÈÝÆ÷µÄÒâζ¡£OpenGL ES 2.0Ö§³ÖÒÔÉÏÌáµ½µÄR5G6B5£¬A4R4G4B4£¬A1R5G5B5£¬R8G8B8£¬A8R8G8B8µÈÎÆÀí¸ñʽ£¬ÆäÖÐ R5G6B5£¬A4R4G4B4£¬A1R5G5B5ÿ¸öÏñËØÕ¼ÓÃ2¸ö×Ö½Ú(BYTE)£¬R8G8B8ÿ¸öÏñËØÕ¼ÓÃ3¸ö×Ö½Ú£¬A8R8G8B8ÿ¸öÏñËØÕ¼Óà 4¸ö×Ö½Ú¡£

»ùÓÚOpenGL ESµÄѹËõÎÆÀíÓг£¼ûµÄÈçϼ¸ÖÖʵÏÖ£º

1£©ETC1£¨Ericsson texture compression)£¬ETC1¸ñʽÊÇOpenGL ESͼÐαê×¼µÄÒ»²¿·Ö£¬²¢ÇÒ±»ËùÓеÄAndroidÉ豸ËùÖ§³Ö¡£

2£©PVRTC (PowerVR texture compression)£¬Ö§³ÖµÄGPUΪImagination TechnologiesµÄPowerVR SGXϵÁС£

3£©ATITC (ATI texture compression)£¬Ö§³ÖµÄGPUΪQualcommµÄAdrenoϵÁС£

4£©S3TC (S3 texture compression)£¬Ò²±»³ÆÎªDXTC£¬ÔÚPCÉϹ㷺±»Ê¹Ó㬵«ÊÇÔÚÒÆ¶¯É豸ÉÏ»¹ÊÇÊôÓÚÐÂÏÊÊÂÎï¡£Ö§³ÖµÄGPUΪNVIDIA TegraϵÁС£

5.4×ÊÔ´¹¤¾ß

ÓÐÁ˹淶¾Í¿ÉÒÔ×ö¹¤¾ß¼ì²é£¬´ÓÔ´Í·µ½´ò°ü

1.×ÊÔ´µ¼Èë¼ì²é

2.×ÊÔ´´ò°ü¼ì²é

6.ÐÔÄÜÓÅ»¯

µôÖ¡Ö÷ÒªÕë¶ÔGPUºÍCPU×ö·ÖÎö£»ÄÚ´æÕ¼ÓôóÖ÷ÒªÕë¶ÔÃÀÊõ×ÊÔ´£¬ÒôЧ£¬ÅäÖÃ±í£¬»º´æµÈ·ÖÎö£»¿¨¶ÙÒ²ÐèÒª¶ÔGPUºÍCPU·åÖµ·ÖÎö£¬ÁíÍâIO»òÕßGCÒ²Ò×µ¼Ö¡£

6.1¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷

1.Unity Profiler

2. XCode instruments

3. Qualcomm Adreno Profiler

4.NVIDIA PerfHUD ES Tegra

6.2CPU£º×î¼ÑÔ­Ôò¼õÉÙ¼ÆËã

¸´Óã¬UIScrollView Item¸´Ó㬱ÜÃâÆµ·±´´½¨Ïú»Ù¶ÔÏó

»º´æ£¬ÀýÈçTransform

ÔËËã²Ã¼ô£¬ÀýÈçÅöײ¼ì²â²Ã¼ô

1.´ÖÂÔÅöײ¼ì²â£¨»®·Ö¿Õ¼ä¡ª¡ª¶þ·Ö/ËIJæÊ÷/°Ë²æÊ÷/Íø¸ñµÈ£¬½µµÍÅöײ¼ì²âµÄÊýÁ¿£©

2.¾«È·Åöײ¼ì²â£¨¼ì²éºòÑ¡Åöײ½á¹û£¬½ø¶øÈ·¶¨¶ÔÏóÊÇ·ñÕæÊµ·¢ÉúÅöײ£©

3.ÐÝÃß»úÖÆ£º±ÜÃâÄ£Äâ¾²Ö¹µÄÇò

Âß¼­Ö¡ÓëäÖȾ֡·ÖÀë

·ÖÖ¡´¦Àí

Òì²½/¶àÏ̴߳¦Àí

6.3GPU£º×î¼ÑÔ­Ôò¼õÉÙäÖȾ

ÎÆÀíѹËõ

1.Åú´¦Àí¼õÉÙDrawCall£¨unity-Static BatchingºÍDynamic Batching£¬cocos SpriteBatchNode£©

2.¼õÉÙÎÞЧ/²»±ØÒª»æÖÆ£ºÆÁÄ»ÍâµÄ²Ã¼ô£¬FlashÔà¾ØÕóËã·¨£¬

3.LOD/ÌØÐ§·Öµµ

4. NGUI¶¯¾²·ÖÀ루UIPanel.LateUpdateµÄÏûºÄ£©

5. ¿ØÖƽÇÉ«¹Ç÷ÀÊý¡¢Ä£ÐÍÃæÊý/¶¥µãÊý

6.½µÖ¡£¬²¢·ÇËùÓг¡¾°¶¼ÐèÒª60Ö¡£¨ÌÚѶ×ÀÇòÓÎÏ·³¡¾°60Ö¡£¬ÆäËû³¡¾°30Ö¡£»ÌìÌì¿áÅÜ£¬ÔÚ¿ªÊ¼ÓÎϷǰ£¬FPS±»ÏÞÖÆÎª30£¬ÓÎÏ·¿ªÊ¼Ö®ºóFPS²ÅΪ60¡£ÌìÌì·É³µµÄFPSΪ30£¬µ«Êǵ±Óû§Ò»¶Îʱ¼ä²»µã»÷½çÃæºó£¬FPS×Ô¶¯½µ£©

6.4Äڴ棺×î¼ÑÔ­Ôò¼õÉÙÄÚ´æ·ÖÅä/Ë鯬¡¢¼°Ê±ÊÍ·Å

1.ÎÆÀíѹËõ-Android ETC1¡¢iOS PVRTC 4bpp¡¢windows DXT5

2.¶ÔÏó³Ø-PoolManager

3.ºÏ²¢¿ÕÏÐͼ¼¯

4.UI¾Å¹¬¸ñ

5.ɾ³ý²»ÓõĽű¾£¨Ò²»áÕ¼ÓÃÄڴ棩

6.5IO£º×î¼ÑÔ­Ôò¼õÉÙ/Òì²½io

1.×ÊÔ´Òì²½/¶àÏ̼߳ÓÔØ

2.Ô¤¼ÓÔØ

3.ÎļþѹËõ

4.ºÏÀí¹æ»®×ÊÔ´ºÏ²¢´ò°ü£¬²¢·Çtexturepacker´ò°ü³É´óͼ¼¯Ò»¶¨ºÃ£¬»áÔö¼ÓÎļþioʱ¼ä

6.6ÍøÂ磺ÆäʵҲÊÇIOµÄÒ»ÖÖ

ʹÓõ¥Ï̡߳ª¡ª¹²ÓÃUIỊ̈߳¬Í¨¹ýʼþ/UIÑ­»·Çý¶¯£»»¹ÊǶàÏ̡߳ª¡ªµ¥¶ÀµÄÍøÂçỊ̈߳¿

µ¥Ị̈߳ºÓÉÓÎÏ·Ñ­»·£¨Ê¼þ£©Çý¶¯£¬µ¥Ïß³Ìģʽ±ÈʹÓöàÏß³Ìģʽ¿ª·¢¡¢Î¬»¤¼òµ¥ºÜ¶à£¬µ«ÊÇÐÔÄܱȶàÏß³ÌÒª²îһЩ£¬ËùÒÔÔÚÍøÂçIOµÄʱºò£¬ÐèҪעÒâ±ð×èÈûµ½ÓÎÏ·Ñ­»·¡£ËµÃ÷£¬Èç¹ûÍøÂçIO²»¸´ÔÓµÄÇé¿öÏ£¬ÍƼöʹÓøÃģʽ¡£

1.ÔÚUIÏß³ÌÖУ¬±ðµ÷ÓÿÉÄÜ×èÈûµÄÍøÂ纯Êý£¬ÓÅÏÈ¿¼ÂÇ·Ç×èÈûIO

2.ÕâÊÇÍøÂ翪·¢Õß¾­³£·¸µÄ´íÎóÖ®Ò»¡£±ÈÈ磺×öÒ»¸ö¼òµ¥Èç gethostbyname() µÄµ÷Óã¬Õâ¸ö²Ù×÷ÔÚС·¶Î§Öв»»á´æÔÚÈκÎÎÊÌ⣬µ«ÊÇÔÚÓÐЩÇé¿öÖÐÏÖʵÊÀ½çµÄÍæ¼ÒÈ´»áÒò´Ë×èÈûÊý·ÖÖÓÖ®¾Ã£¡Èç¹ûÄãÔÚ GUI Ïß³ÌÖе÷ÓÃÕâÑùÒ»¸öº¯Êý£¬¶ÔÓÚÓû§À´Ëµ£¬ÔÚº¯Êý×èÈûʱ£¬GUI Ò»Ö±¶¼´¦ÓÚ frozen »òÕß hanged ״̬£¬Õâ´ÓÓû§ÌåÑéµÄ½Ç¶ÈÊǾø¶Ô²»ÔÊÐíµÄ¡£

¶àỊ̈߳ºµ¥¶ÀµÄÍøÂçỊ̈߳¬Ê¹ÓöÀÁ¢µÄÍøÂçÏß³ÌÓÐÒ»¸ö·Ç³£Ã÷ÏԵĺô¦£¬Ö÷Ï߳̿ÉÒÔ½«Ôà»î¡¢Àۻ¸øÍøÂçÏß³Ì×öʹµÃUI¸üÁ÷³©£¬ÀýÈçÏûÏ¢µÄ±à½âÂë¡¢¼Ó½âÃܹ¤×÷£¬ÕâЩ¶¼ÊǷdz£ºÄʱµÄ¡£µ«ÊÇʹÓöàỊ̈߳¬¸ø¿ª·¢ºÍά»¤´øÀ´Ò»¶¨³É±¾£¬²¢ÇÒÈç¹ûûÓÐÒ»¶¨µÄ¾­Ñéд³öÀ´µÄÍøÂç¿â²»ÄÇôÎȶ¨£¬ÈÝÒ׳ö´í£¬ÉõÖÁµ¼ÖÂÓÎÏ·±ÀÀ£¡£ÏÂÃæÊǼ¸µã×¢ÒâÊÂÏ

1.ǧÍòǧÍò±ðÔÚÍøÂçÏß³ÌÖУ¬»Øµ÷Ö÷Ị̈߳¨UIỊ̈߳©µÄ»Øµ÷º¯Êý¡£¶øÊÇÍøÂçÏ߳̽«Êý¾Ý×¼±¸ºÃ£¬ÈÃÖ÷Ïß³ÌÖ÷¶¯È¥È¡£¬Òà»òÕßËµÍøÂçÏ߳̽«ÍøÂçÊý¾Ý×÷Ϊһ¸öʼþÇý¶¯Ö÷Ïß³Ìȥȡ¡£µ±ÄêÎÒÔÚÓÃCocos2d-x + Lua×öħ·¨»¨Ô°µÄÊÖ»údemoʱ£¬¾Í²ÉÓõĶàÏß³Ìģʽ£¬×î³õÔÚÍøÂçÏß³ÌÖ±½Óµ÷ÓÃÖ÷Ï̻߳ص÷º¯Êý£¬¾­³£»áµ¼ÖÂĪÃûÆäÃîµÄCrash¡£ÒòÎªÍøÂçÏß³ÌÖÐûÓÐäÖȾËù±ØÐëµÄopenglÉÏÏÂÎÄ£¬»áµ¼ÖÂäÖȾ³öÎÊÌâ¶øCrash¡£

6.6°ü´óС

1.ʹÓÃѹËõ¸ñʽµÄÎÆÀí/ÒôƵ

2.¾¡Á¿²»ÒªÊ¹ÓÃSystem.Xml¶øÊ¹ÓýÏСµÄMono.Xml

3.ÆôÓÃStrippingÀ´¼õС¿âµÄ´óС

4.Unity strip level£¨strip by byte code£©

5. Unity3DÊä³öAPK£¬È¡ÏûX86¼Ü¹¹

6..iOS Xcode strip¿ªÆô

6.7ºÄµç

ÏÂÃæÓ°ÏìºÄµçµÄ¼¸¸öÒòËØºÍÓ°Ïì¶ÈÕª×Ô¹«Ë¾ÄÚ²¿µÄһƪÎÄÕ¡£

7.Òì³£ÓëCrash

7.1·ÀÓùʽ±à³Ì

·Ç·¨µÄÊäÈëÖб£»¤ÄãµÄ³ÌÐò

1.¼ì²éÿһÊäÈë²ÎÊý

2.¼ì²éÀ´×ÔÍⲿµÄÊý¾Ý/×ÊÔ´

¶ÏÑÔ

´íÎó´¦Àí

¸ôÀ¸

·À²»Ê¤·À£¬²»¹ÜÈçºÎ·ÀÓù×ÜÓÐʧÊÖµÄʱºò£¬Õâ¾ÍÐèÒªÒì³£²¶»ñºÍÉϱ¨¡£

7.2Òì³£²¶»ñ

Òì³£²¶»ñÒѾ­ÓкܶàµÚÈý×é¼þ¿É¹©½ÓÈ룬ÕâÀï²»½éÉÜ×é¼þµÄ¶ø½ÓÈ룬¶øÊǼòµ¥Ì¸Ò»ÏÂÒì³£²¶»ñµÄÔ­Àí¡£

ÓÉÓںܶà´íÎó²¢²»ÊÇ·¢ÉúÔÚ¿ª·¢¹¤×÷Õßµ÷ÊԽ׶Σ¬¶øÊÇÔÚÓû§»ò²âÊÔ¹¤×÷ÕßʹÓý׶Σ»Õâ¾ÍÐèÒªÏà¹Ø´úÂëά»¤¹¤×÷Õß¶ÔÓÚ³ÌÐòÒì³£²¶»ñÊÕ¼¯ÏÖ³¡ÐÅÏ¢¡£Òì³£ÓëCrashµÄ¼à¿ØºÍÉϱ¨£¬ÕâÀï²»½éÉÜBuglyµÄʹÓ㬰´ÕÕapollo»òÕßmsdkµÄÎĵµ½ÓÈë¼´¿É£¬Ã»ÓÐÌ«¶à¿ÉÒÔ˵µÄ¡£ÕâÀïÖ÷Ҫ͸¹ýBugly½éÉÜÊÖÓεļ¸ÀàÒì³£µÄ²¶»ñºÍ·ÖÎö£º

1. Unity3D C#²ãÒì³£²¶»ñ£º±È½Ï¼òµ¥Ê¹ÓÃApplication.RegisterLogCallback/Application.RegisterLogCallbackThreaded£¨ÔÚÒ»¸öеÄÏß³ÌÖе÷ÓÃίÍУ©×¢²á»Øµ÷º¯Êý¡£Ìرð×¢Ò⣺±£Ö¤ÏîÄ¿ÖÐÖ»ÓÐÒ»¸öApplication.RegisterLogCallback×¢²á»Øµ÷£¬·ñÔòºóÃæ×¢²áµÄ»á¸²¸ÇÇ°Ãæ×¢²áµÄ»Øµ÷£¡»Øµ÷º¯ÊýÖÐstackTrace²ÎÊý°üÒì³£µ÷ÓÃÕ»¡£

 

public void HandleLog(string logString, string stackTrace, LogType type)

{

if (logString == null || logString.StartsWith(cLogPrefix))

{

return;

}

ELogLevel level = ELogLevel.Verbose;

switch (type)

{

case LogType.Exception:

level = ELogLevel.Error;

break;

default:

return;

}

if (stackTrace != null)

{

Print(level, ELogTag.UnityLog, logString + "\n" + stackTrace);

}

else

{

Print(level, ELogTag.UnityLog, logString);

}

}

2.Android Java²ãÒì³£²¶»ñ

try¡­catchÏÔʽµÄ²¶»ñÒì³£Ò»°ãÊDz»ÒýÆðÓÎÏ·CrashµÄ£¬ËüÓÖ³ÆÎª±àÒëʱÒì³££¬¼´ÔÚ±àÒë½×¶Î±»´¦ÀíµÄÒì³£¡£±àÒëÆ÷»áÇ¿ÖÆ³ÌÐò´¦ÀíËùÓеÄCheckedÒì³££¬ÒòΪJavaÈÏΪÕâÀàÒì³£¶¼ÊÇ¿ÉÒÔ±»´¦Àí£¨ÐÞ¸´£©µÄ¡£Èç¹ûûÓÐtry¡­catchÕâ¸öÒì³££¬Ôò±àÒë³ö´í£¬´íÎóÌáʾÀàËÆÓÚ"Unhandled exception type xxxxx"¡£

UnCheckedÒì³£ÓÖ³ÆÎªÔËÐÐʱÒì³££¬ÓÉÓÚûÓÐÏàÓ¦µÄtry¡­catch´¦Àí¸ÃÒì³£¶ÔÏó£¬ËùÒÔJavaÔËÐл·¾³½«»áÖÕÖ¹£¬³ÌÐò½«Í˳ö£¬Ò²¾ÍÊÇÎÒÃÇËù˵µÄCrash¡£ÄÇΪʲô²»»á¼ÓÔÚtry¡­catchÄØ£¿

1. ÎÞ·¨½«ËùÓеĴúÂë¶¼¼ÓÉÏtry¡­catch

2.UnCheckedÒ쳣ͨ³£¶¼ÊǽÏΪÑÏÖØµÄÒì³££¬»òÕß˵ÒѾ­ÆÆ»µÁËÔËÐл·¾³µÄ¡£±ÈÈçÄÚ´æµØÖ·£¬¼´Ê¹ÎÒÃÇtry¡­catchסÁË£¬Ò²²»ÄÜÃ÷È·ÖªµÀÈçºÎ´¦Àí¸ÃÒì³££¬²ÅÄܱ£Ö¤³ÌÐò½ÓÏÂÀ´µÄÔËÐÐÊÇÕýÈ·µÄ¡£

UncaughtÒì³£»áµ¼ÖÂÓ¦ÓóÌÐò±ÀÀ£¡£ÄÇôµ±±ÀÀ£ÁË£¬ÎÒÃÇÊÇ·ñ¿ÉÒÔ×öÐ©Ê²Ã´ÄØ£¬¾ÍÏñApplication.RegisterLogCallback×¢²á»Øµ÷´òÓ¡ÈÕÖ¾¡¢Éϱ¨·þÎñÆ÷¡¢µ¯´°ÌáʾÓû§£¿JavaÌṩÁËÒ»¸ö½Ó¿Ú¸øÎÒÃÇ£¬¿ÉÒÔÍê³ÉÕâЩ£¬Õâ¾ÍÊÇUncaughtExceptionHandler£¬¸Ã½Ó¿Úº¬ÓÐÒ»¸ö´¿Ð麯Êý£º

 public abstract void uncaughtException (Thread thread, Throwableex)

UncaughtÒì³£·¢Éúʱ»áÖÕÖ¹Ị̈߳¬´Ëʱ£¬ÏµÍ³±ã»á֪ͨUncaughtExceptionHandler£¬¸æËßËü±»ÖÕÖ¹µÄÏß³ÌÒÔ¼°¶ÔÓ¦µÄÒì³££¬È»ºó±ã»áµ÷ÓÃuncaughtExceptionº¯Êý¡£Èç¹û¸ÃhandlerûÓб»ÏÔʽÉèÖã¬Ôò»áµ÷ÓöÔÓ¦Ïß³Ì×éµÄĬÈÏhandler¡£Èç¹ûÎÒÃÇÒª²¶»ñ¸ÃÒì³££¬±ØÐëʵÏÖÎÒÃÇ×Ô¼ºµÄhandler£¬²¢Í¨¹ýÒÔϺ¯Êý½øÐÐÉèÖãº

 public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler)

ÌØ±ð×¢Ò⣺¶à´Îµ÷ÓÃsetDefaultUncaughtExceptionHandlerÉèÖÃhandler£¬ºóÃæ×¢²áµÄ»á¸²¸ÇÇ°Ãæ×¢²áµÄ£¬ÒÔ×îºóÒ»´ÎΪ׼¡£ÊµÏÖ×Ô¶¨ÒåµÄhandler£¬Ö»ÐèÒª¼Ì³ÐUncaughtExceptionHandler¸Ã½Ó¿Ú£¬²¢ÊµÏÖuncaughtException·½·¨¼´¿É¡£

static class MyCrashHandler implements UncaughtExceptionHandler{

@Override

public void uncaughtException(Thread thread, final Throwable throwable) {

// Deal this exception

}

}

ÔÚÈκÎÏß³ÌÖУ¬¶¼¿ÉÒÔͨ¹ýsetDefaultUncaughtExceptionHandlerÀ´ÉèÖÃhandler£¬µ«ÔÚAndroidÓ¦ÓóÌÐòÖУ¬È«¾ÖµÄApplicationºÍActivity¡¢Service¶¼Í¬ÊôÓÚUIÖ÷Ị̈߳¬Ïß³ÌÃû³ÆÄ¬ÈÏΪ"main"¡£ËùÒÔ£¬ÔÚApplicationÖÐÓ¦¸ÃΪUIÖ÷Ïß³ÌÌí¼ÓUncaughtExceptionHandler£¬ÕâÑùÕû¸ö³ÌÐòÖеÄActivity¡¢ServiceÖгöÏÖµÄUncaughtExceptionʼþ¶¼¿ÉÒÔ±»´¦Àí¡£

²¶»ñExceptionÖ®ºó£¬ÎÒÃÇ»¹ÐèÒªÖªµÀ±ÀÀ£¶ÑÕ»µÄÐÅÏ¢£¬ÕâÑùÓÐÖúÓÚÎÒÃÇ·ÖÎö±ÀÀ£µÄÔ­Òò£¬²éÕÒ´úÂëµÄBug¡£Òì³£¶ÔÏóµÄprintStackTrace·½·¨ÓÃÓÚ´òÓ¡Òì³£µÄ¶ÑÕ»ÐÅÏ¢£¬¸ù¾ÝprintStackTrace·½·¨µÄÊä³ö½á¹û£¬ÎÒÃÇ¿ÉÒÔÕÒµ½Òì³£µÄÔ´Í·£¬²¢¸ú×Ùµ½Ò쳣һ·´¥·¢µÄ¹ý³Ì¡£

 public static String getStackTraceInfo(final Throwable throwable) {

String trace = ""; try {

Writer writer = new StringWriter();

PrintWriter pw = new PrintWriter(writer);

throwable.printStackTrace(pw);

trace = writer.toString();

pw.close();

} catch (Exception e) { return "";

} return trace;

}

1. Android Native Crash£ºÇ°ÃæÎÒÃÇÖªµÀ¿ÉÒÔ±àдºÍʹÓÃC/C++Ô­Éú²å¼þ£¬³ý·ÇC++ʹÓÃtry...catch²¶»ñÒì³££¬·ñÔòÒ»°ã»áÖ±½Ócrash£¬Í¨¹ý²¶»ñÐźŽøÐд¦Àí¡£

2.iOS Òì³£²¶»ñ£º

¸úAndroid¡¢UnityÀàËÆ£¬iOSÒ²ÌṩNSSetUncaughtExceptionHandler À´×öÒì³£´¦Àí¡£

 
#import "CatchCrash.h"

@implementation CatchCrash

void uncaughtExceptionHandler(NSException *exception)

{

// Òì³£µÄ¶ÑÕ»ÐÅÏ¢

NSArray *stackArray = [exception callStackSymbols];

// ³öÏÖÒì³£µÄÔ­Òò

NSString *reason = [exception reason];

// Òì³£Ãû³Æ

NSString *name = [exception name];

NSString *exceptionInfo = [NSString stringWithFormat:@"Exception reason£º%@\nException name£º %@\nException stack£º%@",name, reason, stackArray];

NSLog(@"%@", exceptionInfo);

NSMutableArray *tmpArr = [NSMutableArray arrayWithArray:stackArray];

[tmpArr insertObject:reason atIndex:0];

[exceptionInfo writeToFile:[NSString stringWithFormat:@"%@/Documents/error.log",NSHomeDirectory()] atomically:YES encoding:NSUTF8StringEncoding error:nil];

}

@end

µ«ÊÇÄÚ´æ·ÃÎÊ´íÎó¡¢Öظ´ÊͷŵȴíÎóÒýÆð±ÀÀ£¾ÍÎÞÄÜΪÁ¦ÁË£¬ÒòΪÕâÖÖ´íÎóËüÅ׳öµÄÊÇÐźţ¬ËùÒÔ»¹±ØÐëҪרÃÅ×öÐźŴ¦Àí¡£

windows crash£ºÍ¬ÑùwindowsÌṩSetUnhandledExceptionFilterº¯Êý£¬ÉèÖÃ×î¸ßÒ»¼¶µÄÒì³£´¦Àíº¯Êý£¬µ±³ÌÐò³öÏÖÈκÎδ´¦ÀíµÄÒì³££¬¶¼»á´¥·¢ÄãÉèÖõĺ¯ÊýÀȻºóÔÚÒì³£´¦Àíº¯ÊýÖлñÈ¡³ÌÐòÒ쳣ʱµÄµ÷ÓöÑÕ»¡¢ÄÚ´æÐÅÏ¢¡¢Ïß³ÌÐÅÏ¢µÈ¡£

8.ÊÊÅäÓë¼æÈÝ

8.1UIÊÊÅä

1.êµã£¨UIAnchor¡¢UIWidgetAnchorÊôÐÔ£©

2.NGUI UIRootͳһÉèÖÃËõ·Å±ÈÀý

3.UIStretch

8.2¼æÈÝ

1.shader¼æÈÝ£ºÀýÈçifÓï¾äÓеĻúÐÍÖ§³Ö²»ºÃ£¬Google nexus 6ÔÚshaderÖÐʹÓÃÁËif¾Í»ácrash

2.×ÖÌ弿ÈÝ£ºandroid¸´ÔӵĻ·¾³£¬ÓеÄÊÖ»ú³§É̺Írom»á¶Ô×ÖÌå½øÐÐÓÅ»¯£¬È¥µôandroidĬÈÏ×ÖÌ壬Èç¹û²»´ò°ü×ÖÌå»á²»ÏÖʵÖÐÎÄ×Ö

9.µ÷ÊÔ¼°¿ª·¢¹¤¾ß

9.1ÈÕÖ¾¼°¸ú×Ù

ÊÂʵ֤Ã÷£¬´òÓ¡ÈÕÖ¾£¨printfµ÷ÊÔ·¨£©ÊǷdz£ÓÐЧµÄ·½·¨¡£Ò»¸öºÃÓõÄÈÕÖ¾µ÷ÊÔ£¬±Ø±¸ÒÔϼ¸¸ö¹¦ÄÜ£º

1.ÈÕÖ¾Ãæ°å/¿ØÖÆÌ¨£¬¸ñʽ»¯Êä³ö

2.Èß³¤¼¶±ð£¨verbosity level£©£ºERROR¡¢WARN¡¢INFO¡¢DEBUG

3. ƵµÀ£¨channel£©£º°´¹¦ÄܵȽøÐÐÄ£¿é»®·Ö£¬ÈçÍøÂçÆµµÀÖ»½ÓÊÕ/ÏÔÊ¾ÍøÂçÄ£¿éµÄÏûÏ¢£¬ÆµµÀ½¨ÒéʹÓÃö¾Ù½øÐÐÃüÃû¡£

4.ÈÕ־ͬʱ»áÊä³öµ½ÈÕÖ¾Îļþ

5.ÈÕÖ¾Éϱ¨

9.2µ÷ÊÔÓûæÍ¼¹¤¾ß

µ÷ÊÔ»æÍ¼Óù¤¾ßÖ¸¿ª·¢¼°µ÷ÊÔÆÚ¼äΪÁË¿ÉÊÓ»¯µÄ»æÍ¼Óù¤¾ß£¬ÈçÌÚѶ×ÀÇò¿ª·¢µ÷ÊÔʱ»áʹÓÃVectrosityScripts¿ÉÊÓ»¯Çò×ÀµÄÎïÀíÄ£ÐÍ£¨Êµ¼ÊÅöײÏߣ©°ïÖúµ÷ÊÔ¡£ÕâÀ๤¾ß¿ÉÒÔ½ÚÊ¡´óÁ¿Ê±¼ä¼°¿ìËÙ¶¨Î»ÎÊÌ⡣ͨ³£µ÷ÊÔÓûæÍ¼¹¤¾ß°üº¬£º

1.Ö§³Ö»æÖÆ»ù±¾Í¼ÐΣ¬ÈçÖ±Ïß¡¢ÇòÌå¡¢µã¡¢×ø±êÖá¡¢°üΧºÐµÈ

2.Ö§³Ö×Ô¶¨ÒåÅäÖã¬ÈçÑÕÉ«¡¢Á£¶È£¨ÏߵĴÖϸ/ÇòÌå°ë¾¶/µãµÄ´óС£©µÈ

9.3ÓÎÏ·ÄÚÖò˵¥/×÷±×¹¤¾ß

ÔÚ¿ª·¢µ÷ÊÔÆÚ¼äÌṩÓÎÏ·½øÐÐÖеÄһЩÅäÖÃÑ¡Ïî¼°×÷±×¹¤¾ß£¬ÒÔ·½±ãµ÷ÊÔºÍÌá¸ßЧÂÊ¡£ÀýÈçÌÚѶ×ÀÇòÓÎÏ·ÖÐÌṩ£º

1.ÓÎÏ·ÄÚÎïÀíÒýÇæ²ÎÊýµ÷Õû²Ëµ¥£»

2.ÐÞ¸ÄÇò¸ËÃé×¼Ïß³¤¶È/·´ÉäÏßÊýÁ¿¡¢ÐÞ¸ÄÇ©µ½½±ÀøÁìÈ¡ÌìÊýµÈ×÷±×¹¤¾ß

×¢ÒâÓÎÏ·ÄÚµÄËùÓпª·¢µ÷ÊÔÓõŤ¾ß£¬¶¼ÐèҪͨ¹ý±àÒëºê¿ª¹Ø£¬±£Ö¤·¢²¼°æ±¾²»»á°Ñ¹¤¾ß´úÂë°üº¬½øÈ¥¡£

9.4UnityÀ©Õ¹

UntiyÒýÇæÌṩÁ˷dz£Ç¿´óµÄ±à¼­Æ÷À©Õ¹¹¦ÄÜ£¬»ùÓÚUnity Editor¿ÉÒÔʵÏַdz£¶àµÄ¹¦ÄÜ¡£¹«Ë¾ÄÚ²¿¡¢Íⲿ¶¼Óзdz£µÄ¿ªÔ´À©Õ¹¿ÉÓÃ

¹«Ë¾Íⲿ£¬ÈçGitHubÉϵģº

UnityEditor-MiniExtension

Unity-Resource-Checker

UnityEditorHelper

MissingReferencesUnity

Unity3D-ExtendedEditor

¡­

¹«Ë¾ÄÚ²¿£º

TUT¡¢BeautyUnity¡¢UnityDependencyBy

10.ÏîÄ¿ÔËÓª

×Ô¶¯¹¹½¨

1.°æ±¾ºÅ¡ª¡ªÖ÷°æ±¾ºÅ.ÌØÐÔ°æ±¾ºÅ.ÐÞÕý°æ±¾ºÅ.¹¹½¨°æ±¾ºÅ

£¨1£©¹¹½¨°æ±¾ºÅ]Ó¦Ó÷ַ¢Æ½Ì¨Éý¼¶Åжϻù×¼

2.×Ô¶¯¹¹½¨

£¨1£©Android

£¨2£©iOS ¡ª XUPorter

¹«Ë¾ÄÚ²¿½ÓÈëSODA¼´¿É£¬½¨Òé´î½¨×Ô¼ºµÄ¹¹½¨»ú£¬¿ª·¢ÆÚ¼äÿÈÕN BuildÅŶӻáËÀÈ˵ģ¬ÁíÍâÒ²¿ÉÒԴ×Ô¼ºµÄ´î½¨¹¹½¨Æ½Ì¨

ͳ¼ÆÉϱ¨

1.TlogÉϱ¨

£¨1£©Íæ¼Òת»¯¹Ø¼ü²½Öèͳ¼Æ£¨ÖØÒª£©

£¨2£©Pingͳ¼ÆÉϱ¨

£¨3£©ÓÎÏ·ÒµÎñµÄͳ¼ÆÉϱ¨£¨ÀýÈç×ÀÇòÇò¾ÖÏà¹ØµÄͳ¼ÆÉϱ¨£©

2.µÆËþ×Ô¶¨ÒåÉϱ¨

ÔËӪģ°å

1.ÅäÖû¯

2.·þÎñÆ÷¶¯Ì¬Ï·¢

3.CDNÀ­È¡Í¼Æ¬²¢»º´æ

ÉÏÏßǰµÄchecklist

씀
񻵋

˵Ã÷

Ö¸±ê
µÆËþÉϱ¨ 1. µÆËþ×Ô´øÍ³¼ÆÐÅÏ¢
2. ×Ô¶¨ÒåÐÅÏ¢Éϱ¨
µÆËþÀïÃæ°üº¬ºÜ¶àͳ¼ÆÊý¾Ý£¬ÐèÒª¼ì²éÊÇ·ñok 1. °æ±¾/ÇþµÀ·Ö²¼
2. ʹÓÃÆµÂÊͳ¼Æ
3. Áô´æÍ³¼Æ£¨1ÌìÁô´æ¡¢3ÌìÁô´æ¡¢7ÌìÁô´æ¡¢14ÌìÁô´æ£©
4. Óû§½á¹¹Í³¼Æ£¨ÓÐЧÓû§¡¢³ÁĬÓû§¡¢Á÷ʧÓû§¡¢»ØÁ÷Óû§¡¢Éý¼¶Óû§¡¢ÐÂÔöÓû§£©
5. Ó²¼þͳ¼Æ£¨»úÐÍ+°æ±¾¡¢·Ö±æÂÊ¡¢²Ù×÷ϵͳ¡¢ÄÚ´æ¡¢cpu¡¢gpu£©
6. Crashͳ¼Æ£¨Crash°æ±¾¡¢CrashÓ²¼þ¡¢Crash´ÎÊýµÈ£©
µÈµÈ
ПëÍÆËÍ   Äܹ»Õë¶Ôµ¥¸öÍæ¼Ò£¬ËùÓÐÍæ¼ÒÍÆËÍÏûÏ¢
Ã×´óʦ֧¸¶ Õý³£Ö§¸¶
°²È«×é¼þ 1. TSS×é¼þ½ÓÈë
2. Òþ²ØÄÚ²¿·ûºÅ±í£ºC++¿ª·¢µÄ´úÂëʹÓÃstrip±àÒïÑ¡ÏĨ³ý³ÌÐòµÄ·ûºÅ
3. ¹Ø¼üÊý¾Ý¼ÓÃÜ£¬ÈçÓ°×Ó±äÁ¿+Òì»ò¼ÓÃÜËã·¨
¸ù¾Ý°²È«ÖÐÐÄÌṩµÄÎĵµÍê³ÉËùÓÐÏî ½ÓÈ밲ȫ×é¼þ£¬²¢Í¨¹ý°²È«ÖÐÐĵÄÑéÊÕ
Îȶ¨ÐÔ crashÂÊ Óû§crashÂÊ£º·¢ÉúCRASHµÄÓû§Êý/ʹÓÃÓû§Êý
Æô¶¯crashÂÊ£ºÆô¶¯5SÄÚ·¢ÉúcrashÓû§Êý/ʹÓÃÓû§Êý
µÍÓÚ3%
ÈõÍøÂç ¶ÏÏßÖØÁ¬¿¼ÂÇ£¬»º´æÏûÏ¢£¬ÖØ·¢»úÖÆµÈµÈ ¿Í»§¶ËµÄºËÐij¡¾°±ØÐëÓжÏÏßÖØÁ¬»úÖÆ£¬²¢ÔÚÓÐÍøÂç¶¶¶¯¡¢ÑÓʱ¡¢¶ª°üµÄÍøÂ糡¾°Ï£¬¿Í»§¶ËÐè´ïµ½ÒÔÏÂÒªÇó£º
Ò». ²»ÄܳöÏÖÒÔÏÂÏÖÏó£º
1¡¢ÓÎÏ·Öв»ÄܳöÏÖÊÕÖ§²»µÈ¡¢¿Í»§¶Ë¿¨ËÀ/±ÀÀ£µÈÒì³£Çé¿ö£»
2¡¢ÓÎÏ·ºËÐŦÄÜ£¨ÈçµÇ¼¡¢µ¥¾Ö¡¢Ö§¸¶µÈ£©²»ÄÜÓе¼ÖÂÓÎÏ·ÎÞ·¨Õý³£½øÐеÄUI¡¢½»»¥ÎÊÌ⣻
3¡¢²»ÄÜÓÐËðº¦Íæ¼ÒÀûÒæ»ò¿É±»Íæ¼Ò¶îÍâ»ñÀûµÄÎÊÌ⣻
4¡¢ÐèÒªÓкÏÀíµÄÖØÁ¬»úÖÆ£¬±ÜÃâÿ´ÎÖØÁ¬¶¼·µ»Øµ½µÇ¼½çÃæ¡£
¶þ. ÐèÒª¶ÔÑÓʱµÄÇé¿öÓÐÏàÓ¦µÄÌáʾ
¼æÈÝÐÔ Í¨¹ýÊÊÅä²âÊÔ
ÓÎÏ·¸üР1. Õû°ü¸üÐÂ
2. ÔöÁ¿¸üÐÂ
ÌØ±ð˵Ã÷£ºiOSËÍÉó°æ±¾Ö§³ÖÁ¬Ìض¨»·¾³£¬ÓëÕýʽ»·¾³Çø±ð¿ª£¬ÐèҪͨ¹ý·þÎñÆ÷¿ª¹Ø¿ØÖÆ
ÐÔÄÜ ÄÚ´æ¡¢CPU¡¢Ö¡ÂÊ¡¢Á÷Á¿¡¢°²×°°ü´óС ¡¾ÄÚ´æÕ¼ÓÃÒªÇó¡¿
Androidƽ̨£ºÔÚ¶ÔÓ¦µµ´Î¿Í»§¶Ë×îµÍÅäÖÃÒÔÉÏ£¬¾ùÐèÂú×ãÒÔÏÂÄÚ´æÏûºÄÖ¸±ê£¨PSS£©£º
1µµ»úÐÍÖ¸±ê£º×î¸ßPSS<=300MB £¨PSS¸ßÓÚÕâ¸ö±ê×¼»áÓ°Ïì28%Óû§µÄÌåÑ飬Լ1800Íò£©
2µµ»úÐÍÖ¸±ê£º×î¸ßPSS<=200MB£¨PSS¸ßÓÚÕâ¸ö±ê×¼»áÓ°Ïì45%Óû§µÄÌåÑ飬Լ3000Íò£©
3µµ»úÐÍÖ¸±ê£º×î¸ßPSS<=150MB£¨PSS¸ßÓÚÕâ¸ö±ê×¼»áÓ°Ïì27%Óû§µÄÌåÑ飬Լ1800Íò£©
iOSƽ̨£ºÔÚ¶ÔÓ¦µµ´Î¿Í»§¶Ë×îµÍÅäÖÃÒÔÉÏ£¬¾ùÐèÂú×ãÒÔÏÂÄÚ´æÏûºÄÖ¸±ê£¨PSS£©£º
1µµ»úÐÍÖ¸±ê£ºÏûºÄÄڴ棨real mem£©²»´óÓÚ250MB£¨¸ßÓÚÕâ¸ö±ê×¼»áÓ°Ïì53%Óû§µÄÌåÑ飬Լ1900Íò£©
2µµ»úÐÍÖ¸±ê£ºÏûºÄÄڴ棨real mem£©²»´óÓÚ200MB£¨¸ßÓÚÕâ¸ö±ê×¼»áÓ°Ïì47%Óû§µÄÌåÑ飬Լ1700Íò£©
¡¾CPUÕ¼ÓÃÒªÇó¡¿
Androidƽ̨£ºCPUÕ¼ÓÃ(90%)СÓÚ60%
iOSƽ̨£ºCPUÕ¼ÓÃ(90%)СÓÚ80%
¡¾Ö¡ÂÊÒªÇó¡¿
1µµ»úÐÍ£¨CPUΪËĺË1.4GHZ£¬RAMΪ2G£©»òÒÔÉÏ»úÐÍ£ºÓÎÏ·ºËÐÄÍæ·¨ÖУ¬×îСFPSÓ¦²»Ð¡ÓÚ25Ö¡/Ãë
2µµ»úÐÍ£¨CPUΪÁ½ºË1.1GHZ£¬RAMΪ768M£©»òÒÔÉÏ»úÐÍ£ºÓÎÏ·ºËÐÄÍæ·¨ÖУ¬×îСFPSÓ¦²»Ð¡ÓÚ25Ö¡/Ãë
3µµ»úÐÍ£¨CPUΪ1GHZ£¬RAMΪ768M£©»òÒÔÉÏ»úÐÍ£ºÓÎÏ·ºËÐÄÍæ·¨ÖУ¬×îСFPSÓ¦²»Ð¡ÓÚ18Ö¡/Ãë
¡¾Á÷Á¿ÏûºÄÒªÇó¡¿
ÓÎÏ·ºËÐÄÍæ·¨Á÷Á¿ÏûºÄÇé¿ö£¨·ÇÒ»´ÎÐÔÏûºÄ£©Ó¦Âú×ãÒÔÏÂÌõ¼þ£º
1.¶ÔÓÚ·Ö¾ÖµÄÓÎÏ·³¡¾°£¬µ¥¾ÖÏûºÄÁ÷Á¿²»³¬¹ý200KB
2.¶ÔÓÚ²»·Ö¾ÖÓÎÏ·³¡¾°»òÁ÷Á¿Óë¾ÖʱÓйصij¡¾°£¬10·ÖÖÓÏûºÄÁ÷Á¿²»³¬¹ý500KB

   
4406 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ