python调用java代码,模块JPype

一、安装

1、下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
2、然后用 pip install ****.whl
3、还需要安装 numpy
4、测试 import jpype,如果报错(ImportError:DLL load failed:找不到指定模块),需要进行如下安装
5、下载链接: https://www.microsoft.com/zh-cn/download/details.aspx?id=48145、下载下来然后安装

二、简单调用

from jpype import *

startJVM(getDefaultJVMPath())
java.lang.System.out.println('hello world')
shutdownJVM()  # 关闭 java 虚拟机,或者python运行完会自动关闭

三、调用jar包(apktool.jar)里面的方法

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/9/23 13:59
# @Author  : HuJinqun
# @File    : apktool_util.py
# @Desc    :
import os
from jpype import *


class Apktool_util:
    apktool_dir = r'E:\python_newdemo\apktool'
    fremework_dir = os.path.join(r'E:\python_newdemo', 'media')

    def __init__(self, apktool='apktool2.3.4.jar', apkfile_path=None, out_path=None):
        self.apkfile_path = apkfile_path
        self.out_path = out_path
        apktool_path = os.path.join(self.apktool_dir, apktool)
        startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % apktool_path)

    # 获取 java 中的 File 对象
    def get_java_file(self, file_path):
        java_file_class = JClass('java.io.File')
        return java_file_class(file_path)

    # 反编
    def decode(self):
        decoder = JPackage("brut.androlib").ApkDecoder()
        decoder.setOutDir(self.get_java_file(self.out_path))
        decoder.setApkFile(self.get_java_file(self.apkfile_path))
        decoder.setFrameworkDir(self.fremework_dir)
        decoder.decode()

    # 回编
    def build(self):
        builder = JPackage('brut.androlib').Androlib()
        builder.apkOptions.frameworkFolderLocation = self.fremework_dir
        result_apk = os.path.join(self.out_path, 'dist', os.path.basename(self.apkfile_path))
        build_out_file = self.get_java_file(result_apk)
        builder.build(self.get_java_file(self.out_path), build_out_file)


if __name__ == '__main__':
    apk_path = r'C:\Users\Administrator\Desktop\123.apk'
    apktool_util = Apktool_util()
    apktool_util.apkfile_path = apk_path
    apktool_util.out_path = r'E:\python_newdemo\apktool000'
    # apktool_util.decode()
    apktool_util.build()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值