Android Studio Gradle 을 사용 하여 동맹 다 중 채널 포장 실현

최신 프로젝트 에서 우 맹 백 스테이지 에서 서로 다른 채널 의 통 계 를 볼 것 을 요구 합 니 다.안 드 로 이 드 의 크 고 작은 응용 시장 은 수백 개 입 니 다.한 손 으로 포장 해 야 하 는 날 도 끝 낼 수 없습니다.다행히 큰 소 가 있어 서 많은 해결 방법 을 만 들 었 습 니 다.Gradle 에 대해 기록 과 공 유 를 하고 먼저 이론 지식 을 보 세 요.
1.패키지 서명 적용
포장 이 뭐 예요?
포장 은 서명 과 다른 표지 에 따라 설치 패 키 지 를 만 드 는 것 이다.
사인 이 뭐 예요?
1.android 응용 파일(apk)에 저 장 된 특별한 문자열
2.서로 다른 응용 개발 자 를 표시 하 는 데 사용:개발 자 A,개발 자 B
3.한 애플 리 케 이 션 개발 자가 개발 한 여러 애플 리 케 이 션 은 같은 서명 을 사용 합 니 다.
한 사람 이 글 을 쓰 는 것 과 같이 서명 은 작가 의 서명 에 해당 한다.
만약 두 응용 프로그램 이 모두 개발 자가 개발 한 것 이 라면 서명 은 같은 것 이다.
이 개발 자 는 개인 일 수도 있 고 회사,단체 일 수도 있 습 니 다.
왜 사인 을 해요?
원인 1:가장 간단 하고 직접적인 대답:시스템 이 요구 하 는 것.
Android 시스템 은 모든 Android 응용 프로그램 이 디지털 서명 을 거 쳐 야 시스템 에 설치 할 수 있 도록 요구 합 니 다.즉,하나의 Android 응용 프로그램 이 디지털 서명 을 거치 지 않 으 면 시스템 에 설치 할 수 없습니다!
원인 2:
프로그래머 가 개발 한 애플 리 케 이 션 패키지 이름 이 같 을 수 있 으 며,한 애플 리 케 이 션 이 다른 애플 리 케 이 션 을 덮어 쓸 수 있 습 니 다.
패키지 이름 개념 만 있다 면 B 앱 이 설 치 된 A 앱 패키지 이름과 같다 면 덮어 쓰기 가 가능 하 다.불합리 하 다
사실은 B 가 들 어 있 지 않 습 니 다.가방 이름 이 일치 하지만 서명 이 다 릅 니 다.덮어 쓰 지 않 습 니 다.
2.다 중 채널
1.다 중 채널 가방 은 무엇 입 니까?
채널 패 키 지 는 설치 패 키 지 에 채널 정 보 를 추가 하 는 것 이다.즉,channel 이다.서로 다른 채널 에 대응 해 야 한다.예 를 들 어 샤 오미 시장,360 시장,응용 보 시장 등 이다.
2.왜 다 중 채널 가방 을 제공 합 니까?
우 리 는 설치 가방 에 서로 다른 표 지 를 추가 하고 네트워크 를 요청 할 때 채널 정 보 를 휴대 하여 배경 에서 운영 통 계 를 편리 하 게 해 야 한다(이것 이 바로 채널 정 보 를 추가 하 는 용도 이다).
3.다 중 채널 포장 의 원 리 를 실현 한다.
일반적으로 이 채널 의 표 지 는 AndroidManifest.xml 의 Application 의 메타 데이터 에 놓 입 니 다.그리고 자바 에서 API 를 통 해 해당 하 는 데 이 터 를 얻 을 수 있 습 니 다.
4.어떻게 실현 합 니까?
현재 안 드 로 이 드 채널 은 다양 하 다.사실은 채널 은 응용 시장 에 만 국한 되 는 것 이 아니 라 홍보 방식 도 하나의 채널 로 볼 수 있다.예 를 들 어 사람 을 끌 어 당 기 는 방식 으로 홍보 하고 홈 페이지 에서 홍보 하 며 바 이 두 홍보 등 이다.그래서 채널 이 수천 만 에 달 합 니 다.홍 보 를 위해 가끔 은 한 번 에 수천 개의 설치 가방 을 만 들 기도 합 니 다.그러면 반나절 이나 하루 동안 아무것도 하지 마 세 요.그래서 몇 개의 대기업 의 효율 적 인 포장 방식 을 소개 하고 참고 하 세 요.
첫 번 째:우 맹 은 여러 채널 로 포장 하 는 방식 을 제공 하여 채널 통계 등에 사용 할 수 있다.
현재 Android 의 구축 도 구 는 gradle 로 바 뀌 었 습 니 다.gradle 을 통 해 간단하게 설정 하면 모든 채널 패 키 지 를 자동 으로 걸 수 있 습 니 다.
이론 지식 을 다 보고 나 면 어떻게 실현 되 는 지 에 달 려 있 지만,사실은 아주 간단 해서 몇 걸음 만 조작 하면 완성 할 수 있다.
1.AndroidManifest.xml 에 설정

<meta-data
    android:name="UMENG_APPKEY"
    android:value="xxxxxxxxxxxxxxxxxxx" /><!--   Appkey           -->
    <meta-data
      android:name="UMENG_CHANNEL"
      android:value="${UMENG_CHANNEL_VALUE}" /> <!--   ,           $-->
2.build.gradle(항목 루트 디 렉 터 리 가 아 닙 니 다.)
defaultConfig 노드 에 기본 경로 번 호 를 추가 합 니 다.

manifestPlaceholders = [UMENG_CHANNEL_VALUE: "default_channel"]//         
defaultConfig 와 같은 노드 에 produtFlavors 노드 를 추가 합 니 다.내용 은 다음 과 같 습 니 다.

 productFlavors {
    default_channel {}
    huawei {}
    oppo {}
    xiaomi {}
    yiyongbao {}
    vivo {}
    _360 {}
  }

  productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  }
어디 다 놓 을 지 모 르 면 완전 하 게 보 세 요.

apply plugin: 'com.android.application'

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.2"

  defaultConfig {
    applicationId "com.dc.xydemo"
    minSdkVersion 23
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "default_channel"]//         

  }
  productFlavors {
    default_channel {}
    huawei {}
    oppo {}
    xiaomi {}
    yiyongbao {}
    vivo {}
    _360 {}
  }

  productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
  compile 'com.umeng.analytics:analytics:latest.integration'
  testCompile 'junit:junit:4.12'
  compile 'com.squareup.okhttp3:okhttp:3.2.0'
  compile 'com.squareup.okio:okio:1.7.0'
  compile 'junit:junit:4.12'
  compile files('libs/fastjson-1.1.45.android.jar')
  compile 'com.squareup.picasso:picasso:2.5.2'
}
3.상기 설정 후 포장 명령 을 실행 하여 포장 할 수 있 습 니 다.
3-1

마지막 으로 gradlew assembleRelease 를 사용 하여 생산 가방 을 만 듭 니 다.gradlew assemble Debug 테스트 패키지


앉 아서 포장 이 완 료 될 때 까지 기 다 렸 다가 build-->outputs-->apk 아래 에서 포장 이 성 공 했 는 지 확인 할 수 있 습 니 다.

위의 그림 내용 이 나타 나 면 여러 경로 로 포장 하면 완성 되 는데,매우 간단 하지 않 습 니까?
문제 가 있 으 면 댓 글 을 남기 거나 메 일 을 보 내 주세요[email protected]
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기