我的android工作室项目正在编译,但有一个恼人的问题.Android工作室给了我这个警告:
包名称与文件路径不对应
在源代码中声明的文件路径是类似的,com.example.<classes>
但它要求我将其重命名为main.src.com.example.<classes>
当我这样做时,它不再编译.
我的源代码在src/main/src文件夹中.我build.gradle包含这个
sourceSets {
main {
java.srcDirs = ['src']
}
instrumentTest.setRoot('tests')
}
Run Code Online (Sandbox Code Playgroud) 我正在使用pubnub作为Android应用程序和服务器之间的发布/订阅通道.目前我正在考虑如何实现这一点.
我正在使用提供的用于android的库(https://github.com/pubnub/pubnub-api/tree/master/android),但我认为如果我现在使用它就会有一些应用程序生命周期问题.(如我错了请纠正我)
我正在考虑将其作为一项服务来实施
我想要的是
该服务必须在最后一次使用应用程序后继续运行一小时(可协商).这是因为我们希望在收到消息时收到通知,但该应用程序不是当前使用的应用程序.
如何在应用程序非活动一小时后停止服务?可能Android会杀了它,但我想要一些控制权.
当特定消息进入时,服务必须能够触发应用程序更改其界面(当我们收到pubnub消息时,我正考虑从服务发送意图?),pubnub会将数据发送到服务,所以我需要一种方式将此数据传递给应用程序(可能将其保存在意图中的Bundle中?)
我需要收听多个pubnub频道(同时最多2个),我想我必须在这个服务的多个实例中这样做吗?
我想我会这样做:
创建应用启动时启动的服务
让服务收听pubnub频道
当收到消息时,发送意图并使用意图过滤器
实现broadcasthandlers来监听这些内部意图
这是正确的方法吗?任何提示?
我刚刚将我的android SDK工具更新到新发布的版本(工具版本22,平台工具版本17)
但是现在我在构建应用程序时遇到了一些问题.该应用程序仍然启动,但它给了我这个例外:
java.lang.NoClassDefFoundError: com.google.analytics.tracking.android.EasyTracker
Run Code Online (Sandbox Code Playgroud)
它在这一行有例外:
EasyTracker.getInstance().setContext(this);
Run Code Online (Sandbox Code Playgroud)
在SDK工具更新之前,它工作正常,libGoogleAnalyticsV2 jar位于构建路径中的libs文件夹中,应该如此.
Git告诉我,在构建时,eclipse在类路径中添加了这一行:
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
Run Code Online (Sandbox Code Playgroud)
这是我看到的唯一区别
是什么原因引起了这个?
我正在尝试从eclipse切换到android studio以进行我的android开发.但是,我仍然没有找到导入现有项目的正确方法.我不知道它是否重要:但我正在使用mac
我在eclipse中执行了导出步骤,在Android Studio中导入了这个gradle构建,但是当我尝试构建我的项目时,它给了我这个错误:
Gradle:
FAILURE: Could not determine which tasks to execute.
* What went wrong:
Task 'assembleDebug' not found in project ':ProjectName'.
* Try:
Run gradle tasks to get a list of available tasks.
Could not execute build using Gradle installation '/Users/<username>/Development/Build/gradle-1.6'.
Run Code Online (Sandbox Code Playgroud)
这是eclipse给我的build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.+'
}
}
apply plugin: 'android'
dependencies {
compile project(':ProjectName:library:ActionBarSherlock')
compile project(':ProjectName:library:facebook')
compile files('../../../../../../../ProjectName/libs/gcm.jar')
compile files('../../../../../../../ProjectName/libs/libGoogleAnalyticsV2.jar')
compile files('../../../../../../../ProjectName/libs/commons-lang3-3.1.jar')
compile files('../../../../../../../ProjectName/libs/actionbarsherlock-plugin-maps-4.2.0.jar')
compile files('../../../../../../../NiteOwl/libs/volley.jar')
compile project(':ProjectName:library:PullToRefresh')
compile project(':ProjectName:library:google-play-services_lib') …Run Code Online (Sandbox Code Playgroud) 我在Android上使用geofences,它在大多数手机上都运行正常,但在其中一些手机上,它只是不起作用(在我的错误日志中显示"geofences not available").
某些用户没有为Google Play服务启用位置跟踪功能.我认为这就是地理围栏无法在手机上运行的原因.(对?)
现在我想要一种检测方法.(告知用户并最终告诉他们如何修复它)我知道有一种方法可以知道谷歌播放服务是否可用(我已经这样做了),但这并没有说明启用的位置服务或不.
我知道我可以在添加或删除地理栅栏时检查它,它有一个错误代码(地理位置不可用位置状态代码),但这还不够.有些用户在添加地理围栏后会禁用位置服务.然后我无法知道这一点,我的应用程序将无法正常工作.(抱怨用户等).至少我必须在用户打开应用程序时通知用户检查错误.
有人知道如何做到这一点吗?我现在能做的最好的事情是在应用程序启动时添加和删除虚拟地理围栏,但必须有更好的方法吗?
编辑:我用一个有问题的设备测试它,删除应用程序并重新安装似乎解决了问题.我在第一次开机时没有做任何特别的事情,所以这真的很奇怪.看起来谷歌播放服务连接存在问题,重新安装该应用程序会对这些服务做一些特别的事情.这可能吗?连接它们时没有错误,但是当我尝试设置地理围栏时(见上文).