Android项目如果要将自己写的类写成要单独打成jar包?

<p><h>需求条件:</h1></p> <p>自己没做过android,公司android开发临时有事请假了,老板说让我研究研究,反正都是java。我心里“XXXXXX”。这篇用来自己做个记录,老手请略过,Android新手临时替岗而已。前提是自己的类中含有用到Android的类库</p> <p><h>解决方案:</h1></p> 这module新建的时候选择,不要选择"Java Library"而要选择"Android Library",然后利用引入依赖后,用打包脚本排除相关类就可以了。Gradle的build脚本示例: \`\`\`java apply plugin: 'com.android.library'

android { compileSdkVersion 28 publishNonDefault true

1defaultConfig { 2 minSdkVersion 15 3 targetSdkVersion 28 4 versionCode 1 5 versionName "1.0" 6 7 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 8 9} 10 11buildTypes { 12 release { 13 minifyEnabled false 14 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 15 } 16}

}

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar'])

1implementation 'com.android.support:appcompat-v7:28.0.0' 2testImplementation 'junit:junit:4.12' 3androidTestImplementation 'com.android.support.test:runner:1.0.2' 4androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 5/*新增*/ 6implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.6' 7implementation 'com.google.code.gson:gson:2.6.2'

}

//Copy类型 task makeJar(type: Copy) { //删除存在的 delete '/libs/JXSDK.aar' //设置拷贝的文件 from('/build/intermediates/packaged-classes/release/') //打进jar包后的文件目录 into('/libs/') //将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 //(我们只关心classes.jar这个文件) //过滤不需要的class exclude "//BuildConfig.class" exclude "//BuildConfig$.class" exclude "/R.class" exclude "/R$.class" include('classes.jar') //指定打包的class include "com/test/**/*.class" //重命名 rename ('classes.jar', 'JXSDK.jar') } makeJar.dependsOn(build)

1<p><h>注意要点:</h1></p> 2<p>1、最新情况,最新版本3.2.1的Android Studio中已经将“bundles”文件夹改为了“packaged-classes”文件夹,网上教程过时了</p> 3<p>2、打包脚本中可以用“gradlew build”在“output”文件夹中生成aar格式的包,如果需要也可以用</p> 4<p>3、打包脚本中可以用“gradlew makeJar”在执行gradle的打包脚本任务的时候,目录一定要按照自己的目录配置,Android的目录约束好像会变!</p> 5<p>4、如果现有程序中新建module,如果android版本不一致会有问题,这个时候最好新建一个项目将需要打包的类做个迁移</p> 6<p>5、打包过程中如果两个module的“AndroidManifest.xml”文件中的包名相同会报错,最好设置不同报名</p> 7<p>6、Android的依赖管理在module之间如果不引用是独立的,每个module的“gradle.build”文件中都可以单独定义“dependencies”并且打包路径也是相对于当前module的路径</p> 8<p>7、其他有的打jar包教程中说的需要在默认app项目的“gradle.build”中添加“compileproject(':sdk')”,现在要改为“implementation project(':sdk')”才可以</p> 9<p>纯手打发泄一下情绪,也希望对其他人有帮助转载请注明出处!</p>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Activiti 工作流入门指南

<divclass"htmledit\_views"id"content\_views"<h1<aname"t0"</a概览</h1<p如我们的介绍部分所述,Activiti目前分为两大类:</p<ul<li<p<ahref"https://activiti.gitbook.io/activiti7deve

Django之Django模板

1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:

Android项目如果要将自己写的类写成要单独打成jar包? - HelloWorld