使用android studio编写自己的app时,会出现想要获取系统属性,所以使用了SystemProperties类,单输入后是红色的,导入android.os.SystemProperties 类也不行。会在编译的时候提示找不到。这种情况下是没找到这个类。
解决办法:
导入sdk 中的layoutlib.jar包
因为是只要让apk编译成功即可,在运行的时候不需要使用,所以我们导包时使用provided
Android Studio 在/app/build.gradle 添加这段代码到末尾
String SDK_DIR = System.getenv("ANDROID_SDK_HOME")
if (SDK_DIR == null) {
Properties props = new Properties()
props.load(new FileInputStream(project.rootProject.file("local.properties")))
SDK_DIR = props.get('sdk.dir');
}
dependencies {
provided files("${SDK_DIR}/platforms/android-20/data/layoutlib.jar")
}
参考:app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.text.recylecountryselect"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:recyclerview-v7:27.1.0'
}
String SDK_DIR = System.getenv("ANDROID_SDK_HOME")
if (SDK_DIR == null) {
Properties props = new Properties()
props.load(new FileInputStream(project.rootProject.file("local.properties")))
SDK_DIR = props.get('sdk.dir');
}
dependencies {
provided files("${SDK_DIR}/platforms/android-24/data/layoutlib.jar")
}
provided files("${SDK_DIR}/platforms/android-24/data/layoutlib.jar")
这个路径中,需要确定android-24/data/layoutlib.jar 中有android/os/systemProperites.class 。如果没有,可以在其他版本中查找,如adnroid-21,有的话把这个替换成android-21.
本文参考的文章:https://blog.csdn.net/wds1181977/article/details/74605036
感谢作者。