Android Studio 打包Jar
来源:互联网 发布:乐视max2 root软件 编辑:程序博客网 时间:2024/05/17 23:25
Eclipse打包Jar包很容易,直接选择相应的资源打包即可。Android Studio要打包Jar则没有图形界面,只有用gradle来打包。下面就讲述Android Studio打包Jar,并处理Android Studio的terminal中文重码、不能正常输入等问题,gradle禁用lint报错。
一、环境设置
在win10的环境下,Android Studio的terminal会有bug。AS(Android Stuido简写,下同)会显示中文重码,或者字体显示不全,或不能不能正常输入等等,总之就是各种不好用。希望你没有遇到!
那么怎么处理呢?其实也很简单,把它退回到win7模式就行了。具体做法如下:
1)win + R,输入cmd调出terminal。
2)在terminal边框上单击右键调出属性选项,选择使用旧版控制台。
3)最后重启电脑,这是你会发现AS里面的terminal又能正常使用了。
二、打包Jar
先说明一下,下面的打包方法只是打包class类的包,并不包含布局等资源。打包资源需要打包成AAR的形式。
首先,在module应用的gradle里面开头的apply plugin: 'com.android.application'设置为:
apply plugin: 'com.android.library'
再把defaultConfig里面把applicationId "com.example.Test"去掉。
在build时候你会发现在build/intermediates/bundles/release/ 子目录(或build/intermediates/bundles/release/debug目录下,即使不是你运行完下面代码你再找找,就在这附近的了)里生成一个名为classes的jar包。
一般来说,你把这个class.jar提取出来即可。
代码入下:
//删除存在的task clearJar(type: Delete) { delete 'build/outputs/test.jar'}task makeJar(type: Copy) { //设置拷贝的文件,如果你发现的AS生成的class.jar目录有变,可以作相应的改变 from('build/intermediates/bundles/release/') //设置输出目录 into('build/outputs/') include('classes.jar') //设置名字 rename ('classes.jar', test.jar')}makeJar.dependsOn(clearJar, build)
这时候上面设置好的terminal就派上用场了。
在AS里面的terminal输入
gradlew makeJar
你的jar就会生成了。
但这种生成jar的方式有个缺点,那就是你全部的class类都被打包了。从代码上可以很明显地看到这个是直接copy了对应目录下已经打包好整个类的class.jar再改名。
如果你想去掉一部分内容再打包呢?
直接打包jar代码如下:
task clearJar(type: Delete) { delete 'libs/sdk.jar' } task makeJar(type:org.gradle.api.tasks.bundling.Jar) { //指定生成的jar名 baseName 'sdk' //从哪里打包class文件 from('build/intermediates/classes/debug/com/example/testsdk/') //打包到jar后的目录结构 into('com/example/testdk/') //去掉不需要打包的目录和文件 exclude('test/', 'BuildConfig.class', 'R.class') //去掉R$开头的文件 exclude{ it.name.startsWith('R$');} } makeJar.dependsOn(clearJar, build)然后再在命令行里输入
gradlew makeJar你就可以在libs目录下找到这个jar了
想检查效果可以用jd-gui软件查看一下jar包。
总的代码如下:
apply plugin: 'com.android.library'//apply plugin: 'com.android.application'android { compileSdkVersion 24 buildToolsVersion "24.0.3" defaultConfig { //applicationId "com.example.Test" minSdkVersion 15 targetSdkVersion 20 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false }}task clearJar(type: Delete) { delete 'libs/sdk.jar'}task makeJar(type:org.gradle.api.tasks.bundling.Jar) { baseName 'sdk' //设置拷贝的文件 from('build/intermediates/classes/debug/com/example/Test/') //打进jar包后的文件目录 into('com/example/Test/') //将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 exclude('view/', 'BuildConfig.class', 'R.class') exclude{ it.name.startsWith('R$');} }makeJar.dependsOn(clearJar, build)//在终端执行生成JAR包// gradlew makeJardependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile files('libs/xxx.jar')}
上面代码你可能眼尖发现多了个这个。
lintOptions { abortOnError false }这是因为gradle build命令时,会有可能由于lint错误终止。而你又想跳过这个错误接着往下编译,你可以这样设置。
完整版是这样设置的:
android { //你的配置 defaultConfig { ... } signingConfigs { ... } compileOptions { ... } buildTypes { ... } // This is important, it will run lint checks but won't abort build lintOptions { abortOnError false } }
0 0
- android studio 打包jar
- Android Studio 打包Jar
- android studio打包jar
- Android Studio 打包Jar
- Android studio 打包Jar
- android studio 打包 jar
- Android Studio 打包Jar
- android studio 打包jar
- Android studio 打包jar文件
- Android Studio 打包jar,aar
- Android studio 打包jar包
- Android studio 打包JAr包
- android studio library打包jar
- Android Studio 取消打包某一个Jar包
- Android Studio 取消打包某一个Jar包
- Android Studio 使用 Gradle 打包 Jar
- Android Studio 使用 Gradle 打包 Jar
- Android Studio 使用 Gradle 打包 Jar
- 适配器模式(结构型)
- Java高级工程师面试总结
- Git教程,常用命令
- Oracle Execution Plan & Optimizer Hints
- unity shader (5)--实现逐像素光照
- Android Studio 打包Jar
- java的父子类加载顺序
- Java源码-一筐鸡蛋问题的Java解法
- 《锋利的jQuery》第五章、 jQuery对表单和表格的操作
- C++多文件结构在VS2013中实现
- yum使仓库失效的命令
- 台大林轩田机器学习课程笔记3----机器学习的可行性
- 正则表达式详细解析
- 【PAT甲级】1024. Palindromic Number (25)