Android Wear 应用不是从移动包安装的

Android Wear app not installing from the mobile package

是的,我已按照所有其他说明和链接进行操作。我的可穿戴应用肯定会与移动应用打包,但不会安装。

mobile.apk 的调试版本为 4.9MB,wear.apk 的调试版本为 1.9MB。当我构建签名发布版本时,mobile.apk 是 5.8MB,所以我相信打包正在发生。

当我在手持设备上执行 mobile.apk 的 adb install 时,在手持设备的 logcat 中出现以下错误(应用程序包是 com.pipperpublishing.refwatch所以请注意第二个错误中奇怪的 refwatch-1 引用):

01-27 07:49:59.129 8729-8729/? W/System.err: android.content.pm.PackageManager$NameNotFoundException: com.pipperpublishing.refwatch
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:303)
01-27 07:49:59.129 8729-8729/? W/System.err:     at com.samsung.aasaservice.AASAUpdateReceiver.onReceive(AASAUpdateReceiver.java:33)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2948)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.app.ActivityThread.access00(ActivityThread.java:172)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1498)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.os.Looper.loop(Looper.java:145)
01-27 07:49:59.129 8729-8729/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5835)
01-27 07:49:59.129 8729-8729/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
01-27 07:49:59.129 8729-8729/? W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
01-27 07:49:59.129 8729-8729/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
01-27 07:49:59.129 8729-8729/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)


01-27 07:50:54.219 771-11243/? W/System.err: java.io.FileNotFoundException: /data/app/com.pipperpublishing.refwatch-1: open failed: EISDIR (Is a directory)
01-27 07:50:54.239 771-11243/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:456)
01-27 07:50:54.239 771-11243/? W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:76)
01-27 07:50:54.239 771-11243/? W/System.err:     at android.content.pm.PackageParser.getHashValueOfPackage(PackageParser.java:5141)
01-27 07:50:54.239 771-11243/? W/System.err:     at com.android.server.pm.PackageManagerService.saveHash(PackageManagerService.java:18383)
01-27 07:50:54.239 771-11243/? W/System.err:     at com.android.server.pm.PackageManagerService.access00(PackageManagerService.java:329)
01-27 07:50:54.239 771-11243/? W/System.err:     at com.android.server.pm.PackageManagerService.run(PackageManagerService.java:18368)
01-27 07:50:54.239 771-11243/? W/System.err: Caused by: android.system.ErrnoException: open failed: EISDIR (Is a directory)
01-27 07:50:54.239 771-11243/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:446)
01-27 07:50:54.239 771-11243/? W/System.err:    ... 5 more

我已经尝试过将手表恢复出厂设置、重新同步等等。有什么想法吗?

这是我的手机build.gradle

apply plugin: 'com.android.application'


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.pipperpublishing.refwatch"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 203
    versionName "0.2.03"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
 }

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
wearApp project(':wear')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:design:23.1.1'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-auth:8.4.0'
 }
 apply plugin: 'com.google.gms.google-services'

和我的 "wear" build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
    applicationId "com.pipperpublishing.refwatch"
    minSdkVersion 21
    targetSdkVersion 23
    versionCode 203
    versionName "0.2.03"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        debuggable true
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:1.3.0'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:support-v13:23.1.1'
compile 'com.google.android.gms:play-services-wearable:8.4.0'
compile 'com.google.android.gms:play-services-auth:8.4.0'
}
apply plugin: 'com.google.gms.google-services'    

只有使用发布的.apk 文件才会自动安装穿戴应用程序。它不会使用调试密钥工作。

如果应用程序是使用释放密钥签名的,则检查该应用程序是否已存在于android磨损设备中。

因此,经过多次卸载和重新安装,但未更改任何代码,安装现在可以正常进行。有时我必须 "Resync applications" 才能看到 phone 上的变化。整个过程看起来很笨拙。