Your SlideShare is downloading. ×
  • Like
Android dynamic module
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Android dynamic module

  • 140 views
Published

 

Published in Technology , Art & Photos
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
140
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Android Dynamic Module Lập trình module động trong Android Phí Ngọc Chi – CTO Eway JSC chipn@eway.vn | facebook.com/phingocchi
  • 2. Cập nhật Ứng Dụng Android APK APK Module v 2.0 Module v 1.0 … … … … ,,, … Server Client
  • 3. Cập nhật Module APK APK Module v 2.0 Module v 1.0 … … … Server Client
  • 4. Ưu điểm cập nhật theo Module Mềm dẻo và linh động  Khả năng mở rộng tốt  Đơn giản hóa việc cập nhật với người dùng  Dung lượng cập nhật nhỏ  Tốc độ cập nhật nhanh tức thời 
  • 5. Dynamic Module   Module được phát triển như một project độc lập và đóng gói thành file module.apk Ứng dụng chính tải file module.apk từ URL  DexClassLoader: thư viện sử dụng để nạp class động từ file module.apk  Java Reflection: khởi tạo object từ class động và tương tác với object để kích hoạt logic thực thi
  • 6. Module.apk – v2.0 Module … Download Module Load Module DexClassLoader APK Module.apk – v1.0 Java Reflection Quy trình cập nhật Module Load Module Class New Instance Invoke Method Active Module
  • 7. DemoModule Code public class DemoModule { public void show() { Toast.makeText(getApplicationContext(), "Hi! version 1.0", Toast.LENGTH_SHORT).show(); } } DemoModule.apk - v1.0 public class DemoModule{ public void show() { AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setMessage("Hi! version 2.0"); dialog.show(); } } DemoModule.apk – v2.0
  • 8. Download DemoModule public void downloadDemoModule(Context context) { String dexPath = new File(context.getDir("dex", Context.MODE_PRIVATE), "DemoModule.apk").getAbsolutePath(); //TODO: download DemoModule.apk from URL to dexPath File }
  • 9. Load DemoModule public DexClassLoader getDemoModuleClassLoader(Context context) { String dexPath = new File(context.getDir("dex", Context.MODE_PRIVATE), "DemoModule.apk").getAbsolutePath(); String optimizedDirectory = context.getDir("temp", 0).toString(); String libraryPath = null; ClassLoader parent ClassLoader = context.getClassLoader(); DexClassLoader dexClassLoader = new DexClassLoader(dexPath, optimizedDirectory, libraryPath, parentClassLoader); return dexClassLoader; }
  • 10. Active DemoModule DexClassLoader classLoader = this.getDemoModuleClassLoader(this); try { Class<?> demoModuleClass = classLoader.loadClass("com.simple.DemoModule"); Object demoModule = demoModuleClass.newInstance(); demoModuleClass.getMethod("show").invoke(demoModule); } catch (Exception ex) { ex.printStackTrace(); }
  • 11. DemoModule Screenshot
  • 12. Thanks for your attention! Phí Ngọc Chi – CTO Eway JSC chipn@eway.vn | facebook.com/phingocchi