zoukankan      html  css  js  c++  java
  • 修改smali文件,重打包,实现调用第三方SO文件

    Java代码:

    static{
            // //loadlibary里 要把SO文件名的lib和后缀去掉。libfgma.so --> fgma
            System.loadLibrary("fgma"); 
        }

    对应Smali:

    # direct methods
    .method static constructor <clinit>()V
        .locals 1
    
        .prologue
        .line 15
        const-string v0, "fgma"
        invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
    
        .line 16
        return-void
    .end method

    对so中函数的声明:

    public native String GetLocalPort();

    对应Smali:

    # virtual methods
    .method public native GetLocalPort()Ljava/lang/String;
    .end method

    调用:

    String str = GetLocalPort();
    Toast.makeText(this, str, Toast.LENGTH_LONG).show();    

    对应Smali:

    .line 23
     invoke-virtual {p0}, Lcom/dit/mobile/android/fgma3/Mary;->GetLocalPort()Ljava/lang/String;
     move-result-object v0
    
     .line 25
     .local v0, "str":Ljava/lang/String;
     const/4 v1, 0x1
    
     invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
     move-result-object v1
     invoke-virtual {v1}, Landroid/widget/Toast;->show()V
  • 相关阅读:
    架构师之路
    责任链设计模式
    Junit框架分析
    线程详解
    课程总结
    IO流
    Java第四次作业
    Character string
    实训
    实训SI
  • 原文地址:https://www.cnblogs.com/xunbu7/p/4342316.html
Copyright © 2011-2022 走看看