首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将android库发布到amazon云程序

将android库发布到amazon云程序
EN

Stack Overflow用户
提问于 2016-12-01 14:48:06
回答 2查看 408关注 0票数 4

我已经下载了android aws文档,用于将我的android studio 2.2.2库项目发布到amazon cloud。但是,这些步骤不适合我。

有没有人可以推荐其他的方法来上传Android studio库项目到Amazon cloud,并为依赖项创建url,比如Jcenter和Maven。

EN

回答 2

Stack Overflow用户

发布于 2016-12-13 21:20:55

托管私有Maven存储库的简单解决方案,无需安装和管理服务器:

为了在亚马逊S3上托管您的资产,您首先必须设置一个经过身份验证的存储桶作为存储库。这超出了本文的范围,但亚马逊有一些优秀的documentation详细介绍了如何做到这一点。

创建存储桶后,您将需要添加存储桶策略,以确保您的身份验证用户可以访问存储桶中创建的所有文件。

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Id": "Policy1428433847297",
  "Statement": [
    {
      "Sid": "Stmt1428433844452",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::1234567890:user/maven-user"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::pixite-maven"
    },
    {
      "Sid": "Stmt1428433844452",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::1234567890:user/maven-user"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::pixite-maven/*"
    }
  ]
}

请注意,我的组有权列出pixite-maven存储桶,并有权在存储桶的任何子目录中获取和放置对象。根据Amazon的文档,您可以随心所欲地限制它。

如果您在单个存储桶中同时托管快照和版本(就像我一样),那么您可能希望将这些目录添加到存储桶的根目录中。另一种选择是有两个可以独立管理的存储桶,一个用于快照,另一个用于发布。

下一步是确保您的项目使用的是gradle 2.4。这可以通过编辑gradle-wrapper.properties文件,或者简单地将以下代码片段添加到根build.gradle文件并运行./gradlew wrapper来完成。

代码语言:javascript
复制
task wrapper(type: Wrapper) {
    gradleVersion = '2.4' }

现在,无论您通常在何处设置需要访问的存储库(我在根构建脚本中使用了一个allprojects {}块),只需添加您的Amazon存储桶作为S3存储库即可。

代码语言:javascript
复制
 repositories {
        maven {
            url "s3://pixite-maven/releases"
            credentials(AwsCredentials) {
                accessKey AWS_ACCESS_KEY
                secretKey AWS_SECRET_KEY
            }
        }
        maven {
            url "s3://pixite-maven/snapshots"
            credentials(AwsCredentials) {
                accessKey AWS_ACCESS_KEY
                secretKey AWS_SECRET_KEY
            }
        }



  mavenLocal()
    jcenter()
}

请注意存储库的url是如何为s3://[bucket name]/[path]的。另外,因为这是一个私有存储库,所以我在maven块中包含了我的AwsCredentials。虽然您可以将实际的AWS_ACCESS_KEYAWS_SECRET_KEY直接放入构建文件中,但不要!您的构建文件不应该包含凭据,因为这样您就无法真正管理访问权限。这些值就是我的构建文件中的值,允许它从我的主目录中的特定于用户的gradle.properties文件中读取。下面是我用~/.gradle/gradle.properties:设置实际值的地方

代码语言:javascript
复制
 AWS_ACCESS_KEY=my_aws_access_key
AWS_SECRET_KEY=my_super_secret_key

这就是在亚马逊S3上托管您的依赖项所需的全部内容,为您提供了一个负担得起的、访问受控的内部maven托管选项,而无需管理开销。

注意:不是开源库的解决方案

BinTray (jcenter)和Maven Central是发布开放源代码的地方。这使得您的库的用户可以轻松地访问,而不需要在整个项目中添加自定义存储库。只有当您需要一个经过身份验证的存储库,或者您需要在没有源代码(ala Fabric)的情况下分发库时,这才是解决方案。

有关这方面的更多信息,请查看以下链接:

An S3 repository can be configured to authenticate using AWS's EC2 instance metadata.

S3 Repositories can be configured with credentials providers

Setting Up & Publishing Private Amazon S3 Maven Repository Android Library

编码快乐!干杯!

票数 1
EN

Stack Overflow用户

发布于 2016-12-08 03:41:39

如果你的库是开源的,你可以免费使用https://jitpack.io

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40904238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档