GithubHelp home page GithubHelp logo

androiddynamicloadjar's Introduction

Apk运行时加载Jar包中的Class

1、创建需要放入到Jar包中的类

com.infinite.dynamicloadjar.plugin.PluginLoader

com.infinite.dynamicloadjar.plugin.CountryBean

2、在app的build.gradle中添加生成Jar包的task

task deleteOldJar(type: Delete) {
    delete 'build/libs/loadJar.jar'
}
//打包操作
task makePluginJar(type: Jar) {
    //要打成的包的名字
    baseName 'loadJar'
    //选取要打包的文件夹
    from('build/intermediates/javac/debug/classes/com/infinite/dynamicloadjar/plugin/')
    //需要跟实际类的包名路径一样
    into('com/infinite/dynamicloadjar/plugin')
//    排除在外的文件
//    exclude('BuildConfig.class', 'R.class', 'MainActivity.class')
//    排除以R$开头的文件
//    exclude{ it.name.startsWith('R$');}
}
//打包,在右侧边栏中Gradle-->app-->other-->makePluginJar
//最后在build/libs/文件夹下执行命令,loadJar1.jar是生成的文件
// dx --dex --output=loadJar1.jar loadJar.jar
makePluginJar.dependsOn(deleteOldJar, build)

3、转换Jar包

在右侧边栏中Gradle-->app-->other-->makePluginJar运行任务后会在app/build/libs目录下生成loadJar.jar,

然后使用dx命令转换Jar包,dx工具位于/Users/xxxx/AndroidSDK/build-tools/28.0.3下,可配置到系统环境变量中

运行dx命令,loadJar1.jar是转换后的Jar文件

dx --dex --output=loadJar1.jar loadJar.jar

将loadJar1.jar拷贝到手机SD卡中的amap目录下

4、运行时加载loadJar1.jar见MainActivity,

记得给SD卡读写权限,将这两个类注释掉,运行时不需要了

com.infinite.dynamicloadjar.plugin.PluginLoader
com.infinite.dynamicloadjar.plugin.CountryBean

androiddynamicloadjar's People

Contributors

zhuluoliye avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.