文章目录

  • 1 整理Android Studio 2.3.3将module打jar包打包过程
  • 2 使用生成的Jar包
  • 3 Android Studio 3.1.2打Jar包
  • 4 配置Jar包方法
  • 5 打Jar包方式


1 整理Android Studio 2.3.3将module打jar包打包过程

1 new 一个 module,如果之前有则用之前的,但是要确保module是library状态,并且主工程已添加依赖

android studio 模板flutter项目_jar包

android studio 模板flutter项目_jar包_02


android studio 模板flutter项目_jar包_03


2 android studio 会在library所依赖的 app运行 或 build 之后自动生成 jar 包,路径为 Module根目录/build/intermediates/bundles/debug or release/classes.jar,如果没有则可以在Terminal 里运行 gradlew build或 ./gradlew build

3 如果运行gradlew build报错:Execution failed for task ‘:app:lint’

Wrote HTML report to file:///E:/AndroidStudioProjects/xxx/app/build/reports/lint-results.html
Wrote XML report to file:///E:/AndroidStudioProjects/xxx/app/build/reports/lint-results.xml
 * What went wrong:
Execution failed for task ':app:lint'.
 Lint found errors in the project; aborting build.

Fix the issues identified by lint, or add the following to your build script to proceed with errors:
  ...
  android {
      lintOptions {
          abortOnError false
      }
  }
  ...

解决方法:
在主项目的build.gradle 里添加:

android {
    	 lintOptions {
        	abortOnError false//忽略lint警告,否则会打包失败
    	}
 }

android studio 模板flutter项目_jar_04


4 在module的build.gradle的添加

android {
task makeJar(type: Copy) {
       delete 'build/meSDK.jar' //删除之前的旧jar包
       from('build/intermediates/bundles/default/') //从这个目录下取出默认jar包
       into('build/libs/') //将jar包输出到指定目录下
       include('classes.jar')
       rename('classes.jar', 'meSDK.jar') //自定义jar包的名字
   }
   makeJar.dependsOn(build)
}

5 在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令,回车执行

android studio 模板flutter项目_Android_05


执行完成后,jar包会输出到指定目录下。

android studio 模板flutter项目_jar包_06

2 使用生成的Jar包

1 将生成的Jar包(例如上面生成的meSDK.jar),拷贝到项目libs包下,右击然后选择Add AS Library,则可以使用meSDK内部的方法啦

android studio 模板flutter项目_jar_07


(回顾下之前生成meSDK.jar之前的Library里定义的类的方法):

android studio 模板flutter项目_jar包_08

3 Android Studio 3.1.2打Jar包

1 android studio3.1.2的时候bundles目录不存在了,改为packaged-classes。
则配置如下

task makeJar(type: Copy) {
        delete 'build/meSDK.jar' //删除之前的旧jar包
        from('build/intermediates/packaged-classes/release') //从这个目录下取出默认jar包
        into('build/libs/') //将jar包输出到指定目录下
        include('classes.jar')
        rename('classes.jar', 'meSDK.jar') //自定义jar包的名字
    }
    makeJar.dependsOn(build)

2 然后,选中library的Module,点击Make Module library,此时packaged-classes目录即可生成。

android studio 模板flutter项目_jar包_09


3 在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令,回车执行,执行完成后,jar包会输出到指定目录下。

4 配置Jar包方法

方法1:

def _BASENAME = "TestJar";
def _VERSION = "_V1.0";
def _DestinationPath = "build"; //生成jar包的位置
def zipFile = file('build/intermediates/bundles/default/classes.jar'); //待打包文件位置

task deleteBuild(type:Delete){
    delete _DestinationPath + _BASENAME + _VERSION + ".jar"
}
task makeJar(type:Jar){
    from zipTree(zipFile)
    from fileTree(dir:'src/main',includes:['assets/**']) //将assets目录打入jar包  
    baseName = _BASENAME + _VERSION
    destinationDir = file(_DestinationPath)
}
makeJar.dependsOn(deleteBuild, build)

方法2:

task makeJar(type: Copy) {
    delete 'build/TestJar_V1.0.jar' //删除之前的旧jar包
    from('build/intermediates/bundles/default/') //从这个目录下取出默认jar包
    into('build/') //将jar包输出到指定目录下
    include('classes.jar')
    rename('classes.jar', 'TestJar_V1.0.jar') //自定义jar包的名字
}
makeJar.dependsOn(build)

方法3:

task clearJar(type: Delete) {
    delete 'build/TestJar_V1.0.jar' //jar包的名字,随便命名 
}
task makeJar(type:org.gradle.api.tasks.bundling.Jar) {
    //指定生成的jar名 
    baseName 'TestJar_V1.0'
    //从哪里打包class文件 
    from('build/intermediates/bundles/default/')
    //打包到jar后的目录结构 
    into('build/')
    //去掉不需要打包的目录和文件 
    exclude('test/', 'BuildConfig.class', 'R.class')
    //去掉R开头的文件  
    exclude{it.name.startsWith('R');}
}
makeJar.dependsOn(clearJar, build)

5 打Jar包方式

方式1:在 Android Studio 终端窗口Terminal 中输入 gradlew makeJar 命令

方式2:通过Gradle -->Library —> Tasks —> other — > makeJar方法

android studio 模板flutter项目_jar包_10