我是ANDROID_ID ( Studio 23)的新手,我试图通过在ANDROID_ID中获得这个职位的最高答案来获得它。
导入'secure‘类后,当我尝试下面建议的答案时,会得到“无法解决方法getContext()”警告:
private String androidId = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);
我做了一些调查,认为getApplicationContext()值得一试:
private String androidId = Secure.getString(getApplicationContext().getContentResolver(),Secure.ANDROID_ID);
我没有收到任何警告,该应用程序构建成功。但是,如果我尝试在连接的设备上运行它,它会崩溃,导致以下错误(概述):
java.lang.NoClassDefFoundError:失败的决议: Lcom/google/android/gms/R$string; 在com.google.android.gms.measurement.zza.(Unknown源代码中) ..。 由: java.lang.ClassNotFoundException:没有在path上找到类"com.google.android.gms.R$string“:DexPathList[zip文件"/data/app/application.myproject/base.apk",nativeLibraryDirectories=/com.google.android.gms.R$string/lib,/system/lib] ..。 原因: java.lang.NoClassDefFoundError:未使用引导类加载程序找到类;没有可用堆栈
当我手动指定androidId字符串时,该应用程序不会崩溃:
private String androidId = "This works";
任何帮助都将不胜感激。
发布于 2016-03-07 15:03:43
多亏了这个职位,问题得以解决。
在这种情况下,错误似乎是由过度依赖 (>65k)方法引起的。更正如下:
步骤1
修改gradle.build (app)以引用MultiDexApplication类
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
...
multiDexEnabled true
}
...
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
}
步骤2
将以下属性添加到清单文件中的应用程序标记:
<application
...
android:name="android.support.multidex.MultiDexApplication">
发布于 2020-07-25 21:42:44
您可能包含字符串名称中的下划线,删除下划线.后检查它
https://stackoverflow.com/questions/35824829
复制