小编Rap*_*ard的帖子

从本地aar创建的更新模块

这是我的设置:我有一个Android库,在导出时创建一个aar,我有一个使用该库作为模块的Android应用程序(这是导入本地aar文件的唯一方法).

要在我的Android应用程序中将aar文件作为模块导入,我单击File- > New Module...- > Import .JAR or .AAR Package然后选择我导出的aar文件.之后我只需要compile project在gradle文件中添加一行就可以使用我的库.

我经常更新我的库,因为我正在开发它,我想经常测试它.问题是我不知道如何更新我的Android应用程序项目中的模块...

我现在正在做的是我gradlew assembleRelease在我的android库项目中发出一个创建新的aar文件,然后在我的android app项目中我删除了Module Settings(或Project Structure)窗口中的模块,我删除了项目根目录下的模块文件夹然后我再次导入它.每次我想测试我的图书馆时,整个操作大约需要3分钟,我对此感到厌倦.你知道是否有更快的方法来更新从aar文件创建的android模块?

android-studio aar

18
推荐指数
1
解决办法
7140
查看次数

Android地理围栏API BroadcastReceiver未触发

我正在尝试使用Google Play服务中的geofencing api,但我无法设法让我的广播接收器触发其onReceive()方法.

看起来我尊重使其工作所需的一切,但我没有过渡事件.

  • 我在我的依赖项中包含了google play服务
  • 我请求ACCESS_FINE_LOCATION许可
  • BroadcastReceiver在我的Manifest中注册了我的导出值设置为"true"(有人说它是必需的)
  • 我想补充的地方,我(我与谷歌地图验证它放在我的手机)的确切位置一个大地理围栏与两个过渡类型,并没有过期
  • 我在地理围栏的中间尝试了一个精确的模拟位置,并在10秒后尝试了另一个地理围栏(我确保ACCESS_MOCK_LOCATION存在延迟)
  • 我确认我的手机位置已打开,其模式设置为高精度
  • 我验证了互联网连接
  • 添加地理围栏后,我尝试使用和不连接LocationClient

但是,我仍然获得了成功的onAddGeofencesResult()回调,但没有onReceive()回调.我尝试使用Nexus 5和Nexus 7,两者都无法触发地理围栏过渡.

我还尝试了https://developer.android.com/training/location/geofencing.html上的示例,但其行为完全相同.

这是我的BroadcastReceiver班级:

public class GeofencesReceiver extends BroadcastReceiver implements ConnectionCallbacks, OnConnectionFailedListener, OnAddGeofencesResultListener {
    private final static String TAG = "GeofencesReceiver";

    private Context context = null;
    private LocationClient locationClient = null;

    /**
     * An empty constructor is needed by the manifest.
     */
    @SuppressWarnings("unused")
    public GeofencesReceiver(){}

    public GeofencesReceiver(Context context){
        this.context = …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver geofencing google-play-services location-client

11
推荐指数
1
解决办法
3940
查看次数

Gradle无法解析Android Studio中的依赖项

我正在Android Studio上开发Android应用程序,有3个同事,最近,我们的项目不再构建了.我们都有不同版本的Android Studio(我的是0.2.8)并且它无法在所有版本上进行编译.我们无法找到导致问题的原因,因为它发生在我们所有人的不同时刻(奇怪的是,使用相同的项目版本,应用程序是在我的Android Studio上而不是在我的同事之上).

有时,Android Studio能够在打开项目时编译我的项目,但在我尝试运行应用程序时失败.但大多数时候,Android Studio在打开它时无法编译我的项目.

我没有错误来帮助我理解问题,只有后台任务的消息标题可以给我一些发生的事情:Gradle: Resolve dependencies ':_DebugApk'.这个后台任务永远不会完成,只是加载到时间结束.

我不知道它是否与build.gradle文件有关,但是在这里你可以找到错误的东西.

home = System.getenv("ANDROID_HOME")

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
    maven {
        url "http://maven.hq.couchbase.com/nexus/content/repositories/releases/"
    }

    maven {
        url "http://files.couchbase.com/maven2/"
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.android.support:appcompat-v7:18.0.+'
    compile 'com.google.android.gms:play-services:3.1.36'
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.couchbase.cblite:CBLite:1.0.0-beta'
    compile 'com.couchbase.cblite:CBLiteEktorp:1.0.0-beta'
    compile 'com.couchbase.cblite:CBLiteJavascript:1.0.0-beta'

    instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.3'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml' …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

9
推荐指数
1
解决办法
2万
查看次数

无法包含Showcase View lib

我在使用Android Studio的Android应用程序中包含ShowcaseView库时遇到问题.

在GitHub repo(https://github.com/Espiandev/ShowcaseView)上,它说它应该很容易与Maven一起安装.但是当我搜索showcaseview时,Maven没有找到结果.

所以我在我的计算机上克隆了repo并尝试将它的库文件夹作为我的项目模块依赖项中的java库包含在内.但是,当我尝试在我的代码中使用它时,它说

无法解析符号'ShowcaseView'

我的猜测是因为实际的ShowcaseView库没有因为错误而编译(克隆的repo在多个文件中显示错误

无法解析符号'R'

将NineOldAndroids添加为模块依赖项后的事件,如GitHub repo所示.

有什么我想念的吗?

github maven showcaseview android-studio

6
推荐指数
1
解决办法
1292
查看次数

如何将依赖包引用到像.aar文件这样的Android库中?

我有一个android-library插件,它使用几个包含.jar文件的android库,并直接从我的build.gradle文件中引用:

compile fileTree(dir: 'libs', include: '*.jar')
Run Code Online (Sandbox Code Playgroud)

然后我会发出一个gradlew assembleRelease命令来创建一个可以在Android应用程序中使用的.aar文件.到目前为止,这对我来说一直很好.

我现在需要在我的android-library中使用Google Play服务.正如官方Android文档(http://developer.android.com/google/play-services/setup.html#Setup)中所述,我需要将Google Play服务作为库项目包含在maven中导入:

compile 'com.google.android.gms:play-services:4.3.23'
Run Code Online (Sandbox Code Playgroud)

但是当我构建我的.aar文件时,Google Play服务似乎不包含在其中(我的.aar文件只有200kb,Google Play Services .jar库大于1mb).

我已经读过Google Play服务应该作为Android库模块引用,但我无法像没有编译错误那样导入它.有人可以帮我把Google Play服务打包到我的android-library中吗?

我的android-library build.gradle文件:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.android.gms:play-services:4.3.23'
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    release {
        runProguard false
    }
}
Run Code Online (Sandbox Code Playgroud)

我的android应用程序build.gradle文件:

buildscript {
    repositories { …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library google-play-services android-studio

6
推荐指数
0
解决办法
3012
查看次数

不能使用Robolectric的FakeHttpLayer(调用getFakeHttpLayer时为NullPointerException)

更新1

删除ServiceTestCase我的测试类的扩展后,我编辑了我的gradle文件以更改testInstrumentationRunnerorg.robolectric.RobolectricTestRunner但我得到另一个错误:

Running tests
Test running started
Test running failed: Instrumentation run failed due to 'java.lang.NoSuchMethodException'
Empty test suite.
Run Code Online (Sandbox Code Playgroud)

我搜索了谷歌,但我找不到为什么会收到此错误消息.这是整个gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "foo.bar.testappsdk"
        minSdkVersion 9
        targetSdkVersion 19

        testApplicationId "novom.anyware.anywaresdk.test"
        testInstrumentationRunner "org.robolectric.RobolectricTestRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'LICENSE.txt'
    }

    sourceSets {
        instrumentTest.setRoot('src/androidTest')
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile …
Run Code Online (Sandbox Code Playgroud)

java android robolectric

6
推荐指数
1
解决办法
938
查看次数

编译pod时"在框架模块中包含非模块化头"

我正在创建一个使用RestKit和一堆其他pod的pod.

当我使用命令编译我的pod时:

pod repo push myCocoapodsRepo myPodspec.podspec --allow-warnings --verbose
Run Code Online (Sandbox Code Playgroud)

我得到的第一个错误是

In file included from /var/folders/mx/cg3cmvh14wl2f3mnq0sc_cd00000gn/T/CocoaPods/Lint/Pods/RestKit/Code/ObjectMapping.h:21:
/var/folders/mx/cg3cmvh14wl2f3mnq0sc_cd00000gn/T/CocoaPods/Lint/Pods/RestKit/Code/ObjectMapping/RKObjectMapping.h:23:9: error: include of non-modular header inside framework module 'RestKit.RKObjectMapping' [-Werror,-Wnon-modular-include-in-framework-module]
#import "RKValueTransformers.h"
    ^
Run Code Online (Sandbox Code Playgroud)

如果我依赖其他StackOverflow线程来解决这个错误,比如

他们都会说,设置CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULESYES和/或将有问题的头文件中Public部分替代的Project部分,它会解决这个问题.但对我来说,事实并非如此.这些线程也有Swift语言的共同点,但我不使用它.我仍然只使用Objective-C,但我不知道它是否会对我的问题产生影响.

我不明白错误意味着什么,因此我解决问题有很多困难.有人有其他解决方案吗?

xcode objective-c restkit cocoapods

6
推荐指数
1
解决办法
1240
查看次数

无法通过Internet从PC服务器接收Android上的UDP数据

我目前正在探索Java中的UDP数据包传输,以在Android上创建多人游戏.我成功地通过使用通常的"127.0.0.1"在我的Nexus 4中交换数据包,并且我也成功地在我的本地网络中的PC服务器和我的Android客户端之间交换数据包.但由于我希望我的游戏可以在互联网上播放,我希望我的Android客户端能够在不在同一本地网络上时与我的PC服务器交换数据包.这是我在努力的地方.

我的设置:连接家庭互联网连接的PC服务器和连接3G网络的Nexus 4.

首先,我的PC服务器开始侦听端口10000,我的Android客户端打开一个套接字,以便在端口10001上接收服务器的数据包.然后,Android客户端将一个数据包发送到PC服务器,并将其发送到端口上的当前公共地址"173.246.12.125" 10000.PC服务器接收数据包并在端口10001上向发送方发送响应.但Android客户端从不接收响应.

这是我的PC服务器代码:

public class UDPServer {
    private final static int SERVER_PORT = 10000;
    private final static int CLIENT_PORT = 10001;

    public static void main(String[] args) {
        InetAddress clientAddr = null;
        DatagramSocket socket = null;
        try {
            //Initializing the UDP server
            System.out.println(String.format("Connecting on %s...", SERVER_PORT));
            socket = new DatagramSocket(SERVER_PORT);
            System.out.println("Connected.");
            System.out.println("====================");
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        }

        while(true){
            try {
                //Listening
                byte[] buf = new byte[1024];
                DatagramPacket packet = …
Run Code Online (Sandbox Code Playgroud)

java android udp

5
推荐指数
1
解决办法
7330
查看次数

如何在node.js中使用Passport访问序列化用户

我已经能够使用Passport进行身份验证,但我不知道如何访问序列化用户.我已经在几个地方读过访问它的方法是使用req.user但是当我尝试使用GET到/ hello时,它表示用户未定义...

这是我的app.js

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var authentication = require('./routes/authentication');
var content = require('./routes/content');
var posts = require('./routes/post.js');
var upload = require('./routes/upload.js');
var media = require('./routes/media.js');
var http = require('http');
var path = require('path');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var mongoConnectionString = 'mongodb://localhost/judgmental';
var User = require('./models/user.js');

mongoose.connect(mongoConnectionString, function(error) {
    if (error) {
        throw error;
    }
    console.log('Successfully connected to MongoDB');
});

var app = …
Run Code Online (Sandbox Code Playgroud)

session node.js passport.js

5
推荐指数
1
解决办法
1750
查看次数

如何正确解开服务

我有一个与BIND_AUTO_CREATE绑定到我的Activity的服务,并以START_STICKY开头.我没有显式调用startService().

由于当我的Activity被杀死并且onStop()方法不可行时,并不总是调用onDestroy()方法,因为当用户只需按下Home按钮时我不希望我的服务停止,我不知道何时取消绑定我的服务.

这是我的问题:

  1. 如果我希望我的服务在我的Activity活着时运行,并在我的Activity被杀死时停止,我应该在哪里取消绑定我的服务?

  2. 当前调用onDestroy()方法并调用unbindService()时,不会触发Service的onUnbind()方法.为什么?

service android bind ondestroy

5
推荐指数
1
解决办法
4688
查看次数