Android Gradle 다 중 채널 패키지 구현 방법

머리말
다 중 채널 포장 과 다 중 채널 포장 이 무엇 을 할 수 있 는 지 여 기 는 소개 하지 않 겠 습 니 다.이 글 을 본 당신 은 이미 알 고 있 을 것 이 라 고 믿 습 니 다.다 중 채널 포장 방식 이 비교적 많 습 니 다.여 기 는 Gradle 다 중 채널 포장 방식 을 사용 합 니 다.
다른 문장 과 무엇이 다 릅 니까?
인터넷 에서 본 대다수의 문장 은 모두 해설 만 했다
1.가방 이름 변경 방법
2.변수의 값 을 어떻게 수정 합 니까?
3.string 의 자원 을 어떻게 바 꿉 니까?
4.AndroidManifest 의 자원 을 어떻게 교체 합 니까?
이 글 은 상술 한 지식 점 에서 증가 할 것 이다.
5.서로 다른 채널 에서 자바 파일 을 어떻게 사용 하 는 지
6.Base 모듈 화 에서 다 중 채널 을 어떻게 사용 합 니까?
새 항목 은 app 에서 build.gradle 에서 android 에 다음 코드 를 추가 합 니 다.

productFlavors{
 baidu{
  applicationId "com.baidu"
  buildConfigField "String","BaseApi",'"http://baidu.com"'
  resValue "string","tip",'"hello this is form baidu"'
  manifestPlaceholders = [
    app_name:"  APP"
  ]
 }
 sougou{
  applicationId "com.sougou"
  buildConfigField "String","BaseApi",'"http://sougou.com"'
  resValue "string","tip",'"hello this is form sugou"'
  manifestPlaceholders = [
    app_name: "  APP"

  ]

 }
}
여기 서 우 리 는 두 개의 채널 을 정의 합 니 다.한 채널 의 이름 은 baidu 이 고 한 채널 의 이름 은 sougou 입 니 다.applicationId 를 통 해 응용 패키지 이름 을 직접 지정 합 니 다.
채널 마다 요청 주소 가 다 릅 니 다.필드 는 BaseApi 입 니 다.buildConfigField 를 통 해 BaseApi 의 값 을 지정 할 수 있 습 니 다.buildConfigField 를 통 해
지정 한 값 은 시스템 에서 생 성 된 BuildConfig 에서 가 져 올 수 있 습 니 다.예 를 들 어 여러 채널 에서 정 의 된 BaseApi 를 가 져 올 수 있 습 니 다.

String baseApi = BuildConfig.BaseApi;
BuildConfig 의 내용 을 살 펴 보 겠 습 니 다.

BaseApi 는 우리 가 정의 한 것 이 고 다른 것 은 모두 기본 으로 생 성 된 것 입 니 다.여기 서 볼 수 있 습 니 다.패키지 이름 도 우리 가 지정 한 것 입 니 다.
resValue 우 리 는 변수의 값 을 수정 할 수 있 습 니 다.이 값 은 string.xml 에서 생 성 됩 니 다.예 를 들 어 위 에서 tip 변 수 를 정 의 했 습 니 다.주의해 야 할 것 은 이 변 수 는 string.xml 에 나타 나 면 안 됩 니 다.그렇지 않 으 면 자원 이 중복 되 는 것 을 알려 줍 니 다.
설정 파일 에 사용 할 값 을 정의 하려 면 사용 해 야 합 니 다.

manifestPlaceholders
우 리 는 각각 app 를 수정 합 니 다.name 의 값 은 설정 파일 에 자리 표시 자${}을 사용 합 니 다.다음 과 같 습 니 다.

android:label="${app_name}"
다음은 tip 의 값 과 BaseApi 를 TextView 에 표시 하고 각각 app 의 baidu 채널 버 전과 sougou 채널 버 전 을 실행 합 니 다.

baidu 채널 운행 은 다음 과 같 습 니 다.

sougou 채널 운행 은 다음 과 같 습 니 다.

운행 결과 에서 우 리 는 이미 우리 가 원 하 는 결과 에 이 르 렀 음 을 알 수 있다.
다른 app 아이콘 을 사용 하 는 방법
그러면 서로 다른 채널 의 app 아이콘 을 어떻게 수정 합 니까?물론 우 리 는 manifestPlaceholders 에 아이콘 자원 의 대체 자 를 추가 할 수 있 습 니 다.그러나 우 리 는 다른 방법 을 사용 합 니 다.
때때로 우 리 는 아이콘 을 교체 해 야 할 뿐만 아니 라 raw 의 자원 이나 assets 의 자원 을 교체 해 야 할 수도 있 습 니 다.이런 상황 에서 우 리 는 필요 합 니 다.
다음 방법 사용 하기:
src 디 렉 터 리 에 main 과 같은 등급 이 고 채널 이름과 같은 파일 패키지 이름 을 새로 만 들 고 res 자원 디 렉 터 리 를 새로 만 들 고 아이콘 에 사용 할 그림 자원 을 넣 으 려 면 main 의 이름과 같 아야 덮어 쓸 수 있 습 니 다.그림 참조:

그리고 gradle 에 sourceSet 을 설정 합 니 다.

sourceSets{
 baidu{
  res.srcDirs = ['src/baidu/res','src/baidu/res']

 }
 sougou{
  res.srcDirs = ['src/sougou/res','src/sougou/res']

 }

}
저 희 는 res.srcDirs 를 통 해 서로 다른 채널 에서 사용 하 는 자원 파일 을 지 정 했 습 니 다.여 기 는 인터넷 에서 두 장의 캡 처 를 아이콘 으로 찾 았 습 니 다(권리 침해 가 있 으 면 삭제 연락)


두 개의 app 을 실행 한 결 과 는 다음 과 같 습 니 다.

moudle 에서 다 중 채널 을 어떻게 설정 합 니까?
실제 개발 에서 우 리 는 base 모듈 이 있 을 수 있 습 니 다.서로 다른 채널 base 모듈 에서 인용 한 자원 도 다 릅 니 다.우 리 는 어떻게 설정 해 야 합 니까?
우 리 는 basemoudle 모듈 을 새로 만 들 었 습 니 다.app 은 basemodule 모듈 에 의존 합 니 다.
마찬가지 로 우 리 는 모듈 의 gradl 에서 다음 과 같이 설정 합 니 다.

productFlavors {
 baidu {

  buildConfigField "String", "BaseMoudeDesc", '"  base       "'
  resValue "string", "basetip", '"i come form base_baidu"'

 }
 sougou {
  buildConfigField "String", "BaseMoudeDesc", '"  base       "'
  resValue "string", "basetip", '"i come form base_baidu"'

 }
}
우리 의 base 모듈 에 도 두 개의 채널 이 있 기 때문에 app 이 의존 할 때 반드시 채널 을 나 누 어 의존 해 야 합 니 다.

baiduCompile project(path:':basemodule',configuration:'baiduRelease')
sougouCompile project(path: ':basemodule',configuration:'sougouRelease')
우리 가 직접 컴 파일 하면 위의 문제 가 발생 할 수 있 습 니 다.module 모듈 은 해당 하 는 컴 파일 자원 을 생 성하 지 않 았 을 수 있 습 니 다.안 드 로 이 드 의 기본 컴 파일 은 debug 형식 이기 때문에 app 메 인 모듈 과 동기 화하 기 위해 서 는 기본 게시 형식 을 제거 하고 module 의 gradle 에 추가 해 야 합 니 다.

publishNonDefault true
변수의 사용 은 위의 app 의 사용 방식 과 마찬가지 로 여기 서 보 여주 지 않 습 니 다.
서로 다른 채널 에서 서로 다른 자바 파일 을 어떻게 사용 합 니까?
서로 다른 채널 에서 자원 파일 을 사용 하 는 것 과 마찬가지 로 주의해 야 할 것 은 main 파일 에 교체 할 자바 파일 을 저장 할 수 없습니다.그렇지 않 으 면 자원 이 중복 되 는 오 류 를 보고 할 수 있 습 니 다.마찬가지 로 저 희 는 base 모듈 에 각각 baidu 와 sougou 채널 패 키 지 를 새로 만 들 고 각각 MainActivity 를 새로 만 듭 니 다.그림 과 같 습 니 다.

자바 자원 디 렉 터 리 설정

sourceSets {
  baidu {
    res.srcDirs = ['src/baidu/res', 'src/baidu/res']
    java.srcDirs = ['src/baidu/java','src/baidu/java']

  }
  sougou {
    res.srcDirs = ['src/sougou/res', 'src/sougou/res']
    java.srcDirs = ['src/sougou/java','src/sougou/java']

  }

}
두 페이지 의 차 이 를 보 여주 기 위해 저 희 는 바 이 두 채널 의 페이지 배경 을 분홍색 으로 설정 하고 검색 채널 의 페이지 배경 은 파란색 으로 설정 하 며 app 에 단 추 를 추가 하고 감청 이 벤트 를 추가 하여 module 의 홈 페이지 를 엽 니 다.
실행 효 과 는 다음 과 같 습 니 다.


여기까지 자주 사용 하 는 다 중 채널 포장 에 필요 한 설정 이 끝 났 습 니 다.오류 가 있 으 면 지적 해 주 십시오.
총결산
안 드 로 이 드 Gradle 멀 티 채널 패키지 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.안 드 로 이 드 Gradle 멀 티 채널 패키지 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!

좋은 웹페이지 즐겨찾기