主活动的ClassNotFoundException-Android Studio 0.8.2
刚刚更新到Android Studio 0.8.2,当我的一个应用程序是用0.8.2构建的时,我突然在主活动的启动中发现ClassNotFoundException 该应用程序处于版本控制(Git)中,因此我检查了旧版本,它们现在在执行时表现出相同的症状,并且当使用0.8.1构建时,它们肯定工作正常 我尝试过干净的重建、gradle同步、手动删除build/and、.gradle/dirs、关闭和重新打开Android Studio等。我检查了我项目的各种旧版本,并在几个Android设备上测试了APK,调试和发布版本都可以100%再现这个问题 奇怪的是,虽然这个项目是100%可复制的,但我还有另一个项目,它的建设和执行都很好 我已经用apktool分离了Android Studio 0.8.2输出的APK,这个类肯定在那里主活动的ClassNotFoundException-Android Studio 0.8.2,android,android-studio,Android,Android Studio,刚刚更新到Android Studio 0.8.2,当我的一个应用程序是用0.8.2构建的时,我突然在主活动的启动中发现ClassNotFoundException 该应用程序处于版本控制(Git)中,因此我检查了旧版本,它们现在在执行时表现出相同的症状,并且当使用0.8.1构建时,它们肯定工作正常 我尝试过干净的重建、gradle同步、手动删除build/and、.gradle/dirs、关闭和重新打开Android Studio等。我检查了我项目的各种旧版本,并在几个Android设备上测试
$ pwd
/Users/ben/Development/go-android/Go/build/outputs/apk/Go-debug/smali/au/com/glassechidna/go/content
$ ls
AddTripFragment$1.smali CreateTripFragment$OnQueryTextListener$1.smali CreateTripFragment.smali MainActivity.smali
AddTripFragment.smali CreateTripFragment$OnQueryTextListener.smali GoActivity.smali TrainTimeFragment$1.smali
CreateTripActivity.smali CreateTripFragment$OnSuggestionListener.smali GoApplication.smali TrainTimeFragment.smali
CreateTripFragment$1.smali CreateTripFragment$StopCursor.smali MainActivity$PagerAdapter.smali TripFragment.smali
堆栈跟踪:
舱单:
Go/build.gradle[1]:
build.gradle[1]:
MainActivity.java[2]:
有什么想法吗
[1] 取自最早的一个提交,因为它的依赖性较少,等等,会造成混乱。但是,对于该提交,问题仍然是100%可重复的
[2] 只有声明。从CLI清理似乎解决了问题 感谢@yogurtearl为我指出了正确的方向 更新 由于运行了上面的gradlew命令,我现在可以在androidstudio中进行清理和构建。因此,Android Studio似乎没有正确清理,手动删除build/和.gradle/目录也不够 现在,我只需要理解为什么这是有效的,为什么Android Studio中的清洁和建筑没有 如果你知道任何其他地方的州gradle/gradlew商店可能是罪魁祸首,我很想通过评论听到 更新2 这个问题一直在我的Mac电脑上发生。我注意到,当我在Android Studio中构建时,“preDexDebug”任务生成了以下几个警告:
objc[49452]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
比较一个好的APK和一个坏的APK,我可以看到一些生成的DEX'd类在两个APK之间有很大的差异。不幸的是,我还不知道该问题的解决方案(我一直在使用CLI中的Gradle包装器进行构建)。MainActivity的包名确实是
au.com.glassechidna.go.content
?@matiash确实是()。正如我提到的,应用程序在升级到0.8.2之前构建并运行良好。我有很多旧的提交,它们都是在旧版本的Android Studio中编译和测试的,但现在由于相同的运行时异常而失败。它是否可以从命令行使用:./gradlew installApp?@yogurtearl“installApp”不是一个gradle任务,但是你给了我正确的方向,谢谢!现在,我只需要理解我发布的答案“为什么”起作用。对不起,我认为是这样。/gradlew installDebugBug向谷歌报告-我将我的jdk降级为7u25(在引入JavaLaunchHelper bug之前),现在已经解决了这个问题。
objc[49452]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.