我试图访问Android 5.1(22)中隐藏的API,但我在编译项目时遇到了困难。我采取的步骤:
现在我收到了一个应用:processDebugResources错误:
错误:任务':app:processDebugResources'执行失败。
com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process' command' /Library/Android/sdk/build-tools/22.0.1/ AAPT''完成非零退出值1
即使在使用--stacktrace和--debug运行之后,错误并不是很明显。我此时已经阅读了整个互联网,试图找出问题所在,但没有运气。我的gradle文件是这样的:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "<ID>"
minSdkVersion 19
targetSdkVersion 22
versionCode 0
versionName "0.3"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
preDexLibraries = false /*Include these three statements to build app quickly (at least faster than before :p) */
javaMaxHeapSize "4g" // To avoid GC Limit Exception
jumboMode = true // To avoid GC Limit Exception
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:design:22.2.1'
compile 'com.android.support:recyclerview-v7:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.google.android.gms:play-services-location:6.5.87'
compile 'org.androidannotations:androidannotations-api:3.3.2'
apt 'org.androidannotations:androidannotations:3.3.2'
compile 'com.android.support:multidex:1.0.1'
}
我尝试过创建一个新项目并再次编译同样的错误,所以我很确定它不是设置/依赖项。我使用的是gradle build 1.2.3,我尝试过不同的版本,同样的错误。
此时我真的不知道还有什么可以尝试 - 非常感谢任何帮助!
答案 0 :(得分:0)
您可能真的想使用Reflection
来访问API。或构建自己的sdk,公开所需的API。 CyanogenMod和AOKP采用这种方法进行开发。
缺陷: 反思很慢,所以谨慎使用。
构建自己的sdk可能会有其他危险,例如破坏与现实世界设备的兼容性。另外请记住,OEM可以自由修改隐藏的API以满足他们的要求,因此隐藏的API可能不存在于所有设备上。 CyanogenMod可以这样做,因为他们在他们的固件上运行应用程序,因此他们知道API存在。