½ñÌìÎÒÃDz»ÁÄ´úÂ룬ÁÄÁÄÎÒÃǵݲ׿±¾Éí¡£
½ü¼¸Äê,Android²Ù×÷ϵͳµÄ·¢Õ¹¼«ÆäѸÃÍ,»ùÓÚAndroidÖÕ¶ËÊг¡Õ¼ÓÐÂʺͳö»õÁ¿½Ú½ÚÅÊÉý¡£Ëæ×Å»¥ÁªÍøÊ±´úµÄµ½À´,AndroidÒѾÈÚÈëÁËÎÒÃǵÄÉú»î¡£ÓëAndroidÊг¡·±ÈÙµÄͬʱ´æÔÚµÄ,ÊÇAndroidµÄ°²È«ÎÊÌâÈÕÒæÍ»³ö,¸÷ÖÖÒþ˽й¶,ÐÅÏ¢¶ªÊ§,¶ñÒâ¿Û·Ñ,ϵͳÈëÇÖÂżû²»ÏÊ¡£Õë¶ÔAndroid°²È«µÄÑо¿Ê®·Ö½ôÆÈºÍ±ØÒª¡£

AndroidµÄ°²È«·¶³ëÖ÷Òª°üÀ¨Ó²¼þ¡¢Í¨ÐÅ¡¢Èí¼þ¡¢ÐÅÏ¢ËÄ´ó·½Ãæ¡£±¾ÎĽ«ÔÚAndroid¿ò¼ÜµÄ»ù´¡Ö®ÉÏ£¬Öصã¶ÔÈí¼þ½øÐÐ̽ÌÖ¡£
ÏÈ¿´¿´AndridµÄ¿ò¼Ü£¬Èçͼ£º

ÕâÊÇÒ»¸ö¾µäµÄAndroid¿ò¼Üͼ£¬ºÜ¶àÈ˶¼¼û¹ý£¬ÎÒÏȼòÒªµÄ¸ÅÀ¨Ò»ÏÂÕâЩÐÅÏ¢£¬Android²ÉÓ÷ֲãµÄϵͳ¼Ü¹¹£¬ÓÉÏÂÍùÉÏ·Ö±ðÊÇlinuxÄں˲㡢Ӳ¼þ³éÏó²ã¡¢ÏµÍ³ÔËÐÐʱ¿â²ã¡¢Ó¦ÓóÌÐò¿ò¼Ü²ãºÍÓ¦ÓóÌÐò²ã¡£
AndroidÒÔLinux²Ù×÷ϵͳÄÚºËΪ»ù´¡£¬ÊµÏÖÓ²¼þÉ豸Çý¶¯¡¢½ø³ÌºÍÄÚ´æ¹ÜÀí¡¢ÍøÂçÐÒéÕ»¡¢µçÔ´¹ÜÀíµÈºËÐÄϵͳ¹¦ÄÜ¡£³ý´ËÒÔÍ⣬Android»¹Ôö¼ÓÁËÒ»Ð©ÃæÏòÒÆ¶¯É豸µÄÌØÓй¦ÄÜ£¬ÈçµÍÄÚ´æ¹ÜÀíLMK(Low
Memory Killer)¡¢ÄäÃû¹²ÏíÄÚ´æ(Ashmem: Anonymous Shared Memory)£¬ÒÔ¼°½ø³Ì¼äͨÐÅBinder»úÖÆ¡£ÕâЩ¹¦ÄܵÄÔöÇ¿½øÒ»²½ÌáÉýÁËAndroidÔÚÄÚ´æ¹ÜÀí¡¢½ø³Ì¼äͨÐŵȷ½ÃæµÄ°²È«ÐÔ¡£
Android֮ǰµÄ°æ±¾²¢²»´æÔÚÓ²¼þ³éÏó²ã¡£¼øÓÚÓ²¼þ³§É̲¢²»Ï£Íû¹«¿ªÆäÉ豸Çý¶¯µÄÔ´´úÂ룬Google¶Ô´Ë½«LinuxÄÚºËÇý¶¯³ÌÐò½øÐзâ×°£¬ÆÁ±Îµôµ×²ãµÄʵÏÖϸ½Ú£¬ÏòÉÏÌṩͳһµÄ½Ó¿Ú£¬Õâ¾ÍÊÇÓ²¼þ³éÏó²ã¡£
½ÓÏÂÀ´½øÈë½ñÌìµÄÖ÷Ìâ¡£

Ê×ÏÈ˵˵ӦÓò㰲ȫÎÊÌ⣺
1.´úÂ밲ȫ
a¡¢Java²»Í¬ÓÚC/C++£¬javaÊǽâÊÍÐÔÓïÑÔ£¬´æÔÚ´úÂë±»·´±àÒëµÄÒþ»¼£»
b¡¢Ä¬ÈÏ»ìÏýÆ÷Ϊproguard£¬×îа汾Ϊ4.7£» proguard»¹¿ÉÓÃÀ´Ñ¹Ëõ¡¢ÓÅ»¯java×Ö½ÚÂ룬ɾ³ýÎÞÓõÄÀà¡¢×ֶΡ¢·½·¨¡¢ÊôÐÔ¡¢×¢Ê͵ȡ£
c¡¢ÅäÖ÷½·¨ÎªÔÚAndroid.mkÖÐÉèÖãºLOCAL_PROGUARD_FLAG_FILES
:= proguard.flags
d:packages/apps/Launcher2/proguard.flags
//ÌØ¶¨·½·¨ -keep class com.android.launcher2.Launcher { public void previousScreen(android.view.View); public void nextScreen(android.view.View); public void launchHotSeat(android.view.View); } //ÌØ¶¨À࣬¡°$¡±±íʾºóÃæµÄÀàÊÇÇ°ÃæµÄÀàµÄÄÚ²¿Àà -keep class com.android.launcher2.AllApps3D$Defines { *; } -keep class com.android.launcher2.ClippedImageView { *; } |
2¡¢½ÓÈëȨÏÞ
a¡¢È¨ÏÞÖ÷ÒªÓÃÀ´¶ÔÓ¦ÓõIJÙ×÷Ôö¼ÓÏÞÖÆ£¬·ÀÖ¹¶ñÒâÓ¦ÓýøÐзǷ¨²Ù×÷¸øÓû§Ôì³ÉÃô¸ÐÊý¾Ýй©ºÍÉ豸±»·Ç·¨¿ØÖÆ£¬·ÀÖ¹¶ñÒâÊշѵȣ»
b¡¢AndroidµÄ½ÓÈëȨÏÞ
£¨1£©NormalȨÏÞ
£¨2£©DangerousȨÏÞ
£¨3£©signatureOrSystemȨÏÞ
£¨4£©SignatureȨÏÞ
c¡¢¿ò¼Ü²ãȨÏÞ¶¨ÒåλÖÃ
£¨1£©frameworks/base/core/res/ AndroidManifest.xml
d¡¢È¨ÏÞ¿ÉÓÃÓÚÕû¸öÓ¦Óá¢Activity¡¢ServiceµÈ¡£
3¡¢´´½¨½ÓÈëȨÏÞºÍȨÏÞ×é
<permission android:name=¡°android.permission.GET_ACCOUNTS¡± android:permissionGroup=¡°android.permission-group.ACCOUNTS¡± android:protectionLevel="normal¡° android:description=¡°@string/permdesc_getAccounts¡± android:label="@string/permlab_getAccounts" />
<permission-group
android:name=¡°android.permission-group.STORAGE¡±
android:label="@string/permgrouplab_storage¡°
android:description="@string/permgroupdesc_storage"
/> |
4¡¢Ó¦ÓÃȨÏÞµÄÉèÖÃ
a¡¢¹²ÏíÓû§ID¼´¹²ÓÃÒ»¸ö½ø³Ì
£¨1£©AndroidÔ´´úÂëÊ÷Я´øµÄϵͳ֤Êé°üÀ¨¡°media¡±¡¢¡°platform¡±¡¢¡°shared¡±¡¢¡°testkey¡±µÈ£¬ÆäÖС°media¡±Ö¤ÊéÓÃÓÚ¶àýÌå¡¢ÏÂÔØ³¡¾°ÖУ»¡°platform¡±Ö¤ÊéÓÃÓÚϵͳ³¡¾°ÖУ»¡°shared¡±Ö¤ÊéÓÃÓÚÆô¶¯Æ÷¡¢µç»°²¾³¡¾°ÖУ»¡°testkey¡±Ö¤ÊéÓÃÓÚ¿ª·¢³¡¾°ÖУ¬ÕâЩ֤ÊéλÓÚbuild/target/product/securityĿ¼Ï£»Ä¿Ç°Ö§³ÖµÄ¡°sharedUserId¡±ÊôÐÔ°üÀ¨:
¡°com.android.cts.shareduid¡±
¡°com.android.cts.process.uidpid_test¡±
¡°android.uid.system¡±
¡°com.android.uid.test¡±
¡°android.uid.calendar¡±
¡°android.media¡±
¡¢¡°com.android.framework.externalsharedpermstestapp¡±
¡°android.uid.shared¡±
¡°android.uid.phone¡±µÈ¡£
³£ÓõİüÀ¨¡°android.uid.system¡±¡¢¡°android.media¡±¡¢¡°android.uid.shared¡±µÈ¡£
b¡¢ÉèÖÃÓ¦ÓÃȨÏÞ
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
5¡¢È¨ÏÞÑéÖ¤
a¡¢AndroidÌṩÁ˶à¸ö·½·¨¿ÉÓÃÓÚÑéÖ¤µ÷Ó÷½ÊÇ·ñ¾ßÓÐÏàÓ¦µÄȨÏÞ¡£
b¡¢Èç¹ûµ÷Ó÷½ÓµÓÐÏàÓ¦µÄȨÏÞ£¬ÔòȨÏÞÑéÖ¤µÄ·µ»ØÖµÎªPackageManager.
PERMISSION_GRANTED·ñÔò·µ»ØPackageManager.PERMISSION_DENIED¡£
c¡¢Ê¾Àý
private int enforceAccessPermission() { int ret = mContext.checkCallingOrSelfPermission("android.permission.BIND_WALLPAPER "); return ret; } |
ÁÄÍêÁËÓ¦ÓòãµÄÄÚÈÝ£¬ÔÙ¿´¿´Ó¦Óÿò¼Ü²ãµÄÄÚÈÝ¡£
1¡¢Êý×ÖÖ¤Êé
a¡¢AndroidµÄÊý×ÖÖ¤ÊéÊÇÃâ·ÑµÄ£¬·Öµ÷ÊÔģʽºÍ·¢²¼Ä£Ê½Á½ÖÖ£»
b¡¢Í¨¹ýÃüÁîÐкÍEclipse¿ÉÒÔÉú³É·¢²¼Ä£Ê½µÄÊý×ÖÖ¤Ê飻ÔÚÃüÁîÐз½Ê½ÏÂÀûÓÃKeytoolÀ´Éú³ÉÊý×ÖÖ¤Ê飬²¢ÀûÓÃJarsignerÀ´ÎªAPK½øÐÐÊý×ÖÇ©Ãû£»Ê¹ÓÃADT
Export Wizard½øÐÐÇ©Ãû£»
c¡¢Ö»ÓÐͬһ°üÃûÇÒ²ÉÓÃͬһÊý×ÖÖ¤ÊéµÄÓ¦Óòű»ÈÏΪÊÇͬһ¸öÓ¦Óã»
d¡¢Êý×ÖÖ¤ÊéµÄ×î´óÓÃ;ÊÇÓ¦ÓÃÉý¼¶ºÍÉèÖÃÓ¦ÓüäͨÐŵÄȨÏÞ£»
2¡¢KeytoolÉú³ÉÊý×ÖÖ¤Êé
keytool
-genkey -v -keystore android.keystore -alias miaozl-keyalg
RSA -validity 20000 |
a¡¢¡°keystore android.keystore¡±±íʾÉú³ÉµÄÖ¤ÊéΪ¡°android.keystore¡±£¬¿ÉÒÔ¼ÓÉÏ·¾¶£¨Ä¬ÈÏÔÚÓû§Ö÷Ŀ¼Ï£©£»¡°alias
miaozl¡±±íʾ֤ÊéµÄ±ðÃûÊÇ¡°miaozl¡±£»¡°keyalg RSA¡±±íʾ²ÉÓõÄRSAËã·¨£»¡°validity
20000¡±±íʾ֤ÊéµÄÓÐЧÆÚÊÇ20000Ìì¡£ÁíÍâͨ¹ýkeypass¿ÉÒÔÉèÖÃÊý×ÖÖ¤Êé˽ԿµÄÃÜÂ룬ͨ¹ýkeysize¿ÉÒÔÉèÖÃËã·¨µÄ볤£¬Ä¬ÈÏΪ1024±ÈÌØ£¬ÍƼö2048±ÈÌØ¼°¸ü³¤£¬Í¨¹ýstorepass¿ÉÒÔÉèÖÃÖ¤ÊéµÄÃÜÂë¡£
3¡¢Jarsigner½øÐÐÊý×ÖÇ©Ãû
jarsigner -verbose -keystore android.keystore demo.apk |
½ÓÏÂÀ´jarsigner»áÌáʾÊäÈëÃÜÔ¿¿âµÄ¿ÚÁîºÍÖ¤Êé±ðÃûµÄ¿ÚÁȫ²¿ÊäÈëºó£¬¼´¿ÉÍê³ÉÇ©Ãû
4¡¢²é¿´Êý×ÖÖ¤ÊéÇ©Ãû
#jarsigner -verify -verbose -certs demo.apk |
ÔÙ¿´¿´ÍøÂ簲ȫÎÊÌ⣺
1¡¢¼ÓÃÜËã·¨£¨Ãô¸ÐÊý¾Ý£©
a¡¢DES£¨¶Ô³Æ£©¡¢3DES£¨¶Ô³Æ£©¡¢RSA£¨·Ç¶Ô³Æ£©¡¢MD5¡¢RC2/RC4£¨¶Ô³Æ£©¡¢IDEA¡¢AES¡¢BLOWFISHµÈ
2¡¢Web·þÎñ£¨HTTP²ã£©
a¡¢ÈýÖÖÊÖ¶ÎWS-Security¡¢SSL¡¢Êý×ÖÇ©Ãû¡£Ä¿Ç°ksoap²»Ö§³ÖWS-Security
3¡¢TCP²ã
a¡¢SSL¡¢TSL
4¡¢Êý¾ÝÁ´Â·²ã
a¡¢WAPI
È»ºó¼°Ê±Êý¾Ý¿âµÄ°²È«ÎÊÌ⣺
1¡¢Android²ÉÓõÄSQLiteĿǰ²ÉÓÃÃ÷ÎÄ´æ´¢Êý¾Ý£»°²È«Éæ¼°¼ÓÃÜ¡¢¶Áд¡¢ËÑË÷µÈ¡£
2.¼ÓÃÜ·½·¨
a¡¢¼ÓÃÜËã·¨£¨ÊµÏÖ·½·¨²Î¿¼ÍøÉÏ£©
b¡¢È¨ÏÞÉèÖÃ
3¡¢È¨ÏÞÉèÖÃ
android:permission android:readPermission android:writePermission |
4¡¢¶ÁдȨÏÞʾÀý
<provider android:name=".provider.AttachmentProvider" android:authorities="com.android.email.attachmentprovider" android:multiprocess="true" android:grantUriPermissions="true¡° android:readPermission="com.android.email.permission.READ_ATTACHMENT"/> |
5¡¢Êý¾Ý¿â°²È«¨CËÑË÷
<provider android:name="SuggestionsProvider" android:readPermission="android.permission.READ_SMS" android:authorities="com.android.mms.SuggestionsProvider" >
<path-permission
android:pathPrefix="/search_suggest_query"
android:readPermission="android.permission.GLOBAL_SEARCH"
/>
<path-permission
android:pathPrefix="/search_suggest_shortcut"
android:readPermission="android.permission.GLOBAL_SEARCH"
/>
</provider> |
ÔÙ¿´¿´ÎÒÃǵÄÐéÄâ»ú£º
1¡¢Í¨³£Çé¿öÏ£¬Ã¿¸öÓ¦ÓþùÓµÓÐÒ»¸öÐéÄâ»ú¡£
2¡¢Í¨³£Çé¿öÏ£¬Ó¦ÓüäÎÞ·¨Ï໥·ÃÎÊ˽ÓÐÊý¾Ý¡£
3¡¢·ÃÎÊÊý¾ÝµÄ·½·¨Îª£º
a¡¢Îļþ·½Ê½
b¡¢Êý¾Ý¿âȨÏÞ¿ª·Å
c¡¢ÅäÖÃÎļþ¿ª·Å
d¡¢IntentͨÐÅ
»¹ÓÐ×îºóÒ»¸öÄÚÈÝ£º
Îļþ·ÃÎÊ¿ØÖÆ
1¡¢AndroidÔÚȨÏÞ¹ÜÀíÉÏÓ¦ÓÃÁËLinuxµÄACL£¨Access Control
List£©È¨ÏÞ»úÖÆ£¬¶ø·ÇÔçÆÚUnix²ÉÓõÄUGOȨÏÞ»úÖÆ¡£
2¡¢·ÖÇø²ãÃæ
a¡¢ÔÚϵͳÔËÐÐʱ£¬×îÍâ²ã°²È«±£»¤ÊÇÓÉLinuxϵͳÌṩµÄ£¬ÆäÖÐsystem.imgËùÔڵķÖÇøÊÇÖ»¶ÁµÄ£¬²»ÔÊÐíÓû§Ð´È룬¶ødata.imgËùÔڵķÖÇøÊǿɶÁдµÄ£¬ÓÃÓÚ´æ·ÅÓû§Êý¾Ý¡£
·ÖÇøµÄÓû§È¨ÏÞÔÚinit.rcÖж¨Òå¡£
3¡¢µ¥¶ÀÎļþ
a¡¢µ¥¶ÀÎļþ·ÃÎÊȨÏÞ¿ØÖÆ·ÖȺ×é¡¢Óû§¡¢È¨ÏÞ¡£
b¡¢È¨Ï޷ֿɶÁ¡¢¿Éд¡¢¿ÉÖ´ÐС£
c¡¢ÃüÁî:chown\chgrp\chmod¡£
ÒÔÉϾÍÊÇÎÄÕµÄÈ«²¿ÄÚÈÝ£¬ÕâÊÇ´Ó´ó·¶Î§µÄ½Ç¶ÈÀ´¿´£¬ÔÚÒÔºóµÄÎÄÕÂÖУ¬ÎÒ»áͨ¹ý´úÂëÀ´¾ßÌå³ÊÏÖ¡£Ð»Ð»´ó¼ÒµÄÔĶÁ¡£
|