`
- 浏览:
41370 次
- 性别:
- 来自:
济南
-
android 动态加载sdcard jar的方法
1.新建Android工程,封装功能java类。
2.选中需要导出的文件夹,右键选中“Export”->"Java(Jar file)"导出jar文件。hello.jar
3.使用dx工具将jar包转换为android 字节码。
命令:dx --dex --output=xx.jar hello.jar
然后把xx.jar放到mnt/sdcard/ 或者其他路径
假如:hello.jar 定义如下:
package com.example.test;
public class Plug {
public int add(int a,int b){
return a+b;
}
public String test(){
return "carter";
}
}
4.使用
private void useDexClassLoader() {
String dexPath = "/mnt/sdcard/xx.jar";
String dexOutputDir = "/data/data/"+getPackageName();
Log.v(TAG, "dexOutputDir="+dexOutputDir);
DexClassLoader pathClassLoader = new DexClassLoader(dexPath, dexOutputDir, null, this
.getClass().getClassLoader());
// dexPath 目标jar或apk的路径 ; dexOutputDirdex 文件路径 ;null 目标类中使用的c/c++库存放的路径
// ; 第四个参数 父装载类
try {
Class class1 = pathClassLoader.loadClass("com.example.test.Plug"); //xx.jar包名+类名
Object object = class1.newInstance();
Class[] params = new Class[2];
params[0] = Integer.TYPE;
params[1] = Integer.TYPE;
Method action = class1.getMethod("add", params);
Integer ret = (Integer) action.invoke(object, 12, 13);
Log.v(TAG, "method : " + action.getName() + ", return :" + ret);
action = class1.getMethod("test");
String aa = (String) action.invoke(object);
Log.v(TAG, "method : " + action.getName() + ", return :" + aa);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
5.这样就实现了从网络下载jar,然后不通过adb install -r 来更新apk了,这种方式适合广告类的插件,因为可以在后台动态加载,不需要弹出更新安装的对话框
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
android 插件化动态加载jar 有时候会看到一些应用对应的SDcard里的文件夹里有 ***.jar 等文件,现在明白这些文件大概是用来做应用内自动更新用的。 打比方说,类似eclipse 可以通过预留接口,安装各种插件一样。 ...
拷贝openvc-2.3.1.jar和两个文件夹armeabi和armeabi-v7a到android项目的libs目录下 在oncreate中添加如下代码 private ImageView imageView = null; @Override protected void onCreate(Bundle ...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
android4.0浏览器在eclipse中编译的方法: BrowserEclipse\docs\readme.txt 注意: 如果下载已经修过的源码,只要进行3、4、8步骤就应该可以了。 eclipse版本;adt-bundle-windows (Android Developer Tools ...
下载 jar 文件,并将 jar 文件添加到您的 android 测试项目中。 编辑 AndroidManifest.xml 将检测标签中的 android:name 设置为: ...
【个人仓促开发,完成度不高,难免会有bug,不知道锤子帮会不会召唤我。...在导入工程后如果出现错误,记得检查android-support-v4.jar路径,可重新添加,一般在Android SDK目录下:\sdk\extras\android\support\v4\
1 使你的android project引用此工程(其实只需要把library添加至你的工程的lib包就可以了) 2 DownloadController downloadController = DownloaderUtil.getInstance().download("", "/mnt/sdcard/QQMusic.exe", 4, ...
1、导入xutils的jar包 2、在AndroidManifest.xml中添加权限 3、选择下载的路径,和下载apk文件的网址 private String url=”http://www.oschina.NET/uploads/osc-Android-v2.6.4-release.apk”; private ...
xUtils 包含了很多实用的android工具. xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUtils 最低兼容Android 4.0 (api level 14...
.setLogDir(getApplicationContext(), "sdcard/" this.getString(this.getApplicationInfo().labelRes) "/")//定义路径为:sdcard/[app name]/ .setWifiOnly(true)//设置只在Wifi状态下上传,设置为false为...