我试图建立持续集成与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
我尝试过以下方法:
sdk.dirin local.properties文件(它指向/Users/chaz/Library/Android/sdk).ANDROID_HOME从jenkins配置中删除了添加的后退env变量(没有帮助).当我用Google搜索时,我发现有人遇到了同样的问题.提供的解决方案如下:
解
这很有可能发生,因为你要覆盖ANDROID_HOME - 删除那样的环境自定义,然后SDK应该安装正常.
承认
谢谢,是的,这是env变量的重叠.我删除了除全局之外的所有内容并将其保存在$ {ANDROID_HOME}中.
我应该如何处理除全局之外的所有内容并将其保存在$ {ANDROID_HOME}中. …
我正在对pycharm进行评估并且遇到了重构位.我想要实现的是在其中一个函数中添加一个新参数.我这里有两个问题.
那么,默认值是强制性的吗?以及如何在所有函数调用中反映新参数?
如果应用程序在前台,后台运行或被杀死,该应用程序会显示预期的行为.但是,一旦重新启动,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
以下是我的代码:
<!-- 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
我正在尝试将没有组织的现有Google云项目迁移到组织中.谷歌说,我应该有一组在组织和项目角色来实现这一提到这里.正如您在下面的屏幕截图中看到的,我添加了所有必需的角色
尽管已经具备了所有这些角色,但当我尝试按照步骤将项目迁移到组织时,我仍然看不到列出的组织,如下所示:
我在这里错过了什么?
试图实施谷歌的最新GCM服务.我已阅读GCM文档.我还下载并分析了谷歌的示例实施.从以上所述我了解以下内容:
InstanceId服务提供API以生成gcm registration tokens您在应用服务器中发送和存储此生成的令牌.InstanceIDListenerService,InstanceID提供程序将调用 onTokenRefresh你编写逻辑的地方来获取新令牌并将其发送到服务器(Google的示例应用程序)canonical_id(如此处所述)(这是设备发送的最后一次registration_id).您必须使用此canonical_id替换服务器中的现有令牌.现在,以下是我的问题:
InstanceId.getToken如果未卸载应用程序,似乎返回相同的令牌,如果令牌未更改,则返回相当快.那么,RegistrationIntentService每次启动应用程序时都可以调用它吗?这样我就可以保证一直使用最新的令牌.onTokenRefresh当您的应用未连接到Play商店(没有互联网或其他东西)时,if刷新是如何发生的?InstanceId提供商是否重试?这是在某处记录的吗?如果同时发送推送通知会发生什么?canonical_id?它是为设备生成的最新令牌(由InstanceID.getToken客户端或InstanceId提供商端发起)?如果canonical_id确实是最新的gcm令牌,那么onTokenRefresh实施的需要是什么,因为您可以分析推送通知数据并更新您的应用服务器,如果您找到canonical_id提供的?当我尝试构建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)
我使用的配置:
Use Gradle Wrapperbuild 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)构建和测试过程,我配置了一个AWS代码管道,它将首先从GitHub获取代码并触发构建(通过aws代码构建)构建显示为已成功完成但工件(apk文件)由于构建过程而生成的内容未上传到s3存储桶(公共存储桶).日志清楚地表明上传成功,如附带的屏幕截图所示
该codepipeline以及显示一切顺利的连接
但是,如果我直接从aws codebuild屏幕运行aws codebuild项目,它会将工件成功上传到s3存储桶!
我尝试将桶权限更改为public/non public等.到目前为止还没有成功
amazon-s3 amazon-web-services aws-codepipeline aws-codebuild
我正在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) 如何将工件作为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.
提前致谢!