Android Studio 다 중 채널 패키지 설정 방법

다 중 채널 에 대해 말하자면 여기 서 우 맹 통 계 를 언급 하지 않 을 수 없다.우 맹 통 계 는 여러분 이 일상적인 개발 에서 자주 사용 하 는 채널 통계 도구 이 고 우리 의 포장 방법 은 우 맹 통 계 를 바탕 으로 실시 하 는 것 이다.동맹 공식 문서 에 따 르 면 채널 정 보 는 보통 AndroidManifest.xml 에서 다음 과 같은 값 을 설정 해 야 합 니 다.

<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
위의 value 값 ChannelID 는 채널 표지 입 니 다.우리 가 기대 하 는 것 은 컴 파일 할 때 이 값 이 자동 으로 변화 하여 다 중 채널 을 구분 하 는 수 요 를 만족 시 킬 수 있다 는 것 이다.
(1)AndroidManifest.xml 에 동적 채널 변 수 를 설정 합 니 다.

<meta-data
  android:name="UMENG_CHANNEL"
  android:value="${UMENG_CHANNEL_VALUE}" />
(2)build.gradle 에 produtFlavors 설정
여기 서 우리 가 포장 해 야 할 경 로 는 360,좁쌀,바 이 두,완두콩 꼬투리 라 고 가정 한다.

android { 
  productFlavors {
    xiaomi {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    qh360 {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
    }
    baidu {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
    }
    wandoujia {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }
  } 
}
일괄 수정

android { 
  productFlavors {
    xiaomi {}
    qh360 {}
    baidu {}
    wandoujia {}
  } 
  productFlavors.all { 
    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
  }
}
ProductFlavors 란 정의 가능 한 제품 특성 입 니 다.manifest merger 와 함께 사용 할 때 한 번 의 컴 파일 과정 에서 여러 개의 특성 설정 을 가 진 버 전 을 만 들 수 있 습 니 다.위의 이 설정 의 역할 은 모든 채널 에 서로 다른 UMENG 를 만 드 는 것 입 니 다.CHANNEL_VALUE 의 값.
(3)포장 작업 수행
AndroidStudio 메뉴 표시 줄 에서 Build 메뉴 C>Generate signed APK>key 를 클릭 하고 비밀 번 호 를 입력 하 십시오. 

그리고 다음 단 계 는 포장 경 로 를 선택 합 니 다.

마지막 으로 완성 단 추 를 누 르 면 우 리 는 다섯 개의 채널 을 성공 적 으로 잘 싸 웠 다.
(4)포장 명령 을 실행 합 니 다./gradlew assembleRelease
AndroidStudio 그래 픽 포장 작업 을 사용 하 는 것 외 에 도 명령 행 을 사용 하여 포장 작업 을 할 수 있 습 니 다.구체 적 인 절 차 는 다음 과 같 습 니 다.
  • AndroidStudio 창 왼쪽 아래 에서 터미널 패 널 을 열 고 gradlew assemble Release 명령
  • 을 입력 하 십시오.
  • 시스템 에 Gradle 이 설치 되 어 있 지 않 으 면 자동 으로 다운로드 완료 및 초기 화
  • 포장 에 성공 하면 콘 솔 에서 BUILD SUCCESSRUL
  • 을 알려 줍 니 다.
  • appc>buildC>outputs C>apk 경로 에서 패키지 성공 후의 APK 를 볼 수 있 습 니 다.
  • 이 때 이 APK 패키지 이름 은 unsigned 로 표 시 됩 니 다.즉,서명 하지 않 았 습 니 다.build.gradle 파일 에 서명 정 보 를 계속 설정 할 수 있 습 니 다.
    
    signingConfigs {
        release{
          storeFile file("../wooyun_keystore") //      
          storePassword "your password"
          keyAlias "your alias"
          keyPassword "your password" //    
        }
      }
    그리고 gradlew assemble Release 명령 을 다시 실행 합 니 다.
    이번에 생 성 된 것 은 서명 이 들 어 있 는 채널 패키지 입 니 다.
    우리 의 채널 패키지 버 전이 비교적 많 을 때,APK 패키지 이름 을 사용자 정의 하여 구분 할 수 있 습 니 다.
    
    //        ,      APK   1.0
          applicationVariants.all { variant ->
            variant.outputs.each { output ->
              def outputFile = output.outputFile
              if (outputFile != null && outputFile.name.endsWith('.apk')) {
                //   apk   frank_v1.0_wandoujia.apk
                def fileName = "frank_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                output.outputFile = new File(outputFile.parent, fileName)
              }
            }
          }
    assemble 는 Gradle 의 컴 파일 패키지 명령 입 니 다.다음 과 같은 용법 이 있 습 니 다.
    만약 우리 가 wandoujia 채널 의 release 버 전 을 포장 하고 싶다 면 다음 명령 을 실행 하면 됩 니 다.gradlew assembleWandoujiaRelease만약 우리 가 wandoujia 채널 의 debug 버 전 을 포장 하고 싶다 면 다음 명령 을 실행 하면 됩 니 다.gradlew assembleWandoujiaDebug만약 우리 가 wandoujia 채널 버 전 만 친다 면:gradlew assembleWandoujia이 명령 은 wandoujia 채널 의 Release 와 Debug 버 전 을 생 성 합 니 다.
    마찬가지 로 나 는 모든 릴 리 스 버 전 을 치고 싶다.gradlew assembleRelease이 명령 은 Product Flavor 의 모든 채널 의 Release 버 전 을 출력 합 니 다.
    다음은 제 개인build.gradle프로필 입 니 다.참고 로 공유 하 겠 습 니 다.
    
    apply plugin: 'com.android.application'
    android {
      compileSdkVersion 23
      buildToolsVersion "23.0.2"
      defaultConfig {
        applicationId "com.frank.example"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
      }
       //  
      signingConfigs {
        debugConfig {
          storeFile file("../frank_keystore")   //    
          storePassword "your password"
          keyAlias "your alias"
          keyPassword "your password" //    
        }
        release{
          storeFile file("../wooyun_keystore")   //    
          storePassword "your password"
          keyAlias "your alias"
          keyPassword "your password" //    
        }
      }
      buildTypes {
        release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          //        
          applicationVariants.all { variant ->
            variant.outputs.each { output ->
              def outputFile = output.outputFile
              if (outputFile != null && outputFile.name.endsWith('.apk')) {
                //   apk   frank_v1.0_wandoujia.apk
                def fileName = "frank_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                output.outputFile = new File(outputFile.parent, fileName)
              }
            }
          }
        }
      }
      productFlavors {
        xiaomi {}
        qh360 {}
        baidu {}
        wandoujia {}
      }
      productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
      }
    }
    dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      testCompile 'junit:junit:4.12'
      compile 'com.android.support:appcompat-v7:23.3.0'
    }
    총결산
    이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

    좋은 웹페이지 즐겨찾기