2016-12-01 36 views
4

我已經下載了android aws文件,用於將我的android studio 2.2.2庫項目發佈到亞馬遜雲。但是,這些步驟不適合我。將android庫發佈到亞馬遜雲程序

任何人都可以提出任何其他方法將Android Studio庫項目上傳到亞馬遜雲,併爲Jcenter和Maven等依賴關係創建url。

+0

我也提到這個aws教程也不明白。 http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/ – harikrishnan

回答

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 wrapper。

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]。另外,由於這是一個私有存儲庫,我在Maven塊中包含了我的AwsCredentials。雖然您可以將實際的AWS_ACCESS_KEYAWS_SECRET_KEY直接放入您的構建文件中,但請勿!你的構建文件不應該包含憑據,因爲那樣你就無法真正管理訪問。這些值正是我的構建文件中的內容,允許它從我的主目錄中用戶特定的gradle.properties文件讀取。這裏就是我設置的實際值,在〜/ .gradle/gradle.properties:

這是所有對託管在亞馬遜S3的依賴性所需,讓您的內部Maven的一個負擔得起的,訪問控制選項託管沒有管理開銷。

不爲開源庫

BinTray(jcenter)和Maven中心的解決方案是分發源代碼開放的地方。這使得您的圖書館用戶可以輕鬆訪問,而無需在他們的項目中添加自定義存儲庫。這只是您需要經過身份驗證的存儲庫時的解決方案,或者如果您需要分發沒有源代碼(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

編碼愉快!乾杯!!!