task makeJar(type: Copy) {
def jarName = "jarName"
//删除存在的
delete 'build/libs/' + jarName + ".jar"
//设置拷贝的文件
from("build/intermediates/aar_main_jar/commonDebug")
//打进 jar 包后的文件目录,将 classes.jar 放入 build/libs/目录下
into('build/libs/')
//要打包的 jar 文件
include('classes.jar')
//重命名
rename('classes.jar', jarName + ".jar")
} makeJar.dependsOn(build)
这个是导出的代码
1
MozzieW 2022-11-01 15:31:41 +08:00
jar 是 Java 的格式,Android 的依赖格式是 aar
|
2
AoEiuV020CN 2022-11-01 15:34:16 +08:00
好奇你要做什么,最近几天问的安卓问题都奇奇怪怪的,
|
3
9527H OP @AoEiuV020CN 把一个 android 项目打成 jar 包,发送到手机上,然后用 adb 命令执行这个 jar 内的代码
|
4
maokabc 2022-11-01 16:07:02 +08:00 via Android
jar 为什么要这个?需要把原本包含.class 文件的 jar 用 dx 或者 d8 转换为包含 classes.dex 的 jar ,然后 dalvikvm 运行就行。
|
5
9527H OP @maokabc jar 包的代码里面需要用到 Application ?但是我获取到 Application 都是为空,刚开始我以为是 jar 包没有 AndroidManifest.xml 的缘故。但现在看来不是这样的。 你有办法可以拿到 Application 吗
|
6
Dawnton 2022-11-01 16:28:53 +08:00
@9527H 行不通,这种 jar 包是跑不起来的,Android 上安装 apk 后运行机制和 jar 包运行机制根本不一样,环境也不一样
|
7
Dawnton 2022-11-01 16:31:26 +08:00
@Dawnton 还有就是 jar 包内部的依赖包也找不到啊,就比如你说的 Application ,它的父类和依赖在 jar 包里面根本没有,获取的时候肯定是空的
|
9
AoEiuV020CN 2022-11-01 17:36:43 +08:00
@9527H #3 这只是手段,我想知道的是目的,
比如运行这个 jar 想要实现什么效果,想要解决什么问题, |
10
zpxshl 2022-11-02 00:29:28 +08:00 via Android
要么系统学习安卓。要么详细描述你的需求。
按你目前的描述与设想来看,路完全走不通的 |
11
wvitas 2022-11-02 10:11:31 +08:00
jar 无法包含资源文件的,想包含资源文件得 aar
|
12
shawndev 2022-11-02 13:39:52 +08:00
典型的 X-Y Problem ,要打包也是 dex 或者 aar ,系统学了 android 再来提问吧,OP 的几个近期提问都没头没脑的。
|
13
XXWHCA 2022-11-02 17:02:20 +08:00
android 运行 jar 包只能直接运行非系统组件的代码,不然就需要依附一个宿主 app ,因为系统组件比如 Application ,Context 这些都需要注册到 AMS 的,不然是走不通的,和有没有清单文件没有关系
|