V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
9527H
V2EX  ›  Android

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

  •  
  •   9527H · 2022-11-01 14:53:32 +08:00 · 9050 次点击
    这是一个创建于 784 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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)

    这个是导出的代码

    13 条回复    2022-11-02 17:02:20 +08:00
    MozzieW
        1
    MozzieW  
       2022-11-01 15:31:41 +08:00
    jar 是 Java 的格式,Android 的依赖格式是 aar
    AoEiuV020CN
        2
    AoEiuV020CN  
       2022-11-01 15:34:16 +08:00
    好奇你要做什么,最近几天问的安卓问题都奇奇怪怪的,
    9527H
        3
    9527H  
    OP
       2022-11-01 16:01:44 +08:00
    @AoEiuV020CN 把一个 android 项目打成 jar 包,发送到手机上,然后用 adb 命令执行这个 jar 内的代码
    maokabc
        4
    maokabc  
       2022-11-01 16:07:02 +08:00 via Android
    jar 为什么要这个?需要把原本包含.class 文件的 jar 用 dx 或者 d8 转换为包含 classes.dex 的 jar ,然后 dalvikvm 运行就行。
    9527H
        5
    9527H  
    OP
       2022-11-01 16:17:27 +08:00
    @maokabc jar 包的代码里面需要用到 Application ?但是我获取到 Application 都是为空,刚开始我以为是 jar 包没有 AndroidManifest.xml 的缘故。但现在看来不是这样的。 你有办法可以拿到 Application 吗
    Dawnton
        6
    Dawnton  
       2022-11-01 16:28:53 +08:00
    @9527H 行不通,这种 jar 包是跑不起来的,Android 上安装 apk 后运行机制和 jar 包运行机制根本不一样,环境也不一样
    Dawnton
        7
    Dawnton  
       2022-11-01 16:31:26 +08:00
    @Dawnton 还有就是 jar 包内部的依赖包也找不到啊,就比如你说的 Application ,它的父类和依赖在 jar 包里面根本没有,获取的时候肯定是空的
    9527H
        8
    9527H  
    OP
       2022-11-01 17:17:50 +08:00
    @Dawnton 好的,谢谢
    AoEiuV020CN
        9
    AoEiuV020CN  
       2022-11-01 17:36:43 +08:00
    @9527H #3 这只是手段,我想知道的是目的,
    比如运行这个 jar 想要实现什么效果,想要解决什么问题,
    zpxshl
        10
    zpxshl  
       2022-11-02 00:29:28 +08:00 via Android
    要么系统学习安卓。要么详细描述你的需求。
    按你目前的描述与设想来看,路完全走不通的
    wvitas
        11
    wvitas  
       2022-11-02 10:11:31 +08:00
    jar 无法包含资源文件的,想包含资源文件得 aar
    shawndev
        12
    shawndev  
       2022-11-02 13:39:52 +08:00
    典型的 X-Y Problem ,要打包也是 dex 或者 aar ,系统学了 android 再来提问吧,OP 的几个近期提问都没头没脑的。
    XXWHCA
        13
    XXWHCA  
       2022-11-02 17:02:20 +08:00
    android 运行 jar 包只能直接运行非系统组件的代码,不然就需要依附一个宿主 app ,因为系统组件比如 Application ,Context 这些都需要注册到 AMS 的,不然是走不通的,和有没有清单文件没有关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4245 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 01:01 · PVG 09:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.