小编fro*_*mcs的帖子

通过Gradle和Android Studio构建和运行应用程序比通过Eclipse慢

我有一个多项目(~10个模块),每次建筑大约需要20-30秒.当我在Android Studio中按Run时,我必须每次都等待重建应用程序,这非常慢.

是否可以在Android Studio中自动化构建过程?或者您对如何更快地完成此过程有任何建议?

在Eclipse中,由于自动构建,在模拟器上运行相同的项目大约需要3-5秒.

这是我的build.gradle文件(app模块):

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle

456
推荐指数
13
解决办法
22万
查看次数

Android Facebook锁屏通知

在Android应用程序的最新版本Facebook上显示锁定屏幕通知功能,就像在这个截图上:

截图

有没有人试图实现这个?

我知道在锁定屏幕上显示Activity很简单,但遗憾的是它不适用于半透明背景.基本上它工作,但在我们的活动下面,我们看到启动器屏幕,而不是锁定屏幕(在这种情况下像锁屏也将是透明的).

我现在尝试的是:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

在我的活动中.

我也试过这个例子:https://gist.github.com/daichan4649/5352944

正如我所描述的 - 一切正常但没有透明度.

根据我的观察,Facebook使用主题:

@android:style/Theme.Translucent.NoTitleBar
Run Code Online (Sandbox Code Playgroud)

并且没有许可:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
Run Code Online (Sandbox Code Playgroud)

此外,我注意到锁定屏幕通知会获取触摸,因此我们无法通过手势显示状态栏中的通知.

任何想法如何在Android L发布之前创建这种通知.

notifications android facebook lockscreen

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

AppInvites"安装"链接无法打开应用程序

它不时发生,也是谷歌的示例应用程序(https://github.com/googlesamples/google-services/tree/master/android/appinvites).应用程序安装在设备上,但不是打开应用程序,"安装"链接:

  • 在Lollipop及更早版本上打开网页浏览器,而不是建议"使用Play商店打开"
  • 坚持使用Marshmallow上的电子邮件客户端(Gmail).似乎发生了一些事情(状态栏闪烁)但没有打开应用程序.

这些是来自Marshamallow的日志(似乎Google apis返回了一些401):

09-10 08:14:12.692      795-813/? I/ActivityManager? Displayed 

com.google.android.gms/.appinvite.AppInviteAcceptInvitationActivity: +92ms
09-10 08:14:12.714  23045-23082/? E/Surface? getSlotFromBufferLocked: unknown buffer: 0xa96e4530
09-10 08:14:12.752      795-804/? I/art? Background partial concurrent mark sweep GC freed 599(43KB) AllocSpace objects, 0(0B) LOS objects, 30% free, 35MB/51MB, paused 2.199ms total 171.864ms
09-10 08:14:12.875  23045-23093/? E/Volley? [20360] BasicNetwork.performRequest: Unexpected response code 401 for https://www.googleapis.com/plusdatamixer/v1/mutateonekey?alt=proto&key=AIzaSyAP-gfH3qvi6vgHZbSYwQ_XHqV_mXHhzIk
09-10 08:14:12.876  23045-23110/? E/AppInviteAgent? Error communicating with server com.android.volley.AuthFailureError
09-10 08:14:12.896     795-1943/? I/ActivityManager? START u0 {act=android.intent.action.VIEW dat=https://plus.google.com/... flg=0x14000000 cmp=com.google.android.gms/.appinvite.AppInviteAcceptInvitationActivity} from uid 10011 …
Run Code Online (Sandbox Code Playgroud)

android google-play-services google-app-invites

17
推荐指数
1
解决办法
808
查看次数

在Dagger 2中异步构造依赖图

这是一个更理论化的问题.如果我朝错误的方向走,请告诉我.

有没有办法在Dagger 2中异步/并行加载一些图依赖?它应该在Dagger的背景下考虑吗?

我的问题主要与应用启动时间有关.许多外部依赖项如Mixpanel,Crashlytics/Fabric,Retrofit(RestAdapter)导致应用程序的预热时间超过1秒.

对我来说很有帮助的是Lazy <>界面,但最后的效果仍然不能满足我.

有任何想法吗?

应用程序具有SplashActivity,它依赖于SplashActivityPresenter,它依赖于:Mixpanel,RestAdapter和Crashlytics库(以及一些"较小"的对象).他们每个都有.init()方法需要花费很多时间(在Nexus 5,Android M上,Mixpanel初始化大约需要200ms.因此,在用户看到Splash屏幕之前需要大约2秒钟.

有没有办法并行构建这些对象?

android asynchronous dagger-2

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

混合Android插件从gradle和gradle-experimental

是否有任何方法或变通方法或只是提示从gradle和gradle-experimental一起工作的插件?

例如,混合这两个版本:

com.android.tools.build:gradle:1.3.1
com.android.tools.build:gradle-experimental:0.3.0-alpha4
Run Code Online (Sandbox Code Playgroud)

我有一个使用一些外部插件(app/build.gradle)的现有项目:

apply plugin: 'com.android.model.application'
apply plugin: 'com.android.databinding'
apply plugin: 'com.jakewharton.hugo'
Run Code Online (Sandbox Code Playgroud)

在我的根目录中build.gradle我有:

com.android.tools.build:gradle-experimental:0.3.0-alpha4
Run Code Online (Sandbox Code Playgroud)

我遇到的问题:

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.databinding']
   > java.lang.NullPointerException (no error message)
Run Code Online (Sandbox Code Playgroud)

要么

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.jakewharton.hugo']
   > 'android' or 'android-library' plugin required.
Run Code Online (Sandbox Code Playgroud)

没有其他插件我的项目工作正常(我的Android库有一些NDK代码,从我的主项目调用.当我在任何其他插件上添加提到的插件时出现问题.

问题是 - 它是每个插件的gradle实验问题或问题(hugo,数据绑定,apt,可能更多).

或者,如果有任何其他方法可以使用当前稳定的gradle插件和库(使用NDK代码)使用gradle-experimental?

我想要避免的是处理*.mk文件和(尽可能完整)Android Studio支持.更大的图片是使用NDK代码(只是简单的计算)准备.aar库,它将能够插入到现有项目中.

android gradle android-ndk gradle-experimental

7
推荐指数
1
解决办法
1985
查看次数

Raspberry-pi作为可连接的灯塔

我想在Raspberry-pi上构建某种双向蓝牙连接,实际上它可以作为信标.基于RadiusNetworks教程(如何从Raspberry Pi中创建iBeacon http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi .html)我已经在我的Raspberry-pi上构建了beacon,但它正在"广告和不可连接"模式(这与此处描述的问题相关:Raspberry Pi iBeacon连接超时).

我想要实现的是信标设备,它在广告模式下工作,并且还允许从其他设备(即iPhone)接收一些事件.当iPhone发现Raspberry-pi信标时,我希望它向Raspberry-pi发送一些数据以触发一些动作.我知道,最简单的方式是我的iPhone应该在进入信标区域时通过网络将数据发送到覆盆子,但不幸的是我的解决方案必须在离线模式下工作,所以我正在寻找某种直接(并且可能很快)连接.我认为PayPal信标是我需求的一个很好的例子(因为它在这里描述:https://devblog.paypal.com/how-does-paypal-beacon-work/ 他们的设备作为通信用户智能手机的门与PayPal服务).

我是BLE主题的初学者,所以如果我能开始探索任何提示,或者如何正确地向谷歌询问本主题中的任何好答案,我将不胜感激.

core-bluetooth raspberry-pi bluetooth-lowenergy bluez ibeacon

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