0

當我使用嵌入式Wear應用程序將APK推到手機上,然後轉到開始...,然後嘗試運行我的應用程序時,它會在手錶上崩潰。異常是一個ClassNotFoundException。無法在Wear設備上啓動嵌入式Wear應用程序的活動

09-18 14:53:17.678: E/AndroidRuntime(2391): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.myapp/com.myapp.WearActivity}: java.lang.ClassNotFoundException: Didn't find class "com.myapp.WearActivity" on path: DexPathList[[zip file "/data/app/com.myapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp-1, /vendor/lib, /system/lib]] 

我已經在我的可穿戴AndroidManifest.xml文件中聲明瞭這個活動。

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.DeviceDefault" > 

    <activity 
     android:name=".WearActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

我也仔細檢查過包名是否與上面聲明的一致,它的確如此。

在穿戴式模塊的build.gradle文件,我有proguard的關閉

buildTypes { 
    release { 
     runProguard false 
     signingConfig signingConfigs.release 
    } 
} 

真的不知道還有什麼會阻止OS查找該活動。有任何想法嗎?

+0

是'com.myapp'爲'WearActivity'類的有效包?請檢查'WearActivity'的位置。 – 2014-09-18 20:44:10

+0

在我的問題中,我已經提到我已經這樣做:) – styler1972 2014-09-18 20:45:09

+0

你沒有發佈你的活動類,所以只需要確保:)你說,你推動應用程序的手機,以便「應該」也安裝Android Wear。你確定最新版本的可穿戴應用程序實際安裝在手錶上嗎?也許有一些舊版本沒有'WearActivity'?嘗試從手錶中卸載它,看看它是否會被正確安裝。順便說一句:它是否工作時,你推可穿戴式apk(用調試密鑰簽名)直接觀看(不依靠從手機安裝已簽名的apk)?請告訴我 - 它會消除一些情況:) – 2014-09-18 21:00:34

回答

1

事實證明,下面的build.gradle條目是衝突的。

移動

compile 'com.google.android.gms:play-services:+' 
compile 'com.android.support:support-v4:20.0.0' 
compile 'com.android.support:appcompat-v7:20.0.0' 

磨損

compile 'com.google.android.support:wearable:+' 
compile 'com.google.android.gms:play-services-wearable:+' 


通過明確聲明的版本號,這個問題就走了。

移動

compile 'com.google.android.gms:play-services:5.0.77' 
compile 'com.android.support:support-v4:20.0.0' 
compile 'com.android.support:appcompat-v7:20.0.0' 

磨損

compile 'com.google.android.support:wearable:1.0.0' 
compile 'com.google.android.gms:play-services-wearable:5.0.77' 
+0

你有沒有注意到你的手錶實際上有更老的apk?可能這就是爲什麼它沒有一些預期的課程?對我來說,我面臨奇怪的問題...當我嘗試從手機卸載應用程序(它也卸載穿版),然後我安裝一個新的簽名的apk。但在手錶的自動安裝,它實際上安裝最後(舊)版本! 我也嘗試清除手機上的Android Wear應用程序的數據。只有當我在兩個設備上明確卸載應用程序並卸載Android Wear應用程序本身(負責連接手錶的應用程序)時,問題才解決。然後做一個全新的安裝! – Umair 2014-09-24 17:44:13

+0

我從來沒有注意到這一點,但我注意到,有時在應用程序通過藍牙將apk傳輸到可穿戴設備時,會有延遲。通常它會在成功安裝時退出舊應用程序。我也注意到,在Gradle中有錯誤,我通過'gradle --stop'修復,然後項目乾淨 – styler1972 2014-09-24 19:27:47

相關問題