需求条件:

自己没做过android,公司android开发临时有事请假了,老板说让我研究研究,反正都是java。我心里“XXXXXX”。这篇用来自己做个记录,老手请略过,Android新手临时替岗而已。前提是自己的类中含有用到Android的类库

解决方案:

这module新建的时候选择,不要选择"Java Library"而要选择"Android Library",然后利用引入依赖后,用打包脚本排除相关类就可以了。Gradle的build脚本示例:
```java
apply plugin: 'com.android.library'

android {

compileSdkVersion 28

publishNonDefault true

defaultConfig {
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

}

dependencies {

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

implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
/*新增*/
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.6'
implementation '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)

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

Android项目如果要将自己写的类写成要单独打成jar包?的更多相关文章

  1. IDEA如何将写好的java类(UDF函数)打成jar包上传linux

    一.编写一个UDF函数,实现将字符串大写转小写 import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; ...

  2. 【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 鼠标右键项目,然后属性,然后java buildpath 然后order and ex ...

  3. java项目打成jar包时引用了第三方jar,此时我们该如何解决呢

    Web项目做多了,反而对单纯的java项目陌生了,今天我们在开发项目的过程中,碰到一个这样的需求:需要将java项目放到linux系统上跑起来,当然这个javaSE项目是带main方法的.我们知道在I ...

  4. Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来 ...

  5. 使用maven将项目打成jar包

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. java项目打成jar包使用

    使用Eclipse打成jar包 1.创建项目hello 2.写java文件 package hell; import java.io.PrintStream; public class Hello { ...

  7. 使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

    前几天接到一个需求,要把原系统中一个数据处理小功能搬出原系统,拉出来单独做一个SpringBoot项目,然后打成jar包扔到Windows服务器上运行,这样数据处理的时候如果遇到堵塞就不至于整个系统都 ...

  8. 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)

    1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...

  9. eclipse将引用了第三方jar包的java项目打成jar包

    今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...

随机推荐

  1. trunc与round

    TRUNC(number[,num_digits])   number 需要截尾取整的数字. num_digits 用于指定取整精度的数字.Num_digits 的默认值为 0. 作用:截断数字和时间 ...

  2. Loadrunner--关联详解

    当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本.在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有 ...

  3. eclipse启动tomcat报错

    错误信息:   严重: A child container failed during start java.util.concurrent.ExecutionException: org.apach ...

  4. LA 3644 - X-Plosives ( 也即UVA 1160)

    LA看题 请点击:传送门 UVA 上也有这题 :UVA 1160 - X-Plosives 题目大意就是如果车上存在 k 个简单化合物,正好包含 k 种元素 ,那么它们将有危险,此时你应该拒绝装车. ...

  5. 【习题5-5 UVA-10391】Compound Words

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举每一个串的分割点. 看看左右两个串在不在字符串中即可. [代码] #include <bits/stdc++.h> ...

  6. zynq+linux+ramdisk can调试

    由于采用ramdisk文件系统,自带的ip工具版本太旧无法配置can,需要自行编译ip,具体参见参考文献2 1.vivado配置ps 2.设备树增加can0,一般开发板均已提供此配置 can@e000 ...

  7. UILabel基本用法

    UILabel *_label = [[UILabel alloc]initWithFrame:CGRectMake(, self.view.frame.size.height*)]; _label. ...

  8. centos7 安装php环境和安装swoole

    这仅是我在网上找了多个解决方法,搞定了我遇到的问题,做的一个记录,买这个服务器就是为了测试swoole,结果快到期了,swoole还没装好 感谢https://www.cnblogs.com/phpw ...

  9. TF-IDF计算方法和基于图迭代的TextRank

    文本处理方法概述 说明:本篇以实践为主,理论部分会尽量给出参考链接 摘要: 1.分词 2.关键词提取 3.主题模型(LDA/TWE) 4.词的两种表现形式(词袋模型和分布式词向量) 5.关于文本的特征 ...

  10. 第一次使用docker for windows 遇到的坑

    原文:第一次使用docker for windows 遇到的坑 1. 目前win10安装docker, 不需要安装其他工具,可直接到官网下载 2. 此版本的docker可同时运行Windows con ...