Androd开发:私密字符串加密保存在So库(针对APG7.0 升级)

Orca.so

GitHub地址,欢迎Stars

未经允许禁止转载

一、迟来的更新

一年前的一篇文章 Androd开发:保存私密字符串到So库 – (juejin.cn) 这github中文官网网页个虽然没什么人用,可是根据项目已在正式项目上运用,加上Android Build Gradle 7.0+ 部分改动,为了适配后Kotlin续的版本,我仍是决定更一下新功能Kotlin

二、KotlinGradle 7.0+变动对kotlin匿名函数咱们的影响

1github直播平台永久回家、BaseVariant过时了

曾经咱们Task任务等特点都需要在graldeafterEvaluate办法履行之后才giti轮胎干获取到很多giti轮胎安卓对应的特点 现在咱们能够换到下列这个办法下获取,例如区别giteedebug或许release

project.extensions.getByType(AndroidComponentsExtension::class.java).onVariants {}

2、registerJ字符间距在哪里设置avaGenerateTask这个任务没了,然后新的办法不太灵敏

其实咱们能够在这里找到挨近的新办法:
gradle-recipes/build.gradle.kts at agp-7.3 android/gradle-recipes (github.ckotlin怎么读om)
可是根据操作灵敏咱们就自己写Task吧,其实就是生成好JAVA的代码然后把路径添加到SourceSet即可

project.extensions.getByType(AndroidComponentsExtension::class.java)
    .apply {
        beforeVariants {
            android.sourceSets{
                val outputDir = File(project.buildDir, "/generated/source/orca/${it.name}")
                findByName(it.name)?.apply {
                    println("add sourceSet path = $outputDir")
                    java.srcDir(outputDir)
                    kotlin.srcDir(outputDir)
                }
            }
        }
        onVariants {
            //创立其他任务
        }
    }

3、涉及到NDK编译时候 generateJsonModel 需要改字符间距在哪里设置为 configureCMake

经过编译其实不难发现generateJsonModel不再被运kotlin语言用,而是采用了configureCMake针对arm架构的分类Task 此处具体不展开,有爱好的同学能够留言kotlin和java区别

configureCMake [task ':app:configureCMakeDebug', task ':app:configureCMakeDebug[arm64-v8a]']

三、经过ASM修正字节码,完成经过注解变量然后字符是什么反射注入对应加密的github直播平台永久回家kotlin匿名函数符串字符间距怎么加宽内容。

有意思的github直播平台永久回家是现在新的修正办法比曾经通俗好理解,注册Transformandroid手机办法也变了。

project.extensions.getByType(AndroidComponentsExtension::class.java).apply {
    this.onVariants { variant ->
        projectName = project.name
        variant.instrumentation.transformClassesWith(
            ClassVisitorFactory::class.java,
            InstrumentationScope.PROJECT
        ) {}
        variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES)
    }
}

四、新功能运用办法

:app or :library
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'Orca'
    id 'Orca-compiler'
}
dependencies{
    implementation("com.github.ShowMeThe.Orca:orca-annotation:2.3.0")
}

根目录下的 build.gradle 引入行插件

buildscript{
       dependencies {
        classpath("com.github.ShowMeThe.Orca:plugin:2.3.0")
        classpath("com.github.ShowMeThe.Orca:orca-compiler:2.3.0")
    }
}

在项目中只需要简略github直播平台永久回家注解:

class AndroidViewModel(application: Application) : AndroidViewModel(application) {
    @CoreDecryption("data")
    private var data = ""
    @CoreDecryption("base")
    private var data2 = ""
    fun getValue() = data
    fun getValue2() = data2
}
履行对应的viewModel.getValue()即可

五、总结一下

其实这次版本的适配难度不算大,可是也花了点时间阅读文档,总归这些常识仍是需要平常堆集,上班作业基本上都是针对事务类型开发,偶然花点时间学一下新内容,不能让自己被技能的扔掉啊。

ShowMeThe/Orca: A easy way to store secret string value data in .so fil字符间距加宽2磅e byGitHub adding plugin (github.com)