Android.mk文件,用于使用UpdateEngine(SystemApi)

时间:2018-11-04 12:43:22

标签: android android-source

我找到了使用OTA更新的示例。但是我需要使用android.os.UpdateEngine

这是SystemApi,我找到了这个question on StackOverFlow,答案被写入android.mk文件LOCAL_SDK_VERSION := system_current

我以前从未使用过android.mk文件,所以我创建了它并将其放到app / android.mk

这就是我的android.mk文件中的全部内容:

LOCAL_PATH := $(call my-dir)
LOCAL_SDK_VERSION := system_current

我也将其添加到build.gradle文件中(我没有在我的应用程序中使用NDK,但是我不知道使用android.mk文件的另一种方式)

sourceSets.main {
        jniLibs.srcDir 'src/main/libs' //set libs as .so's location instead of jniLibs
        jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk
    }
externalNativeBuild {
        ndkBuild {
            path 'Android.mk'
        }
    }

但是无论如何,当我写import android.os.UpdateEngine时,我得到了无法解析符号“ UpdateEngine”

我试图在Google Stack上搜索,但找不到解决方案。

1 个答案:

答案 0 :(得分:1)

我通过使用此仓库中经过修改的android.jar文件,使它在没有Makefile或NDK的情况下工作:https://github.com/anggrayudi/android-hidden-api

下载适当的android.jar文件,并将其放在项目中的app / libs-sdk中。

将以下依赖项添加到您的应用程序build.gradle文件中:

compileOnly fileTree(include: ['*.jar'], dir: 'libs-sdk')

在顶层build.gradle文件中添加以下代码,以使Android Studio使用修改后的android.jar。

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:/android.jar')
        }
    }
}

完成这些步骤后,我可以从项目中访问android.os.UpdateEngine类。 无法解决的唯一问题是访问某些SystemApi方法(而非类),例如RecoverySystem#verifyPackageCompatibility。