我正在尝试通过Android手机安装可穿戴应用程序,使用此处找到的"使用Android Studio方法打包" ,但它无效.apk永远不会安装到可穿戴设备上.这是logcat输出:
07-28 15:11:54.107 766-820/? W/PackageManager? Unknown permission com.google.android.wearable.READ_SETTINGS in package com.google.android.gms
07-28 15:11:54.117 766-820/? W/PackageManager? Not granting permission com.google.android.gm.permission.AUTO_SEND to package com.google.android.wearable.app (protectionLevel=2 flags=0x88be44)
07-28 15:11:54.117 766-820/? W/PackageManager? Not granting permission android.permission.MEDIA_CONTENT_CONTROL to package com.google.android.wearable.app (protectionLevel=18 flags=0x88be44)
07-28 15:11:55.047 632-632/? D/WearablePkgInstaller? Got PackageUpdateReceiver message Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:my.package.name flg=0x4000010 cmp=com.google.android.wearable.app/com.google.android.clockwork.companion.packagemanager.PackageUpdateReceiver (has extras) }
07-28 15:11:55.177 632-632/? D/WearablePkgInstaller? Got PackageUpdateReceiver message Intent { act=android.intent.action.PACKAGE_ADDED dat=package:my.package.name flg=0x4000010 cmp=com.google.android.wearable.app/com.google.android.clockwork.companion.packagemanager.PackageUpdateReceiver (has extras) }
Run Code Online (Sandbox Code Playgroud)
作为旁注,我能够手动打包(也在上面的链接中描述),当我在手机上运行时,apk安装在可穿戴设备上.我正在使用buildToolsVersion 20.0.0,我正在运行Android Studio 0.8.2并且在我的手机模块的build.gradle中有这一行:
wearApp project(':wearable') …Run Code Online (Sandbox Code Playgroud) 根据文档:打包可穿戴应用程序我使用以下代码:
dependencies
{
compile 'com.google.android.gms:play-services:5.0.+@aar'
compile 'com.android.support:support-v4:20.0.+''
wearApp project(':wearable')
}
Run Code Online (Sandbox Code Playgroud)
我使用Generate Signed APK生成了发布版本.我第一次安装apk时,安装了android的应用程序正确地按需要运行.
我从手机上卸载了应用程序.android Wear应用程序也可以在没有任何问题的情况下卸载,但是如果我再次在我的手机中安装应用程序,我在android中看不到应用程序.我不确定为什么会这样.我已尝试使用与android兼容的不同应用程序,这些工作正常.再次安装和卸载安装,我可以在android Wear模拟器上看到它们.
这是我的Application文件夹中的build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "com.ysk.notes"
minSdkVersion 9
targetSdkVersion 20
versionCode 3
versionName "1.02"
}
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies
{
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':FacebookSDK')
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/mail.jar')
compile 'com.google.android.gms:play-services:5.0.+@aar'
compile 'com.android.support:support-v4:20.0.+'
wearApp project(':Wearable')
configurations
{
all*.exclude group: 'com.android.support', module: …Run Code Online (Sandbox Code Playgroud) 我试图在我现有的应用程序中添加一个磨损模块,尝试了很多解决方案,但无法弄清楚为什么我的应用程序没有安装在我的手表上.
我尝试了什么:
首先,使用我的应用程序手动打包:https://developer.android.com/training/wearables/apps/packaging.html
但我很快就决定不通过这个.
然后我决定去gradle include,所以对于app的build.gradle,我将以下内容添加到依赖项的末尾:
debugWearApp project(path:':wear', configuration: 'flavor1Debug')
releaseWearApp project(path:':wear', configuration: 'flavor1Release')
Run Code Online (Sandbox Code Playgroud)
对于build.gradle的磨损,我在依赖的开头添加了以下内容:
wearApp project(':wear')
Run Code Online (Sandbox Code Playgroud)
然后,在android{}build build.gradle的部分,之后buildToolsVersion,我添加了以下内容:
publishNonDefault true
Run Code Online (Sandbox Code Playgroud)
我所看到的:
然后,当我安装一个生成我的应用程序的发布版本时,我可以看到它已经添加了一个文件android_wear_micro_apk.apk到res/raw这是我的手表应用程序.我还在res/xml中看到了一个文件android_wear_micro_apk.xml,我猜想在hexa代码之间,有一个穿戴app的描述.
然后我比较签名:
keytool -list -printcert -jarfile mobile_app.apk
keytool -list -printcert -jarfile wear_app.apk
Run Code Online (Sandbox Code Playgroud)
使用res/raw中生成的磨损应用程序.它们完全具有相同的签名.然后我比较:
aapt dump badging mobile_app.apk
aapt dump badging wear_app.apk
Run Code Online (Sandbox Code Playgroud)
它们具有完全相同的包名称和版本代码和名称.
所以,从那个:
我真的很想知道我能忘记什么.
谢谢你的帮助