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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
APK¶¯Ì¬¼ÓÔØ¿ò¼Ü£¨DL£©½âÎö
 
×÷Õß singwhatiwanna £¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-10-23
  2769  次浏览      28
 

ǰÑÔ

ºÃ¾ÃûÓз¢²¼ÐµÄÎÄÕ£¬Õâ´Î´òËã·¢±íÒ»ÏÂÎÒÕ⼸¸öÔµÄÒ»¸öºËÐÄÑо¿³É¹û£ºAPK¶¯Ì¬¼ÓÔØ¿ò¼Ü£¨DL£©¡£Õâ¶Îʱ¼äÎÒÖÂÁ¦ÓÚgithubµÄ¿ªÔ´¹±Ï×£¬¿ªÔ´ÁË2¸ö±È½ÏÓÐÓÃÇÒÓÐÒâÒåµÄÏîÄ¿£¬Ò»¸öÊÇPinnedHeaderExpandableListView£¬ÁíÒ»¸öÊÇAPK¶¯Ì¬¼ÓÔØ¿ò¼Ü¡£¾ßÌå¿ÉÒԲμûÎÒµÄgithub£ºhttps://github.com/singwhatiwanna

±¾´ÎÒª½éÉܵÄÊÇAPK¶¯Ì¬¼ÓÔØ¿ò¼Ü£¨DL£©£¬Õâ¸öÏîÄ¿³ýÁËÎÒÒÔÍ⣬»¹ÓÐÁ½¸ö¹²Í¬¿ª·¢ÕߣºÌïÐ¥£¨Ê±Ö®É³£©,ËÎ˼Óî¡£

ΪÁ˸üºÃµØÀí½â±¾ÎÄ£¬ÄãÐèÒªÊ×ÏÈÔĶÁAndroid apk¶¯Ì¬¼ÓÔØ»úÖÆµÄÑо¿ÕâһϵÁÐÎÄÕ£¬·Ö±ðΪ£º

Android apk¶¯Ì¬¼ÓÔØ»úÖÆµÄÑо¿

Android apk¶¯Ì¬¼ÓÔØ»úÖÆµÄÑо¿£¨¶þ£©£º×ÊÔ´¼ÓÔØºÍactivityÉúÃüÖÜÆÚ¹ÜÀí

ÁíÍ⣬Õâ¸ö¿ªÔ´ÏîÄ¿ÎÒÆðÁ˸öÃû×Ö£¬½Ð×öDL¡£±¾ÎÄÖеÄDL¾ùÖ¸APK¶¯Ì¬¼ÓÔØ¿ò¼Ü¡£

ÔËÐÐЧ¹ûͼ:

 

ÒâÒå

ÕâÀï˵˵Õâ¸ö¿ªÔ´ÏîÄ¿µÄÒâÒå¡£Ê×ÏÈҪ˵µÄÊǶ¯Ì¬¼ÓÔØ¼¼Êõ£¨»òÕß˵²å¼þ»¯£©ÔÚ¼¼ÊõÇý¶¯Ð͵Ĺ«Ë¾ÖаçÑÝÕâÏàµ±ÖØÒªµÄ½ÇÉ«£¬µ±ÏîĿԽÀ´Ô½ÅÓ´óµÄʱºò£¬ÐèҪͨ¹ý²å¼þ»¯À´¼õÇáÓ¦ÓõÄÄÚ´æºÍcpuÕ¼Ó㬻¹¿ÉÒÔʵÏÖÈȲå°Î£¬¼´ÔÚ²»·¢²¼Ð°汾µÄÇé¿öϸüÐÂijЩģ¿é¡£

ÎÒ¼¸¸öÔÂǰ¿ªÊ¼½øÐÐÕâÏî¼¼ÊõµÄÑо¿£¬µ±Ê±²éѯÁ˺ܶà×ÊÁÏ£¬Ã»ÓÐÕÒµ½ºÜºÃµÄ¿ªÔ´¡£Ä¿Ç°ÌÔ±¦¡¢Î¢Ðŵȶ¼ÓгÉÊìµÄ¶¯Ì¬¼ÓÔØ¿ò¼Ü£¬°üÀ¨apkplug£¬µ«ÊÇËüÃǶ¼ÊDz»¿ªÔ´µÄ¡£»¹ÓÐgithubÉÏÓÐÒ»¸ö¿ªÔ´ÏîÄ¿AndroidDynamicLoader£¬Æä˼ÏëÊÇͨ¹ýFragment ÒÔ¼° schemaµÄ·½Ê½ÊµÏ°µÄ£¬ÕâÊÇÒ»ÖÖ¿ÉÐеļ¼Êõ·½°¸£¬µ«ÊÇ»¹ÓÐÏÞÖÆÌ«¶à£¬ÕâÒâζÕâÄãµÄactivity±ØÐëͨ¹ýFragmentȥʵÏÖ£¬ÕâÔÚactivityÌø×ªºÍÁé»îÐÔÉÏÓÐÒ»¶¨µÄ²»±ã£¬ÔÚʵ¼ÊµÄʹÓÃÖлáÓÐһЩºÜÆæ¹ÖµÄbug²»ºÃ½â¾ö£¬×ÜÖ®£¬Õ⻹ÊÇÒ»ÖÖ²»ÊÇÌØ±ðÍ걸µÄ¶¯Ì¬¼ÓÔØ¼¼Êõ¡£È»ºó£¬ÎÒ·¢ÏÖ£¬Ä¿Ç°Õë¶Ô¶¯Ì¬¼ÓÔØÕâÒ»¿é³ÉÊìµÄ¿ªÔ´»ù±¾»¹Êǿհ׵쬲»¹ÜÊǹúÄÚ»¹ÊǹúÍâ¡£¶øÔÚ¹«Ë¾ÄÚ²¿£¬¶¯Ì¬¼ÓÔØ×÷ΪһÏîºËÐļ¼Êõ£¬Ò²²»¿ÉÄÜÊdzõ¼¶¿ª·¢ÈËÔ±ËùÄܹ»½Ó´¥µ½µÄ£¬ÓÚÊÇ£¬ÎÒ¾ö¶¨×öÒ»¸ö³ÉÊìµãµÄ¿ªÔ´£¬ÆÚ´ýÄÜÌî²¹ÕâÒ»¿é¿Õ°×¡£

DL¹¦ÄܽéÉÜ

DLÖ§³ÖºÜ¶àÌØÐÔ£¬¶øÕâÐ©ÌØÐÔʹµÃ²å¼þµÄ¿ª·¢¹ý³Ì±äµÃ͸Ã÷¡¢¸ßЧ¡£

1. pluginÎÞÐè°²×°¼´¿ÉÓÉËÞÖ÷µ÷Æð¡£

2. Ö§³ÖÓÃR·ÃÎÊplugin×ÊÔ´

3. pluginÖ§³ÖActivityºÍFragmentActivity£¨Î´À´»¹½«Ö§³ÖÆäËû×é¼þ£©

4. »ù±¾ÎÞ·´Éäµ÷ÓÃ

5. ²å¼þ°²×°ºóÈԿɶÀÁ¢ÔËÐдӶø±ãÓÚµ÷ÊÔ

6. Ö§³Ö3ÖÖplugin¶ÔhostµÄµ÷ÓÃģʽ£º

£¨1£©ÎÞµ÷Ó㨵«ÈÔÈ»¿ÉÒÔÓ÷´Éäµ÷Óã©¡£

£¨2£©²¿·Öµ÷Óã¬host¿É¹«¿ª²¿·Ö½Ó¿Ú¹©pluginµ÷ÓᣠÕâǰÁ½ÖÖģʽÊÊÓÃÓÚplugin¿ª·¢ÕßÎÞ·¨»ñµÃhost´úÂëµÄÇé¿ö¡£

£¨3£©ÍêÈ«µ÷Óã¬plugin¿ÉÒÔÍêÈ«µ÷ÓÃhostÄÚÈÝ¡£ÕâÖÖģʽÊÊÓÃÓÚplugin¿ª·¢ÕßÄÜ»ñµÃhost´úÂëµÄÇé¿ö¡£

7. Ö»ÐèÒýÈëDLµÄÒ»¸öjar°ü¼´¿É¸ßЧ¿ª·¢²å¼þ£¬DLµÄ¹¤×÷¹ý³Ì¶Ô¿ª·¢ÕßÍêȫ͸Ã÷

8. Ö§³Öandroid2.x°æ±¾

¼Ü¹¹½âÎö

Èç¹û´ó¼ÒÔĶÁ¹ý±¾ÎÄÍ·²¿Ìáµ½µÄÁ½ÆªÎÄÕ£¬ÄÇô¶ÔDLµÄ¼Ü¹¹Ó¦¸ÃÓдóÖµÄÁ˽⣬±¾ÎľͲ»ÔÙ´ÓÍ·¿ªÊ¼½éÉÜÁË£¬¶øÊÇ´ÓÈçϱä¸üµÄ¼¸·½Ãæ½øÐнâÎö£¬ÕâЩÓÅ»¯Ê¹µÃDLµÄ¹¦ÄܺÍ֮ǰ±ÈÆðÀ´¸ü¼ÓÇ¿´ó¸ü¼ÓÒ×ÓÃʹÓÃÒ×ÓÚÀ©Õ¹¡£

1. DL¶ÔactivityÉúÃüÖÜÆÚ¹ÜÀíµÄ¸Ä½ø

2. DL¶ÔÀà¼ÓÔØÆ÷µÄÖ§³Ö£¨DLClassLoader£©

3. DL¶ÔËÞÖ÷£¨host£©ºÍ²å¼þ£¨plugin£©Í¨ÐŵÄÖ§³Ö

4. DL¶Ô²å¼þ¶ÀÁ¢ÔËÐеÄÖ§³Ö

5. DL¶ÔactivityËæÒâÌø×ªµÄÖ§³Ö£¨DLIntent£©

6. DL¶Ô²å¼þ¹ÜÀíµÄÖ§³Ö£¨DLPluginManager£©

ÆäÖÐ5ºÍ6ÊôÓÚ¼ÓÇ¿¹¦ÄÜ£¬Ä¿Ç°ÕýÔÚdev·ÖÖ§ÉϽøÐпª·¢£¨±¾ÎÄÔݲ»½éÉÜ£©£¬ÆäËû¹¦ÄܾùÔÚÎȶ¨°æ·ÖÖ§masterÉÏ¡£

DL¶ÔactivityÉúÃüÖÜÆÚ¹ÜÀíµÄ¸Ä½ø

´ó¼ÒÖªµÀ£¬DL×ʼµÄʱºò²ÉÓ÷´ÉäÈ¥¹ÜÀíactivityµÄÉúÃüÖÜÆÚ£¬ÕâÑù´æÔÚһЩ²»±ã£¬±ÈÈç·´Éä´úÂëдÆðÀ´¸´ÔÓ£¬²¢ÇÒ¹ý¶àʹÓ÷´ÉäÓÐÒ»¶¨µÄÐÔÄÜ¿ªÏú¡£Õë¶ÔÕâ¸öÎÊÌ⣬ÎÒÃDzÉÓÃÁ˽ӿڻúÖÆ£¬½«activityµÄ´ó²¿·ÖÉúÃüÖÜÆÚ·½·¨ÌáÈ¡³öÀ´×÷Ϊһ¸ö½Ó¿Ú£¨DLPlugin£©£¬È»ºóͨ¹ý´úÀíactivity£¨DLProxyActivity£©È¥µ÷Óòå¼þactivityʵÏÖµÄÉúÃüÖÜÆÚ·½·¨£¬ÕâÑù¾ÍÍê³ÉÁ˲å¼þactivityµÄÉúÃüÖÜÆÚ¹ÜÀí£¬²¢ÇÒûÓвÉÓ÷´É䣬µ±ÎÒÃÇÏëÔö¼ÓÒ»¸öеÄÉúÃüÖÜÆÚ·½·¨µÄʱºò£¬Ö»ÐèÒªÔÚ½Ó¿ÚÖÐÉùÃ÷Ò»ÏÂͬʱÔÚ´úÀíactivityÖÐʵÏÖһϼ´¿É£¬ÏÂÃæ¿´Ò»Ï´úÂ룺

½Ó¿ÚDLPlugin

public interface DLPlugin {  

public void onStart();
public void onRestart();
public void onActivityResult(int requestCode, int resultCode, Intent data);
public void onResume();
public void onPause();
public void onStop();
public void onDestroy();
public void onCreate(Bundle savedInstanceState);
public void setProxy(Activity proxyActivity, String dexPath);
public void onSaveInstanceState(Bundle outState);
public void onNewIntent(Intent intent);
public void onRestoreInstanceState(Bundle savedInstanceState);
public boolean onTouchEvent(MotionEvent event);
public boolean onKeyUp(int keyCode, KeyEvent event);
public void onWindowAttributesChanged(LayoutParams params);
public void onWindowFocusChanged(boolean hasFocus);
public void onBackPressed();
}

ÔÚ´úÀíÀàDLProxyActivityÖеÄʵÏÖ

@Override  
protected void onStart() {
mRemoteActivity.onStart();
super.onStart();
}

@Override
protected void onRestart() {
mRemoteActivity.onRestart();
super.onRestart();
}

@Override
protected void onResume() {
mRemoteActivity.onResume();
super.onResume();
}

@Override
protected void onPause() {
mRemoteActivity.onPause();
super.onPause();
}

@Override
protected void onStop() {
mRemoteActivity.onStop();
super.onStop();
}
...

˵Ã÷£ºÍ¨¹ýÉÏÊö´úÂëÓ¦¸Ã²»ÄÑÀí½âDL¶ÔactivityÉúÃüÖÜÆÚµÄ¹ÜÀí£¬ÆäÖÐmRemoteActivity¾ÍÊÇDLPluginµÄʵÏÖ¡£

DL¶ÔÀà¼ÓÔØÆ÷µÄÖ§³Ö

ΪÁ˸üºÃµØ¶Ô¶à²å¼þ½øÐÐÖ§³Ö£¬ÎÒÃÇÌṩÁËÒ»¸öDLClassoaderÀ࣬רÃÅÈ¥¹ÜÀí¸÷¸ö²å¼þµÄDexClassoader£¬ÕâÑù£¬Í¬Ò»¸ö²å¼þ¾Í¿ÉÒÔ²ÉÓÃͬһ¸öClassLoaderÈ¥¼ÓÔØÀà´Ó¶ø±ÜÃâ¶à¸öclassloader¼ÓÔØÍ¬Ò»¸öÀàʱËùÒý·¢µÄÀàÐÍת»»´íÎó¡£

public class DLClassLoader extends DexClassLoader {  
private static final String TAG = "DLClassLoader";

private static final HashMap<String, DLClassLoader> mPluginClassLoaders = new HashMap<String, DLClassLoader>();

protected DLClassLoader(String dexPath, String optimizedDirectory, String libraryPath, ClassLoader parent) {
super(dexPath, optimizedDirectory, libraryPath, parent);
}

/**
* return a available classloader which belongs to different apk
*/
public static DLClassLoader getClassLoader(String dexPath, Context context, ClassLoader parentLoader) {
DLClassLoader dLClassLoader = mPluginClassLoaders.get(dexPath);
if (dLClassLoader != null)
return dLClassLoader;

File dexOutputDir = context.getDir("dex", Context.MODE_PRIVATE);
final String dexOutputPath = dexOutputDir.getAbsolutePath();
dLClassLoader = new DLClassLoader(dexPath, dexOutputPath, null, parentLoader);
mPluginClassLoaders.put(dexPath, dLClassLoader);

return dLClassLoader;
}
}

DL¶ÔËÞÖ÷£¨host£©ºÍ²å¼þ£¨plugin£©Í¨ÐŵÄÖ§³Ö

ÕâÒ»µãºÜÖØÒª£¬ÒòΪÍùÍùËÞÖ÷ÐèÒªºÍ²å¼þ½øÐи÷ÖÖͨÐÅ£¬Òò´ËDL¶ÔËÞÖ÷ºÍ²å¼þµÄͨÐÅ×öÁ˺ܺõÄÖ§³Ö£¬Ä¿Ç°×ܹ²ÓÐ3ÖÐģʽ£¬ÈçÏÂͼËùʾ£º

ÏÂÃæ·Ö±ð½éÉÜÉÏÊöÈýÖÖģʽ£¬Õë¶ÔÉÏÊöÈýÖÖģʽ£¬ÎÒÃÇ·Ö±ðÌṩÁË3×éÀý×Ó£¬ÆäÖУº

1. depend_on_host£º²å¼þÍêÈ«ÒÀÀµËÞÖ÷µÄģʽ£¬ÊʺÏÓÚÄܹ»Äܵ½ËÞÖ÷µÄÔ´´úÂëµÄÇé¿ö

ÆäÖÐhostÖ¸ËÞÖ÷¹¤³Ì£¬pluginÖ¸²å¼þ¹¤³Ì

2. depend_on_interface£º²å¼þ²¿·ÖÒÀÀµËÞÖ÷µÄģʽ£¬»òÕß˵²å¼þÒÀÀµËÞÖ÷ÌṩµÄ½Ó¿Ú£¬ÊʺÏÄܹ»Äõ½ËÞÖ÷µÄ½Ó¿ÚµÄÇé¿ö

ÆäÖÐhostÖ¸ËÞÖ÷¹¤³Ì£¬pluginÖ¸²å¼þ¹¤³Ì£¬commonÖ¸½Ó¿Ú¹¤³Ì

3. main£º²å¼þ²»ÒÀÀµËÞÖ÷µÄģʽ£¬ÕâÊÇDLÍÆ¼öµÄģʽ

ÆäÖÐhostÖ¸ËÞÖ÷¹¤³Ì£¬pluginÖ¸²å¼þ¹¤³Ì

ģʽ1£ºÕâÊÇDLÍÆ¼öµÄģʽ£¬¶ÔÓ¦µÄ¹¤³ÌĿ¼Ϊmain¡£ÔÚÕâÖÖģʽÏ£¬ËÞÖ÷ºÍ²å¼þ²»ÐèҪͨÐÅ£¬Á½ÕßÊǶÀÁ¢¿ª·¢µÄ£¬ËÞÖ÷ÒýÓÃDLµÄjar°ü£¨dl-lib.jar£©£¬²å¼þÒ²ÐèÒªÒýÓÃDLµÄjar°ü£¬µ«ÊDz»ÄÜ·ÅÈëµ½²å¼þ¹¤³ÌµÄlibsĿ¼ÏÂÃæ£¬»»¾ä»°Ëµ£¬¾ÍÊDzå¼þ±àÒëµÄʱºòÒÀÀµjar°üµ«ÊÇ´ò°ü³ÉapkµÄʱºò²»Òª°Ñjar°ü´ò½øÈ¥£¬ÕâÊÇÒòΪ£¬dl-lib.jarÒѾ­ÔÚËÞÖ÷¹¤³ÌÖдæÔÚÁË£¬Èç¹û²å¼þÖÐÒ²ÓÐÕâ¸öjar°ü£¬¾Í»á·¢ÉúÀàÁ´½Ó´íÎó£¬Ô­ÒòºÜ¼òµ¥£¬ÄÚ´æÖÐÓÐÁ½·ÝÒ»ÑùµÄÀà£¬ÖØ¸´ÁË¡£ÖÁÓÚsupport-v4Ò²ÊÇͬÑùµÄµÀÀí¡£¶ÔÓÚeclipseºÜ¼òµ¥£¬Ö»ÐèÒªÔÚ²å¼þ¹¤³ÌÖд´½¨Ò»¸öĿ¼£¬±ÈÈçexternal-jars£¬È»ºó°Ñdl-lib.jarºÍsupport-v4.jar·Å½øÈ¥£¬Í¬Ê±ÔÚ.classpathÖÐ×·¼ÓÈçÏÂÁ½¾ä¼´¿É£º

<classpathentry kind="lib" path="external-jars/dl-lib.jar"/>
<classpathentry kind="lib" path="external-jars/android-support-v4.jar"/>

ÕâÑù£¬±àÒëµÄʱºò¾ÍÄܹ»Õý³£½øÐУ¬µ«ÊÇ´ò°üµÄʱºò£¬¾Í²»»á°ÑÉÏÃæÁ½¸öjar°ü´òÈëµ½²å¼þapkÖС£

ÖÁÓÚant»·¾³ºÍgradle£¬½â¾ö°ì·¨²»Ò»Ñù£¬¾ßÌå·½·¨ºóÃæÔÙ²¹ÉÏ£¬µ«ÊÇ˼Ïë¶¼ÊÇÒ»ÑùµÄ£¬¼´£º²å¼þapkÖв»Òª´òÈëÉÏÊö2¸öjar°ü¡£

ģʽ2£º²å¼þ²¿·ÖÒÀÀµËÞÖ÷µÄģʽ£¬»òÕß˵²å¼þÒÀÀµËÞÖ÷ÌṩµÄ½Ó¿Ú£¬ÊʺÏÄܹ»Äõ½ËÞÖ÷µÄ½Ó¿ÚµÄÇé¿ö¡£ÔÚÕâÖÖģʽÏ£¬ËÞÖ÷·Å³öһЩ½Ó¿Ú²¢ÊµÏÖһЩ½Ó¿Ú£¬È»ºó¸ø²å¼þµ÷Óã¬ÕâÑù²å¼þ¾Í¿ÉÒÔ·ÃÎÊËÞÖ÷µÄһЩ·þÎñµÈ

ģʽ3£º²å¼þÍêÈ«ÒÀÀµËÞÖ÷µÄģʽ£¬ÊʺÏÓÚÄܹ»Äܵ½ËÞÖ÷µÄÔ´´úÂëµÄÇé¿ö¡£ÕâÖÖģʽһ°ã¶àÓÃÔÚ¹«Ë¾ÄÚ²¿£¬²å¼þ¿ÉÒÔ·ÃÎÊËÞÖ÷µÄËùÓдúÂ룬µ«ÊÇ£¬ÕâÑù²å¼þºÍËÞÖ÷µÄñîºÏ±È½Ï¸ß£¬ËÞÖ÷Ò»¶¯£¬²å¼þ¾Í±ØÐ붯£¬±È½ÏÂé·³

¾ßÌå²ÉÓÃÄÄÖÖ·½Ê½£¬ÐèÒª½áºÏʵ¼ÊÇé¿öÀ´Ñ¡Ôñ£¬Ò»°ãÀ´Ëµ£¬Èç¹ûÊÇËÞÖ÷ºÍ²å¼þ²»ÊÇͬһ¸ö¹«Ë¾¿ª·¢£¬½¨ÒéÑ¡Ôñģʽ1ºÍģʽ2£»Èç¹ûËÞÖ÷ºÍ²å¼þ¶¼ÔÚͬһ¸ö¹«Ë¾¿ª·¢£¬ÄÇôѡÔñÄĸö¶¼¿ÉÒÔ¡£´ÓDLµÄʵÏÖ³ö·¢£¬ÎÒÃÇÍÆ¼ö²ÉÓÃģʽ1£¬ÕæµÄÐèҪͨÐŵϰ²ÉÓÃģʽ2£¬¾¡Á¿²»Òª²ÉÓÃģʽ3.

DL¶Ô²å¼þ¶ÀÁ¢ÔËÐеÄÖ§³Ö

ΪÁ˱ãÓÚµ÷ÊÔ£¬²ÉÓÃDLËù¿ª·¢µÄ²å¼þ¶¼¿ÉÒÔ¶ÀÁ¢ÔËÐУ¬µ±È»£¬ÕâÒª·ÖÇé¿öÀ´Ëµ£º

¶ÔÓÚģʽ1£¬Èç¹û²å¼þÏë¶ÀÁ¢ÔËÐУ¬Ö»ÐèÒª°Ñexternal-jarsϵÄjar°ü¿½±´Ò»·Ýµ½²å¼þµÄlibsĿ¼Ï¼´¿É

¶ÔÓÚģʽ2£¬Ö»ÐèÒªÌṩһ¸öËÞÖ÷½Ó¿ÚµÄĬÈÏʵÏÖ¼´¿É

¶ÔÓÚģʽ3£¬Ö»ÐèÒªapk´ò°üʱ°ÑËùÒýÓõÄËÞÖ÷´úÂë´ò°ü½øÈ¥¼´¿É£¬¾ßÌ巽ʽ¿ÉÒԲο´sample/depend_on_hostĿ¼¡£

ÔÚ¿ª·¢¹ý³ÌÖУ¬Ó¦¸ÃÏÈ¿ªÆô²å¼þµÄ¶ÀÁ¢ÔËÐй¦ÄÜÒÔ±ãÓÚµ÷ÊÔ£¬µÈ¹¦ÄÜ¿ª·¢Íê±ÏºóÔÙ½«Æä²å¼þ»¯¡£

DLIntentºÍDLPluginManager

ÕâÁ½Ïî¶¼ÊôÓÚ¼ÓÇ¿¹¦ÄÜ£¬Ä¿Ç°ÕýÔÚdev·ÖÖ§½øÐÐcode review£¬´ó¼Ò¸ÐÐËȤ¿ÉÒÔÈ¥dev·ÖÖ§Éϲ鿴£¬µÈÑé֤ͨ¹ý¼´mergeµ½Îȶ¨°æmaster·ÖÖ§¡£

DLIntent£ºÍ¨¹ýDLIntentÀ´Íê³ÉactivityµÄÎÞÔ¼Êøµ÷Æð

DLPluginManager£º¶ÔËÞÖ÷µÄËùÓвå¼þÌṩ×ۺϹÜÀí¹¦ÄÜ¡£

¿ª·¢¹æ·¶

ĿǰDLÒѾ­´ïµ½Á˵ÚÒ»¸öÎȶ¨°æ£¬¾­¹ý´óÁ¿»úÐ͵ÄÑéÖ¤£¬Ä¿Ç°µÃ³öµÄ½áÂÛÊÇDLÊǿɿ¿µÄ£¨¼æÈݵ½android2.x£©£¬¿ÉÒÔÓÃÔÚʵ¼ÊµÄÓ¦Óÿª·¢ÖС£µ«ÊÇ£¬ÎÒÃÇÖªµÀ£¬¶¯Ì¬¼ÓÔØÊÇÒ»¸ö¼¼Êõ±ÚÀÝ£¬ÆäºÜÄÑ´ïµ½Ò»ÖÖÍêÃÀµÄ״̬£¬±Ï¾¹£¬ÈÃÒ»¸öapk²»°²×°ÅÜÆðÀ´£¬ÕâÊǶàô²»¿É˼ÒéµÄÊÂÇé¡£Òò´Ë£¬Ï£Íû´ó¼Ò±çÖ¤µØÈ¥¿´Õâ¸öÎÊÌ⣬ÏÂÃæÁгöÎÒÃÇĿǰ»¹²»Ö§³ÖµÄ¹¦ÄÜ£¬»òÕß˵ÊÇÒ»ÖÖ¿ª·¢¹æ·¶°É£¬Ï£Íû´ó¼ÒÔÚ¿ª·¢¹ý³ÌÖÐÈ¥×ñÊØÕâ¸ö¹æ·¶£¬ÕâÑù²ÅÄÜÈòå¼þÎȶ¨µØÅÜÆðÀ´¡£

DL 1.0¿ª·¢¹æ·¶£º

1. Ŀǰ²»Ö§³Öservice

2. Ŀǰֻ֧³Ö¶¯Ì¬×¢²á¹ã²¥

3. Ŀǰ֧³ÖActivityºÍFragmentActivity£¬ÕâÒ²Êdz£ÓõÄactivity

4. Ŀǰ²»Ö§³Ö²å¼þÖеÄassets

5. µ÷ÓÃContextµÄʱºò£¬ÇëÊʵ±Ê¹ÓÃthat£¬´ó²¿·Ö³£ÓÃapiÊDz»ÐèÒªÓÃthatµÄ£¬µ«ÊÇһЩ²»³£ÓÃapi»¹ÊÇÐèÒªÓÃthatÀ´·ÃÎÊ¡£thatÊÇapkÖÐactivityµÄ»ùÀàBaseActivityϵÁÐÖеÄÒ»¸ö³ÉÔ±£¬ËüÔÚapk°²×°ÔËÐеÄʱºòÖ¸Ïòthis£¬¶øÔÚδ°²×°µÄʱºòÖ¸ÏòËÞÖ÷³ÌÐòÖеĴúÀíactivity£¬ÓÉÓÚthatµÄ¶¯Ì¬·ÖÅäÌØÐÔ£¬Í¨¹ýthatÈ¥µ÷ÓÃactivityµÄ³ÉÔ±·½·¨£¬ÔÚapk°²×°ÒÔºóÈÔÈ»¿ÉÒÔÕý³£ÔËÐС£

6. É÷ÖØÊ¹ÓÃthis£¬ÒòΪthisÖ¸ÏòµÄÊǵ±Ç°¶ÔÏ󣬼´apkÖеÄactivity£¬µ«ÊÇÓÉÓÚactivityÒѾ­²»Êdz£¹æÒâÒåÉϵÄactivity£¬ËùÒÔthisÊÇûÓÐÒâÒåµÄ£¬µ«ÊÇ£¬µ±this±íʾµÄ²»ÊÇContext¶ÔÏóµÄʱºò³ýÍ⣬±ÈÈçthis±íʾһ¸öÓÉactivityʵÏֵĽӿڡ£

Ï£ÍûÄܹ»¸ø´ó¼Ò´øÀ´Ò»Ð©°ïÖú£¬Ï£Íû´ó¼Ò¶à¶àÖ§³Ö£¡

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

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶Ë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ÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ