小编ran*_*ose的帖子

Jenkins提供的SDK目录不存在

我试图建立持续集成与Jenkins上一个android gradle项目

当我构建它时,我收到以下错误:

[Android Gradle Jenkins Experiment2] $ "/Users/Shared/Jenkins/Home/workspace/Android Gradle Jenkins Experiment2/gradlew" build
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
The SDK directory '/Users/chaz/Library/Android/sdk' does not exist.
Run Code Online (Sandbox Code Playgroud)

以下是我的jenkins配置的一部分:

ANDROID_HOME
/Users/chaz/Library/Android/sdk

JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/
Run Code Online (Sandbox Code Playgroud)

我的机器是 OS X El Capitan Version 10.11.6

我尝试过以下方法:

  1. 认为这是一个权限问题,为sdk目录提供了chmod -R 777
  2. 双重检查sdk.dirin local.properties文件(它指向/Users/chaz/Library/Android/sdk).
  3. ANDROID_HOME从jenkins配置中删除了添加的后退env变量(没有帮助).

当我用Google搜索时,我发现有人遇到了同样的问题.提供的解决方案如下:

解

这很有可能发生,因为你要覆盖ANDROID_HOME - 删除那样的环境自定义,然后SDK应该安装正常.

承认

谢谢,是的,这是env变量的重叠.我删除了除全局之外的所有内容并将其保存在$ {ANDROID_HOME}中.

我应该如何处理除全局之外的所有内容并将其保存在$ {ANDROID_HOME}中. …

android jenkins android-gradle-plugin

16
推荐指数
1
解决办法
6415
查看次数

在pycharm中更改签名(重构)时的强制默认变量和参数传播

我正在对pycharm进行评估并且遇到了重构位.我想要实现的是在其中一个函数中添加一个新参数.我这里有两个问题.

  1. 每当我添加一个新参数时,它都会显示"缺少缺省值"
  2. 传播参数似乎始终处于禁用状态

那么,默认值是强制性的吗?以及如何在所有函数调用中反映新参数?

如果有帮助,附上屏幕截图.. 在此输入图像描述

pycharm

12
推荐指数
1
解决办法
476
查看次数

重新启动后GCMNetworkManager未运行PeriodicTask

如果应用程序在前台,后台运行或被杀死,该应用程序会显示预期的行为.但是,一旦重新启动,PeriodicTask停止运行

以下是相关的代码:

在AndroidManifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<service android:name=".tracking.MyTaskService"
            android:exported="true"
            android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
            <intent-filter>
                <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

PeriodicTask配置:

PeriodicTask task = new PeriodicTask.Builder()
                .setService(MyTaskService.class)
                .setTag(TASK_TAG_PERIODIC)
                .setPeriod(30L)
                .setFlex(10L)
                .setExtras(bundle)
                .setPersisted(true)
                .build();

        mGcmNetworkManager.schedule(task);
Run Code Online (Sandbox Code Playgroud)

在Logcat中,我得到以下内容:

E/NetworkScheduler.TED: Couldn't start service: Intent 
{ act=com.google.android.gms.gcm.ACTION_TASK_READY
  cmp=xxx.xxxxxx.xxx/.tracking.MyTaskService (has extras) 
}
Run Code Online (Sandbox Code Playgroud)

附加所有相关细节:

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.example.gcmnetworkmanagerquickstart">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- [START manifest_service] -->
        <service
            android:name=".MyTaskService"
            android:exported="true"
            android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> …
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging periodic-task gcm-network-manager

12
推荐指数
1
解决办法
1176
查看次数

Redmi手机没有询问短信权限,因此没有阅读短信

以下是我的代码:

<!-- Data SMS Receiver -->
    <receiver android:name=".otp.OTPReceiver" android:enabled="true" android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.DATA_SMS_RECEIVED" />


            <data android:scheme="sms" />
            <data android:port="9027" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

otp.OTPReceiver是相关的BroadcastReceiver 这适用于除Redmi设备之外的所有其他手机.在Redmi手机中,您必须在权限应用程序中手动启用自动启动和其他权限(此应用程序处理Redmi手机中的权限).在安装时询问权限,我看到Facebook,whatsapp等.想知道如何做到这一点.

我看到了这样的问题该和这个被问同样的事情,但都无人接听.我尝试添加android:enabled="true",android:exported="true"到接收XML片段就像提到这里.但这些都没有奏效.

编辑:我正在使用data sms(也称为port sms).我也用正常的短信验证了,Redmi手机上也存在问题

permissions sms android android-permissions redmi-permission

10
推荐指数
1
解决办法
1630
查看次数

组织不会作为迁移的选择出现在Google云端控制台中

我正在尝试将没有组织的现有Google云项目迁移到组织中.谷歌说,我应该有一组在组织和项目角色来实现这一提到这里.正如您在下面的屏幕截图中看到的,我添加了所有必需的角色角色 尽管已经具备了所有这些角色,但当我尝试按照步骤将项目迁移到组织时,我仍然看不到列出的组织,如下所示: 组织清单 我在这里错过了什么?

google-cloud-platform

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

对GCM Token更新过程感到困惑

试图实施谷歌的最新GCM服务.我已阅读GCM文档.我还下载并分析了谷歌的示例实施.从以上所述我了解以下内容:

  1. InstanceId服务提供API以生成gcm registration tokens您在应用服务器中发送和存储此生成的令牌.
  2. 这些令牌可以在一次从客户端的一阵子以及实例Id服务端所提到改变这里.要处理这个问题,你必须实现InstanceIDListenerService,InstanceID提供程序将调用 onTokenRefresh你编写逻辑的地方来获取新令牌并将其发送到服务器(Google的示例应用程序)
  3. 如果您的应用服务器发送较旧的注册ID,GCM服务器会发送您的设备,这里有一些称为canonical_id(如此处所述)(这是设备发送的最后一次registration_id).您必须使用此canonical_id替换服务器中的现有令牌.

现在,以下是我的问题:

  1. InstanceId.getToken如果未卸载应用程序,似乎返回相同的令牌,如果令牌未更改,则返回相当快.那么,RegistrationIntentService每次启动应用程序时都可以调用它吗?这样我就可以保证一直使用最新的令牌.
  2. onTokenRefresh当您的应用未连接到Play商店(没有互联网或其他东西)时,if刷新是如何发生的?InstanceId提供商是否重试?这是在某处记录的吗?如果同时发送推送通知会发生什么?
  3. 究竟是什么canonical_id?它是为设备生成的最新令牌(由InstanceID.getToken客户端或InstanceId提供商端发起)?如果canonical_id确实是最新的gcm令牌,那么onTokenRefresh实施的需要是什么,因为您可以分析推送通知数据并更新您的应用服务器,如果您找到canonical_id提供的?

android google-cloud-messaging

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

Jenkins android构建失败,并显示以下消息:致命:在这些目录中未找到Gradle包装器

当我尝试构建android项目时,构建失败并显示以下消息:

Started by user admin
Building in workspace /Users/Shared/Jenkins/Home/workspace/stable-dev
[Gradle] - Launching build.

FATAL: The Gradle wrapper has not been found in these directories:   
/Users/admin/Downloads/android_stable_dev, 
/Users/Shared/Jenkins/Home/workspace/stable-dev

Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

我使用的配置:

  1. Use Gradle Wrapper
  2. build File: /Users/admin/Downloads/android_stable_dev/build.gradle

我试图填充/Users/admin/Downloads/android_stable_dev/gradlew,/Users/admin/Downloads/android_stable_dev/gradle/wrapper/,/Users/admin/Downloads/android_stable_dev/gradle/等在Wrapper location在配置字段。仍然无法正常工作(所有这些文件都在那里)。

我正在使用 jenkins-2.47.pkg

android gradle jenkins android-gradle-plugin

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

AWS CodePipeline不会将工件上载到AWS S3

为了自动化(Android)构建和测试过程,我配置了一个AWS代码管道,它将首先从GitHub获取代码并触发构建(通过aws代码构建)构建显示为已成功完成但工件(apk文件)由于构建过程而生成的内容未上传到s3存储桶(公共存储桶).日志清楚地表明上传成功,如附带的屏幕截图所示![这里] 这里 该codepipeline以及显示一切顺利的连接这里

但是,如果我直接从aws codebuild屏幕运行aws codebuild项目,它会将工件成功上传到s3存储桶!

我尝试将桶权限更改为public/non public等.到目前为止还没有成功

amazon-s3 amazon-web-services aws-codepipeline aws-codebuild

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

使用Firestore过滤和排序

我正在firestore中构建一个任务管理应用程序.Tasks可以有多个members和tags.由于我总是排序和显示用户的内容(基于截止日期,优先级等),并且由于firestore的列表和复合索引的限制,我最终以下列结构存储数据.

projects:

.....   
    101: {
        name: 'task1', 
        members: {201: true, 202: true, ......}, 
        tags:{'tag1':true, 'tag2':true, 'tag3':true,....} 
      },

    102: {
        name: 'task2', 
        members: {201: true, 202: true, ......}, 
        tags:{'tag1':true, 'tag2':true, 'tag3':true,....}
      },

    103: {
        name: 'task3', 
        members: {201: true, 202: true, ......}, 
        tags:{'tag1':true, 'tag2':true, 'tag3':true,....} 
      }

.....
Run Code Online (Sandbox Code Playgroud)

现在,由于复合索引必须是手动的,我最终实现了反向查找:

users:
.....

201: {
        name: 'John',
        tasks: 
                501: {taskId: 601, priority: high, ...... },
                502: {taskId: 601, priority: high, ...... },
                503: {taskId: 601, priority: high, ...... …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-firestore

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

从AWS代码构建中创建公共s3工件

如何将工件作为aws code build公共部分上传到s3 默认情况下?我正在尝试构建自动化.目前建设成功; 但是,创建的工件不是公共的,因此我无法共享链接(作为邮件的一部分).默认情况下,服务器端加密设置为Using AWS KMS master key: aws/s3 (default).当尝试encryption key从advanced settingsaws代码构建配置的部分删除时,它给出了一个错误.我打算运行一个aws lambda函数,该函数将在构建结束时发送带有工件链接的邮件,作为aws代码管道的一部分.

编辑: 我尝试添加以下作为权限,但它没有帮助:

{
  "Version":"2012-10-17",
  "Statement":[
   {
    "Sid":"AddPerm",
    "Effect":"Allow",
    "Principal": "*",
    "Action":["s3:GetObject"],
    "Resource":["arn:aws:s3:::examplebucket/*"]
   }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如这里提到的

从S3开始,如果我手动选择none加密,链接就可以下载了.但是,我需要一种编程方式来实现这一点,因为我正在尝试将整个过程自动化,这是构建自动化的一部分.到目前为止,我也无法实现这一目标boto3.

提前致谢!

amazon-s3 amazon-web-services aws-codebuild

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