2011-06-14 3 views
4

일반적으로 Android 애플리케이션을 빌드하고 디버깅 할 때 debuggable=true을 매니페스트에 포함하고 개발 키로 애플리케이션에 서명해야합니다.Android 애플리케이션 릴리스를 유지 관리하는 모범 사례

응용 프로그램을 출시 할 때 debuggable=false으로 변경하고, 자신의 키로 서명하고, 선택적으로 ProGuard를 실행하고 가능하면 다른 작업을 수행해야합니다.

다른 키로 서명하는 것과 같은 특정 외부 작업은 Ant로 쉽게 코딩 할 수 있습니다. 실제로 이러한 작업은 상자에서 나옵니다. 그러나 AndroidManifest.xml의 변경 사항은 매번 수동 개입이 필요합니다.

또 다른 측면은 응용 프로그램의 릴리스 버전을 유지 관리하는 것입니다. 예를 들어, 상자 안드로이드 작업은 어떤 버전 정보도 사용하지 않습니다. Maven은 SNAPSHOT 버전을 사용할 것이고 릴리스에 대한 수동 업데이트가 필요할 것입니다.

이러한 모든 문제를 처리하는 것은 매우 지루하며 일부 자동화가 매우 바람직합니다. 지금까지 나의 접근 방식은 최종 매니페스트를 유지할 릴리스에 대해 git에서 개별 분기를 만들고 올바른 버전으로 폼을 생성하는 것이 었습니다.

하지만 안드로이드 출시주기를 다루는 모범 사례에 대한 다른 사람들의 조언을 듣고 싶습니다.

권장 사항은 무엇입니까?

답변

1

그러나 AndroidManifest.xml의 변경 사항은 매번 수동 개입이 필요합니다.

자동화 된 Android 빌드에 대한 수동 xml 조작이 필요한 곳에서는 <style /> 작업을 사용하여 Ant에 내장 된 XSLT 지원을 사용합니다.

  1. : 자동 젠킨스 구축하고 릴리스 프로세스가 자동으로 다음 단계를 수행합니다 받는다는 목표를 함께 수행하는 방법 : 스냅 샷 릴리스주기에 관해서는

    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:android="http://schemas.android.com/apk/res/android"> 
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
    
        <xsl:template match="application[@android:debuggable='true']"> 
        <xsl:copy> 
         <xsl:copy-of select="@*[name(.)!='android:debuggable']" /> 
         <xsl:apply-templates /> 
        </xsl:copy> 
        </xsl:template> 
    
        <xsl:template match="@*|node()"> 
        <xsl:copy> 
         <xsl:apply-templates select="@*|node()"/> 
        </xsl:copy> 
        </xsl:template> 
    
    </xsl:stylesheet> 
    

    : 스타일 시트 같은 것을 보일 수 있습니다 POM을 버전을 업데이트 (예를 들어, android:versionName/android:versionCode)는 "-snapshot"제거 - 예를 x.y.y-SNAPSHOTx.y.y

  2. 는 "버전 XYY 릴리스"
  3. 로 그 커밋 간단하게 망할 놈의 repo
  4. 업데이트 다음 논리적 릴리스의 스냅 샷으로 치어 버전 출시 태그 : x.y.z-SNAPSHOT
  5. 커밋 단계 # 3에서 시작 지점

"다음 버전을 준비"로 그, 그것은 또한 해당 코드를 공용 git 서버 (적용 가능한 경우)에 푸시하고 릴리스 태그를 Jenkins 플러그인 저장소에 게시하여 업데이트로 제공합니다.

나는 안드로이드 릴리스주기에 대한 비슷한 접근 방식이 스크립트에도 상당히 간단하다고 생각합니다.

+0

특히 SNAPSHOT 프로세스는 # 3 단계에서 Jenkins ".hpi"플러그인 파일을 생성하지 않고 Android ".apk"릴리스 후보 빌드를 생성합니다. 그런 식으로 "진정한"릴리스 버전 "x.y.z "는 # 3 빌드 단계의 코드에서만 노출됩니다 (물론 빌드가 성공했는지, 분명히 성공했는지에 따라 달라집니다.). – Joe

+0

감사합니다. 귀하의 의견은 중요합니다. 저는 Jenkins를 사용하지 않지만 제 경우에는 접근 방법이 적합하다고 생각됩니다. –

+0

죄송합니다. , 젠킨스 플러그인을 개발/빌드/릴리스하기위한 maven 프로세스가 워크 플로 위의 워크 플로를 사용하고 버전을 앞으로 이동시키는 좋은 방법 인 것처럼 보였습니다 .Jenkins를 사용하여 빌드해야 함을 암시하는 것을 의미하지는 않습니다. 일하다 :) – Joe