我有一个多项目(~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应用程序的最新版本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发布之前创建这种通知.
它不时发生,也是谷歌的示例应用程序(https://github.com/googlesamples/google-services/tree/master/android/appinvites).应用程序安装在设备上,但不是打开应用程序,"安装"链接:
这些是来自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) 这是一个更理论化的问题.如果我朝错误的方向走,请告诉我.
有没有办法在Dagger 2中异步/并行加载一些图依赖?它应该在Dagger的背景下考虑吗?
我的问题主要与应用启动时间有关.许多外部依赖项如Mixpanel,Crashlytics/Fabric,Retrofit(RestAdapter)导致应用程序的预热时间超过1秒.
对我来说很有帮助的是Lazy <>界面,但最后的效果仍然不能满足我.
有任何想法吗?
例
应用程序具有SplashActivity,它依赖于SplashActivityPresenter,它依赖于:Mixpanel,RestAdapter和Crashlytics库(以及一些"较小"的对象).他们每个都有.init()方法需要花费很多时间(在Nexus 5,Android M上,Mixpanel初始化大约需要200ms.因此,在用户看到Splash屏幕之前需要大约2秒钟.
有没有办法并行构建这些对象?
是否有任何方法或变通方法或只是提示从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库,它将能够插入到现有项目中.
我想在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
android ×5
gradle ×2
android-ndk ×1
asynchronous ×1
bluez ×1
build.gradle ×1
dagger-2 ×1
facebook ×1
ibeacon ×1
lockscreen ×1
raspberry-pi ×1