Skip to content

Instantly share code, notes, and snippets.

@iflove
Last active August 8, 2022 12:52
Show Gist options
  • Save iflove/617fd010dccce2b5acea2bcc74815d32 to your computer and use it in GitHub Desktop.
Save iflove/617fd010dccce2b5acea2bcc74815d32 to your computer and use it in GitHub Desktop.
Android 日常
Android 日常记录
@iflove
Copy link
Author

iflove commented Feb 3, 2021

Gradle 摘要

Gradle环境配置

添加变量 GRADLE_USER_HOME 改变Gradle默认缓存目录
Android studio `path Variables` 添加 MAVEN_REPOSITORY变量 改变gradle 仓库资源(arr,jar)缓存地址
KOTLIN_BUNDLED  改变kotlin 构建缓存目录

Gradle依赖项学习总结

dependencies、transitive、force、exclude的使用与依赖冲突解决

gradle/gradlew 命令

  1. windows 使用 git bash 执行sh gradlew 乱码,添加参数--console plain 即可

@iflove
Copy link
Author

iflove commented Feb 3, 2021

仓库

阿里云

@iflove
Copy link
Author

iflove commented Mar 31, 2021

idea 打开日志文件 the file is too large
idea.max.intellisense.filesize=200000
idea.max.content.load.filesize=200000 #200MB

@iflove
Copy link
Author

iflove commented Apr 1, 2021

traces 分析

----- pid 716 at 2021-03-25 15:17:17 -----
Cmd line: system_server
Build fingerprint: 'Haitianxiong/rk3288/rk3288:7.1.2/NHG47K:userdebug/test-keys'
ABI: 'arm'
Build type: optimized
Zygote loaded classes=4377 post zygote classes=3123
Intern table: 43040 strong; 3798 weak
JNI: CheckJNI is off; globals=1324 (plus 187 weak)
Libraries: /system/lib/libandroid.so /system/lib/libandroid_servers.so /system/lib/libcompiler_rt.so /system/lib/libjavacrypto.so /system/lib/libjnigraphics.so /system/lib/libmedia_jni.so /system/lib/libsoundpool.so /system/lib/libwebviewchromium_loader.so /system/lib/libwifi-service.so libjavacore.so libopenjdk.so (11)
Heap: 32% free, 7MB/11MB; 123377 objects

Zygote loaded classes:加载class状况
Intern table: intern和字符串字面量常量统计
JNI:CheckJNI调试工具状态 ,root 设备 setprop dalvik.vm.checkjni true 开启,stop start
Libraries:加载so列表
虚拟机堆会动态扩展,11MB代表堆扩展到的大小,7MB代表在堆上使用的大小,32%自然就是使用的大小, 123377就是创建的对象

Total time spent in GC: 1.788s                                                      #在GC中花费的总时间
Mean GC size throughput: 45MB/s                                               #平均GC 流量速度大小
Mean GC object throughput: 653080 objects/s                           #平均GC 对象流量大小
Total number of allocations 1291143                                           #进程创建到现在一共创建的对象数
Total bytes allocated 89MB
Total bytes freed 82MB
Free memory 3MB
Free memory until GC 3MB
Free memory until OOME 504MB
Total memory 11MB
Max memory 512MB                                                                #还能扩展多少内存达到
Zygote space size 1644KB
Total mutator paused time: 52.998ms
Total time waiting for GC to complete: 136.791us
Total GC count: 45
Total GC time: 1.788s
Total blocking GC count: 1
Total blocking GC time: 23.776ms

@iflove
Copy link
Author

iflove commented Apr 1, 2021

keytool

修改签名文件别名,能正常覆盖安装apk

keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey

@iflove
Copy link
Author

iflove commented May 24, 2021

andoid build.gradle 例子 ,学习网上开源项目,以及平时项目中用过的

android {
  //定义ndk 版本,巧用环境变量和gradle.properties文件
  ndkVersion = System.getenv("JITPACK_NDK_VERSION") ?: project.properties.ndkVersion
  //默认配置
  defaultConfig {
    
    //清单文件占位符
    manifestPlaceholders.TERMUX_PACKAGE_NAME = "com.termux"
    //指定 ABI,打包apk,相关ABI库放入其中
    ndk {
      // Specifies the ABI configurations of your native
      // libraries Gradle should build and package with your app.
      abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
                   'arm64-v8a'
    }
    
    //关联到您的原生库. 指定可选配置:只能为 CMake 或 ndk-build 指定可选参数和标记。
    externalNativeBuild {
      //ndkBuild块; 二选一
      ndkBuild {
      	cFlags "-std=c11"
      }
      //CMake块;二选一
      cmake {

        // Passes optional arguments to CMake.
        arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang"

        // Sets a flag to enable format macro constants for the C compiler.
        cFlags "-D__STDC_FORMAT_MACROS"

        // Sets optional flags for the C++ compiler.
        cppFlags "-fexceptions", "-frtti"
      }
    }
    
  }
  //打包配置
  packagingOptions {
  //so 文件不压缩
  doNotStrip "**/*.so"
  }
  
	//关联到您的原生库. 使用 cmake 或 ndkBuild 块对其进行配置:
  externalNativeBuild {
    //ndkBuild块; 二选一
  	ndkBuild {
      path "src/main/cpp/Android.mk"
    }
    //CMake块;二选一
    cmake {
    	path "CMakeLists.txt"
    }
	}
	
	//构建多个APK 不限篇幅请参考官方(https://developer.android.com/studio/build/configure-apk-splits) 
	splits {
    abi {
    	//是否多个apk
      enable gradle.startParameter.taskNames.any { it.contains("Debug") }
      reset ()
      include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
      //是否需要生成通用 APK
      universalApk true
    }
  }
  
  //签名文件配置
  signingConfigs {
        debug {
            storeFile file('dev_keystore.jks')
            keyAlias 'alias'
            storePassword 'xrj45yWGLbsO7W0v'
            keyPassword 'xrj45yWGLbsO7W0v'
        }
  }
	
	 lintOptions {
   		disable 'ProtectedPermissions'
   }

   testOptions {
     unitTests {
     includeAndroidResources = true
     }
   }
   
}

task versionName {
  doLast {
    print android.defaultConfig.versionName
  }
}

//在 Project 配置结束后调用
afterEvaluate {
  android.applicationVariants.all { variant ->
    variant.javaCompileProvider.get().dependsOn(downloadBootstraps)
  }
}

@iflove
Copy link
Author

iflove commented Jun 26, 2021

java 命令

jar xvf test.jar
jar cvf filename.jar a.class b.class: 压缩指定文件;
jar cvf weibosdkcore.jar *: 全部压缩;

@iflove
Copy link
Author

iflove commented Jul 5, 2021

反编译

安卓应用的安全和破解

FDex2

FDex2_1.1.apk
链接:https://pan.baidu.com/s/1End0Ki1FPCSSsHfXn6Etqw
提取码:u9rx
--来自百度网盘超级会员V1的分享

VirtualXposed

VirtualXposed:无需root手机即可使用Xposed框架

脱壳

Android9.0 不支持!
首先,将VirtualXposed、FDex2和需要脱壳的应用都安装到手机上。然后,启动VirtualXposed,并在VirtualXposed中安装FDex2。
然后,在VirtualXposed中选择模块管理激活FDex2。
在VirtualXposed中安装要脱壳的应用,具体和上面的步骤一样。然后,启动VirtualXposed中的FDex2,并配置要脱壳的应用。
在VirtualXposed中运行要脱壳的应用,脱壳后的dex文件如下图:
然后,使用adb pull命令将脱壳后的dex文件导出到电脑。

GDA

GDA主页-中国首款交互式Android反编译器

Luyten

Java 反编译工具Luyten

classyshark

ClassyShark - APK 分析利器
java -jar /Users/system/Downloads/ClassyShark.jar

smalidea

smalidea is a smali language plugin for IntelliJ IDEA/Android Studio
idea 下调试smali的插件工具

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment