小编vol*_*nde的帖子

具有捆绑依赖性的库(fat aar)

我们建立了一个我们分发给客户的图书馆.我们分发原始的aar文件供他们使用.我们还使用GitHub的原始访问API来提供Maven存储库.

现在为了保持整洁,我们将库分成几个模块:

include ':library'
include ':geohash'
include ':networkstate'
include ':okvolley'
include ':volley'
Run Code Online (Sandbox Code Playgroud)

library是一个Android库,所以是volleyokvolleynetworkstate.

现在,当我发布时library,依赖树看起来像这样:

\--- com.sensorberg.sdk:sensorberg-sdk:0.10.0-SNAPSHOT
 +--- com.squareup.okhttp:okhttp-urlconnection:2.2.0
 |    \--- com.squareup.okhttp:okhttp:2.2.0
 |         \--- com.squareup.okio:okio:1.2.0
 +--- com.google.code.gson:gson:2.3.1 
 +--- android-sdk:okvolley:unspecified
 |    +--- com.squareup.okhttp:okhttp-urlconnection:2.2.0 (*)
 |    +--- com.google.code.gson:gson:2.3.1
 |    +--- android-near-gradle:volley:unspecified
 |    \--- com.squareup.okhttp:okhttp:2.2.0 (*)
 +--- android-sdk:networkstate:unspecified
 +--- com.squareup.okhttp:okhttp:2.2.0 (*)
 +--- android-sdk:volley:unspecified
 \--- com.loopj.android:android-async-http:1.4.5
Run Code Online (Sandbox Code Playgroud)

正如您所见,android-sdk:networkstate:unspecifiedandroid-sdk:okvolley:unspecified显示在外部依赖项列表中.

我想library用捆绑的本地模块创建我的aar.它应该做一个本地清单合并和远jar ...并合并所有模块的依赖性.只显示外部模块.

我确实尝试从build/output/aar相应模块的文件夹中引用本地aar文件,但这似乎也行不通.它仍然似乎用他们的名字引用本地模块而不是合并jar的清单......

有人做过这样的事吗?在Android之外,这将被称为fatjar,并且有像musketyr/gradle-fatjar-plugin这样的插件,可以用Gradle生成一个胖子.

我在我的本地模块上试过这个

if (project.ext.libraryBuild …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library

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

UITableView编辑动画持续时间

有没有人知道动画有多长

- (void)setEditing:(BOOL)editing animated:(BOOL)animated;
Run Code Online (Sandbox Code Playgroud)

UITableViewCell拿?我用0.5秒进行测试,但我更喜欢使用Framework中的常量UITableViewCellEditingAnimationDuration

uikit tableview uiviewanimation tableviewcell ios

13
推荐指数
2
解决办法
3179
查看次数

以编程方式启用/禁用Broadcastreceiver

我们有一个扫描蓝牙设备的应用程序.负责扫描的代码只应在启用蓝牙时运行.此外,我们希望在任何时间点禁用/启用此功能.

我们选择实现一个注册BluetoothAdapter.ACTION_STATE_CHANGED广播的BroadcastReceiver.

这里遇到的一些问题:

以编程方式启用BroadcastReceiver:

public void registerForBroadcasts(Context context) {
    IntentFilter bluetooth = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    context.registerReceiver(this, bluetooth);
}
Run Code Online (Sandbox Code Playgroud)
  1. 当应用程序被杀死时,BroadcastReceiver也不再处于活动状态.因此,如果用户多任务 - 将应用程序刷死,则不会再次被唤醒.
  2. 我们完全控制,何时启动BroadcastReceiver.

在Manifest中声明BroadcastReceiver

<receiver android:name="com.mypackage.BroadcastReceiver">
    <intent-filter>
        <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
  1. 应用程序启动后,BroadcastReceiver处于活动状态.
  2. 无法禁用BroadcastReceiver.

将Manifest中的BroadcastReceiver声明为disabled并以编程方式启用它

<receiver android:name="com.mypackage.BroadcastReceiver"
          android:enabled="false" >
    <intent-filter>
        <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

然后在需要时启用组件.

public void registerForBroadcasts(Context context) {
    ComponentName component = new ComponentName(context, BroadcastReceiver.class);
    PackageManager pm = context.getPackageManager();
    pm.setComponentEnabledSetting(
                component,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);
}
Run Code Online (Sandbox Code Playgroud)

我的测试显示,状态是系统持久化的,因此BroadcastReceiver将保持启用状态.它结合了两种方法的优点.

  1. 可以禁用BroadcastReceiver
  2. 默认情况下,BroadcastReceiver可以打开或关闭
  3. 即使应用程序已禁用且手机重新启动,BroadcastReceiver仍会保持激活状态.

我错过了什么,这种方法看起来合法吗?

android

7
推荐指数
2
解决办法
5090
查看次数

无法让 htmlproof 接受忽略模式

我已经为 travis-ci.org 编写了一个 jekyll ci 脚本,但使用了 jeyklll 本身和 htmlproof(gem html-proofer)

我无法让忽略模式起作用。我试图忽略子文件夹中的所有文件

htmlproof ./_site  --file-ignore ".+/ios/cocoadocs.+"
Run Code Online (Sandbox Code Playgroud)

但我仍然收到很多错误:

- ./_site/ios/cocoadocs/0.7.0/Classes/SBSDKManager.html
  *  linking to internal hash #//api/name/authorizationStatus that does not exist (line 875)
  *  linking to internal hash #//api/name/authorizationStatus that does not exist (line 899)
  *  linking to internal hash #//api/name/regions that does not exist (line 336)
  *  linking to internal hash #//api/name/regions that does not exist (line 353)
Run Code Online (Sandbox Code Playgroud)

我如何做一个适当的忽略模式?

ruby jekyll travis-ci

4
推荐指数
1
解决办法
477
查看次数

使任务依赖于另一个任务

我正在gradle中尝试一些事情,我想定义一个名为"jenkins"的任务,该任务依赖于一个名为"test"的模块任务和另一个名为"connectedAndroidTest"的模块任务.我按照http://www.gradle.org/docs/current/userguide/more_about_tasks.html上的说明操作

这是我的"./gradlew任务"输出

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
[..]
Verification tasks
------------------
[..]
connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices.
test - Runs the unit tests.

Other tasks
-----------
wrapper
Run Code Online (Sandbox Code Playgroud)

所以我认为,这个:

task jenkins
jenkins.dependsOn test
jenkins.dependsOn connectedAndroidTest
Run Code Online (Sandbox Code Playgroud)

会创建这个任务,并使其依赖于其他任务,所以我的jenkins只需要运行

./gradlew jenkins
Run Code Online (Sandbox Code Playgroud)

如果我有其他任务要添加到jenkins运行,我只需要更改gradle文件,我不必触摸jenkins.

但相反,我得到了这个令人讨厌的错误:

* What went wrong:
A problem occurred evaluating root project 'android-near-gradle'.
> Could not find property 'test' on root project 'android-near-gradle'.
Run Code Online (Sandbox Code Playgroud)

task jenkins
jenkins.dependsOn unit:test
jenkins.dependsOn library:connectedAndroidTest …
Run Code Online (Sandbox Code Playgroud)

groovy gradle

3
推荐指数
1
解决办法
4067
查看次数

调试buildType的自定义字符串

我有一个Android应用程序,我想更改调试和其他buildTypes的应用程序标签.我没有任何口味!

这是我认为它应该工作的设置: Android Studio安装程序

-src
   |-debug
      |-res
         |-values
            |-strings.xml
   |-main
      |-res
         |-values
            |-strings.xml
      |-java
      [...]
Run Code Online (Sandbox Code Playgroud)

我没有自定义源集只是一个调试buildType:

buildTypes {
    debug {
        applicationIdSuffix ".debug"

    }
}
Run Code Online (Sandbox Code Playgroud)

所以我虽然

sourceSets.debug.res.srcDirs = ['src/debug/res'] 
Run Code Online (Sandbox Code Playgroud)

会诀窍.但事实并非如此.有任何想法吗?

如何更改每个Gradle构建类型的应用程序名称不再起作用...

android gradle

3
推荐指数
3
解决办法
6916
查看次数