├── .gitignore ├── ActivityDeveloper ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ └── values │ │ └── strings.xml └── src │ └── com │ └── dianping │ └── example │ └── activity │ └── SampleActivity.java ├── ActivityLoader ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── assets │ └── apks │ │ ├── ActivityDeveloper_1.apk │ │ └── ActivityDeveloper_2.apk ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ └── values │ │ └── strings.xml └── src │ └── com │ └── dianping │ └── example │ ├── activity │ └── SampleActivity.java │ └── activityloader │ ├── ActivityLoader.java │ ├── MyApplication.java │ └── Smith.java ├── FragmentDeveloper ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ ├── drawable │ │ ├── bucket_icon_icloud.png │ │ └── ic_launcher.png │ ├── layout │ │ └── sample_fragment.xml │ └── values │ │ └── strings.xml └── src │ └── com │ └── dianping │ └── example │ ├── fragment │ ├── DatabaseHelper.java │ └── SampleFragment.java │ └── fragmentdeveloper │ └── FragmentDeveloper.java ├── FragmentLoader ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── assets │ └── apks │ │ ├── FragmentDeveloper_1.apk │ │ ├── FragmentDeveloper_2.apk │ │ ├── com.dianping.example.fragmentdeveloper.FragmentDeveloper.apk │ │ ├── test.apk │ │ └── test2.apk ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ └── values │ │ └── strings.xml └── src │ └── com │ └── dianping │ └── example │ └── fragmentloader │ ├── FragmentLoader.java │ ├── ListApkFragment.java │ └── MyApplication.java ├── MIT-LICENSE.txt ├── README.md ├── plframework ├── .classpath ├── .project ├── AndroidManifest.xml ├── assets │ └── apks │ │ └── pluginActivity.apk ├── ic_launcher-web.png ├── libs │ └── android-support-v4.jar ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ ├── ic_launcher.png │ │ └── othercontact_icon.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ ├── drawable-xxhdpi │ │ └── ic_launcher.png │ ├── layout │ │ ├── activity_main.xml │ │ └── msg_item.xml │ ├── menu │ │ └── main.xml │ ├── values-sw600dp │ │ └── dimens.xml │ ├── values-sw720dp-land │ │ └── dimens.xml │ ├── values-v11 │ │ └── styles.xml │ ├── values-v14 │ │ └── styles.xml │ └── values │ │ ├── color.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml └── src │ └── com │ └── example │ └── plframework │ ├── Config.java │ ├── ExtPoint │ ├── ExtPointInvocationHandler.java │ └── MessageExtPointInterace.java │ ├── MainActivity.java │ ├── MyApplication.java │ ├── Smith.java │ └── stub │ ├── SampleActivity.java │ └── stubActivity.java └── pluginActivity ├── .classpath ├── .project ├── AndroidManifest.xml ├── ic_launcher-web.png ├── libs └── android-support-v4.jar ├── proguard-project.txt ├── project.properties ├── res ├── drawable-hdpi │ └── ic_launcher.png ├── drawable-mdpi │ └── ic_launcher.png ├── drawable-xhdpi │ └── ic_launcher.png ├── drawable-xxhdpi │ └── ic_launcher.png ├── drawable │ └── ios.png ├── layout │ └── activity_main.xml ├── menu │ └── main.xml ├── values-sw600dp │ └── dimens.xml ├── values-sw720dp-land │ └── dimens.xml ├── values-v11 │ └── styles.xml ├── values-v14 │ └── styles.xml └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── src └── com └── example └── plframework ├── ExtPoint └── MessageExtPointInterace.java └── stub ├── BaseStubActivity.java ├── Config.java ├── SampleActivity.java └── stubActivity.java /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin/ 3 | gen/ 4 | -------------------------------------------------------------------------------- /ActivityDeveloper/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ActivityDeveloper/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ActivityDeveloper 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /ActivityDeveloper/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Fri Jul 27 00:59:18 CST 2012 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 4 | org.eclipse.jdt.core.compiler.compliance=1.5 5 | org.eclipse.jdt.core.compiler.source=1.5 6 | -------------------------------------------------------------------------------- /ActivityDeveloper/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ActivityDeveloper/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /ActivityDeveloper/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-8 15 | -------------------------------------------------------------------------------- /ActivityDeveloper/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityDeveloper/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityDeveloper/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityDeveloper/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityDeveloper/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityDeveloper/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityDeveloper/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ActivityDeveloper 3 | 4 | -------------------------------------------------------------------------------- /ActivityDeveloper/src/com/dianping/example/activity/SampleActivity.java: -------------------------------------------------------------------------------- 1 | package com.dianping.example.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | public class SampleActivity extends Activity { 9 | TextView text; 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | text = new TextView(this); 15 | text.setLayoutParams(new ViewGroup.LayoutParams( 16 | ViewGroup.LayoutParams.FILL_PARENT, 17 | ViewGroup.LayoutParams.FILL_PARENT)); 18 | setContentView(text); 19 | 20 | text.setText("You can change this activity and generate the unsigned apk file to ActivityLoader/assets/apks. The SampleActivity will be replaced."); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ActivityLoader/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ActivityLoader/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ActivityLoader 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /ActivityLoader/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Thu Jul 26 23:58:04 CST 2012 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 4 | org.eclipse.jdt.core.compiler.compliance=1.5 5 | org.eclipse.jdt.core.compiler.source=1.5 6 | -------------------------------------------------------------------------------- /ActivityLoader/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ActivityLoader/assets/apks/ActivityDeveloper_1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityLoader/assets/apks/ActivityDeveloper_1.apk -------------------------------------------------------------------------------- /ActivityLoader/assets/apks/ActivityDeveloper_2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityLoader/assets/apks/ActivityDeveloper_2.apk -------------------------------------------------------------------------------- /ActivityLoader/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /ActivityLoader/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-8 15 | -------------------------------------------------------------------------------- /ActivityLoader/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityLoader/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityLoader/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityLoader/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityLoader/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/ActivityLoader/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ActivityLoader/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ActivityLoader 3 | 4 | -------------------------------------------------------------------------------- /ActivityLoader/src/com/dianping/example/activity/SampleActivity.java: -------------------------------------------------------------------------------- 1 | package com.dianping.example.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | public class SampleActivity extends Activity { 9 | TextView text; 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | text = new TextView(this); 15 | text.setLayoutParams(new ViewGroup.LayoutParams( 16 | ViewGroup.LayoutParams.FILL_PARENT, 17 | ViewGroup.LayoutParams.FILL_PARENT)); 18 | setContentView(text); 19 | 20 | text.setText("This is SampleActivity"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ActivityLoader/src/com/dianping/example/activityloader/ActivityLoader.java: -------------------------------------------------------------------------------- 1 | package com.dianping.example.activityloader; 2 | 3 | import java.io.File; 4 | import java.io.FileOutputStream; 5 | import java.io.InputStream; 6 | import java.util.ArrayList; 7 | import java.util.HashMap; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | import android.app.ListActivity; 12 | import android.content.Context; 13 | import android.content.Intent; 14 | import android.content.res.AssetManager; 15 | import android.os.Bundle; 16 | import android.view.View; 17 | import android.widget.ListView; 18 | import android.widget.SimpleAdapter; 19 | import android.widget.Toast; 20 | import dalvik.system.DexClassLoader; 21 | 22 | public class ActivityLoader extends ListActivity { 23 | private List> data = new ArrayList>(); 24 | 25 | @Override 26 | protected void onCreate(Bundle savedInstanceState) { 27 | super.onCreate(savedInstanceState); 28 | 29 | addItem("[ Launch SampleActivity ]", null); 30 | addItem("[ Default.apk ]", null); 31 | try { 32 | AssetManager asset = getAssets(); 33 | for (String s : asset.list("apks")) { 34 | addItem(s, "apks/" + s); 35 | } 36 | } catch (Exception e) { 37 | } 38 | 39 | SimpleAdapter adapter = new SimpleAdapter(this, data, 40 | android.R.layout.simple_list_item_1, new String[] { "title" }, 41 | new int[] { android.R.id.text1 }); 42 | setListAdapter(adapter); 43 | } 44 | 45 | private void addItem(String title, String path) { 46 | HashMap map = new HashMap(); 47 | map.put("title", title); 48 | map.put("path", path); 49 | data.add(map); 50 | } 51 | 52 | @Override 53 | protected void onListItemClick(ListView l, View v, int position, long id) { 54 | if (position == 0) { 55 | Intent i = new Intent("com.dianping.intent.action.SAMPLE_ACTIVITY"); 56 | startActivity(i); 57 | return; 58 | } 59 | if (position == 1) { 60 | MyApplication.CUSTOM_LOADER = null; 61 | return; 62 | } 63 | Map item = data.get(position); 64 | String title = item.get("title"); 65 | String path = item.get("path"); 66 | 67 | try { 68 | File dex = getDir("dex", Context.MODE_PRIVATE); 69 | dex.mkdir(); 70 | File f = new File(dex, title); 71 | InputStream fis = getAssets().open(path); 72 | FileOutputStream fos = new FileOutputStream(f); 73 | byte[] buffer = new byte[0xFF]; 74 | int len; 75 | while ((len = fis.read(buffer)) > 0) { 76 | fos.write(buffer, 0, len); 77 | } 78 | fis.close(); 79 | fos.close(); 80 | 81 | File fo = getDir("outdex", Context.MODE_PRIVATE); 82 | fo.mkdir(); 83 | DexClassLoader dcl = new DexClassLoader(f.getAbsolutePath(), 84 | fo.getAbsolutePath(), null, 85 | MyApplication.ORIGINAL_LOADER.getParent()); 86 | MyApplication.CUSTOM_LOADER = dcl; 87 | 88 | Toast.makeText(this, title + " loaded, try launch again", 89 | Toast.LENGTH_SHORT).show(); 90 | } catch (Exception e) { 91 | Toast.makeText(this, "Unable to load " + title, Toast.LENGTH_SHORT) 92 | .show(); 93 | e.printStackTrace(); 94 | MyApplication.CUSTOM_LOADER = null; 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /ActivityLoader/src/com/dianping/example/activityloader/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.dianping.example.activityloader; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | import android.util.Log; 6 | 7 | public class MyApplication extends Application { 8 | public static ClassLoader ORIGINAL_LOADER; 9 | public static ClassLoader CUSTOM_LOADER = null; 10 | 11 | @Override 12 | public void onCreate() { 13 | super.onCreate(); 14 | try { 15 | Context mBase = new Smith(this, "mBase").get(); 16 | 17 | Object mPackageInfo = new Smith(mBase, "mPackageInfo") 18 | .get(); 19 | 20 | Smith sClassLoader = new Smith( 21 | mPackageInfo, "mClassLoader"); 22 | ClassLoader mClassLoader = sClassLoader.get(); 23 | ORIGINAL_LOADER = mClassLoader; 24 | 25 | MyClassLoader cl = new MyClassLoader(mClassLoader); 26 | sClassLoader.set(cl); 27 | } catch (Exception e) { 28 | e.printStackTrace(); 29 | } 30 | } 31 | 32 | class MyClassLoader extends ClassLoader { 33 | public MyClassLoader(ClassLoader parent) { 34 | super(parent); 35 | } 36 | 37 | @Override 38 | public Class loadClass(String className) 39 | throws ClassNotFoundException { 40 | if (CUSTOM_LOADER != null) { 41 | if (className.startsWith("com.dianping.")) { 42 | Log.i("classloader", "loadClass( " + className + " )"); 43 | } 44 | try { 45 | Class c = CUSTOM_LOADER.loadClass(className); 46 | if (c != null) 47 | return c; 48 | } catch (ClassNotFoundException e) { 49 | } 50 | } 51 | return super.loadClass(className); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /ActivityLoader/src/com/dianping/example/activityloader/Smith.java: -------------------------------------------------------------------------------- 1 | package com.dianping.example.activityloader; 2 | 3 | import java.lang.reflect.Field; 4 | 5 | public class Smith { 6 | private Object obj; 7 | private String fieldName; 8 | 9 | private boolean inited; 10 | private Field field; 11 | 12 | public Smith(Object obj, String fieldName) { 13 | if (obj == null) { 14 | throw new IllegalArgumentException("obj cannot be null"); 15 | } 16 | this.obj = obj; 17 | this.fieldName = fieldName; 18 | } 19 | 20 | private void prepare() { 21 | if (inited) 22 | return; 23 | inited = true; 24 | 25 | Class c = obj.getClass(); 26 | while (c != null) { 27 | try { 28 | Field f = c.getDeclaredField(fieldName); 29 | f.setAccessible(true); 30 | field = f; 31 | return; 32 | } catch (Exception e) { 33 | } finally { 34 | c = c.getSuperclass(); 35 | } 36 | } 37 | } 38 | 39 | public T get() throws NoSuchFieldException, IllegalAccessException, 40 | IllegalArgumentException { 41 | prepare(); 42 | 43 | if (field == null) 44 | throw new NoSuchFieldException(); 45 | 46 | try { 47 | @SuppressWarnings("unchecked") 48 | T r = (T) field.get(obj); 49 | return r; 50 | } catch (ClassCastException e) { 51 | throw new IllegalArgumentException("unable to cast object"); 52 | } 53 | } 54 | 55 | public void set(T val) throws NoSuchFieldException, IllegalAccessException, 56 | IllegalArgumentException { 57 | prepare(); 58 | 59 | if (field == null) 60 | throw new NoSuchFieldException(); 61 | 62 | field.set(obj, val); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /FragmentDeveloper/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /FragmentDeveloper/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | FragmentDeveloper 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /FragmentDeveloper/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Fri Jul 27 01:59:59 CST 2012 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 4 | org.eclipse.jdt.core.compiler.compliance=1.5 5 | org.eclipse.jdt.core.compiler.source=1.5 6 | -------------------------------------------------------------------------------- /FragmentDeveloper/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /FragmentDeveloper/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /FragmentDeveloper/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-15 15 | -------------------------------------------------------------------------------- /FragmentDeveloper/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/FragmentDeveloper/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /FragmentDeveloper/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/FragmentDeveloper/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /FragmentDeveloper/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/FragmentDeveloper/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /FragmentDeveloper/res/drawable/bucket_icon_icloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/FragmentDeveloper/res/drawable/bucket_icon_icloud.png -------------------------------------------------------------------------------- /FragmentDeveloper/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simpleton/AndroidDynamicLoader/41f23f1ccb519786b7aa09890216b1c208748c81/FragmentDeveloper/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /FragmentDeveloper/res/layout/sample_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 17 | 18 |