dex檔案手動載入

來源:互聯網
上載者:User

 將已經編譯好的.class或者.dex檔案放在sdcard中,供一個已安裝的程式動態調用:

首先將.class檔案轉換成.dex檔案:

package com.dynamic;
public interface IDynamic {
public String helloWorld();
}

 

 

package com.dynamic;
public class DynamicTest implements IDynamic {
    @Override
    public String helloWorld() {
        return "Hello World!";
    }
}

將com.dynamic打包成dynamic.jar

 


將jar包dynamic.jar放到D:\soft\sdk\sdk\platform-tools目錄下,dos命令切換到此目錄下,輸入dx --dex --output=dynamic.dex dynamic.jar,將此目錄下產生的dynamic.dex檔案放到sdcard裡面。


[java]
final File optimizedDexOutputPath = new File(Environment.getExternalStorageDirectory().toString()+File.separator +"wftech"+ 
                File.separator+"dex"+File.separator+ "dynamic.dex");//將dynamic.dex放到/mnt/wftech目錄下  
                DexClassLoader cl = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(), 
                        <STRONG><SPAN style="COLOR: #ff0000">MainActivity.this.getDir("dex", 0).getAbsolutePath()</SPAN></STRONG>,//一定不能寫錯  
                    null, getClassLoader()); 
                Class libProviderClazz = null; 
                try { 
                    libProviderClazz = cl.loadClass("com.dynamic.DynamicTest"); 
                    IDynamic lib = (IDynamic)libProviderClazz.newInstance(); 
                    Toast.makeText(MainActivity.this, lib.helloWorld(), Toast.LENGTH_SHORT).show(); 
                } catch (Exception exception) { 
                    exception.printStackTrace(); 
                } 

final File optimizedDexOutputPath = new File(Environment.getExternalStorageDirectory().toString()+File.separator +"wftech"+
             File.separator+"dex"+File.separator+ "dynamic.dex");//將dynamic.dex放到/mnt/wftech目錄下
             DexClassLoader cl = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(),
               MainActivity.this.getDir("dex", 0).getAbsolutePath(),//一定不能寫錯
     null, getClassLoader());
                Class libProviderClazz = null;
                try {
                 libProviderClazz = cl.loadClass("com.dynamic.DynamicTest");
                 IDynamic lib = (IDynamic)libProviderClazz.newInstance();
                 Toast.makeText(MainActivity.this, lib.helloWorld(), Toast.LENGTH_SHORT).show();
                } catch (Exception exception) {
                    exception.printStackTrace();
                }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.