android studio 导出的 jar 包中没有包含 AndroidManifest.xml 文件,这么为什么?

2022-11-01 14:53:32 +08:00
 9527H

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)

这个是导出的代码

4367 次点击
所在节点    Android
13 条回复
MozzieW
2022-11-01 15:31:41 +08:00
jar 是 Java 的格式,Android 的依赖格式是 aar
AoEiuV020CN
2022-11-01 15:34:16 +08:00
好奇你要做什么,最近几天问的安卓问题都奇奇怪怪的,
9527H
2022-11-01 16:01:44 +08:00
@AoEiuV020CN 把一个 android 项目打成 jar 包,发送到手机上,然后用 adb 命令执行这个 jar 内的代码
maokabc
2022-11-01 16:07:02 +08:00
jar 为什么要这个?需要把原本包含.class 文件的 jar 用 dx 或者 d8 转换为包含 classes.dex 的 jar ,然后 dalvikvm 运行就行。
9527H
2022-11-01 16:17:27 +08:00
@maokabc jar 包的代码里面需要用到 Application ?但是我获取到 Application 都是为空,刚开始我以为是 jar 包没有 AndroidManifest.xml 的缘故。但现在看来不是这样的。 你有办法可以拿到 Application 吗
Dawnton
2022-11-01 16:28:53 +08:00
@9527H 行不通,这种 jar 包是跑不起来的,Android 上安装 apk 后运行机制和 jar 包运行机制根本不一样,环境也不一样
Dawnton
2022-11-01 16:31:26 +08:00
@Dawnton 还有就是 jar 包内部的依赖包也找不到啊,就比如你说的 Application ,它的父类和依赖在 jar 包里面根本没有,获取的时候肯定是空的
9527H
2022-11-01 17:17:50 +08:00
@Dawnton 好的,谢谢
AoEiuV020CN
2022-11-01 17:36:43 +08:00
@9527H #3 这只是手段,我想知道的是目的,
比如运行这个 jar 想要实现什么效果,想要解决什么问题,
zpxshl
2022-11-02 00:29:28 +08:00
要么系统学习安卓。要么详细描述你的需求。
按你目前的描述与设想来看,路完全走不通的
wvitas
2022-11-02 10:11:31 +08:00
jar 无法包含资源文件的,想包含资源文件得 aar
shawndev
2022-11-02 13:39:52 +08:00
典型的 X-Y Problem ,要打包也是 dex 或者 aar ,系统学了 android 再来提问吧,OP 的几个近期提问都没头没脑的。
XXWHCA
2022-11-02 17:02:20 +08:00
android 运行 jar 包只能直接运行非系统组件的代码,不然就需要依附一个宿主 app ,因为系统组件比如 Application ,Context 这些都需要注册到 AMS 的,不然是走不通的,和有没有清单文件没有关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX