将android库发布到亚马逊云程序

时间:2016-12-01 06:48:06

标签: android amazon-s3 aar amazon-cloudwatch

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

任何人都可以建议任何其他方法将Android工作室库项目上传到亚马逊云,并为Jcenter和Maven等依赖关系制作网址。

2 个答案:

答案 0 :(得分:0)

如果您的图书馆是开源的,您可以免费使用https://jitpack.io

答案 1 :(得分:0)

一个简单的解决方案来托管私有Maven存储库而无需站起来管理服务器:

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

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

{
  "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存储桶,还可以获取并将对象放入存储桶的任何子目录中。根据亚马逊的文档,您可以根据需要对此进行限制。

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

下一步是确保您为项目使用gradle 2.4。这可以通过编辑gradle-wrapper.properties文件,或者只是将以下代码段添加到根build.gradle文件,然后运行./gradlew包装器来完成。

task wrapper(type: Wrapper) {
    gradleVersion = '2.4' }

现在,无论您通常在哪里设置您需要访问的存储库(我在根构建脚本中使用allprojects {}块),只需将您的Amazon S3存储桶添加为maven存储库。

 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()
}

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

 AWS_ACCESS_KEY=my_aws_access_key
AWS_SECRET_KEY=my_super_secret_key

这就是在Amazon 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

快乐编码!!!干杯!!!