gradle+셸 자동 시스템 서명 실현

머리말
때때로 우리 의 응용 은 일부 기능(예 를 들 어 침묵 설치)을 실현 하기 위해 시스템 급 권한 이 필요 합 니 다.이 럴 때 응용 프로그램 에 시스템 서명 을 해 야 합 니 다.일반적인 조작 패키지 apk,압축 풀기 apk,META-INF 에서 CERT.RSA 와
CERT.SF,그리고 압축 해서 시스템 서명 도구 로 서명 합 니 다.한 끼 작업 후 10 분 이 지 났 을 수도 있 습 니 다.너무 번 거 로 웠 습 니 다.그래서 우 리 는 간단 한 작업 을 했 습 니 다.gradle+shell 로 자동 화 를 실현 해 주 었 습 니 다.
준비 하 다.
1.android studio
2.시스템 서명 파일(signapk.jar,platform.x509.pem,platform.pk8)
3.mac 시스템 이 라면 libconscrypt 가 필요 합 니 다.openjdk_jni.dylib 이 파일
4.platform.x509.pem 과 platform.pk8 은 대응 하 는 시스템 의 서명 으로 공장 마다 다 를 수 있 습 니 다.
 서명 파일 입 니 다.저 는 구 글 원생 의 서명 파일 입 니 다.
5.바 이 두 네트워크 에 있 는 파일
링크:https://pan.baidu.com/s/1_wGxfZcpmfmvCGPLSU-XWw추출 코드:d46k
6.본 고 는 mac 시스템 을 예 로 들 면 윈도 우즈 가 이 사고방식 에 따라 차이 가 많 지 않다
시스템 서명 스 크 립 트 작성

#  
unzip -q app-release.apk -d ./release
#  cert
rm -f ./release/META-INF/CERT.RSA
rm -f ./release/META-INF/CERT.SF
#  
cd ./release
for file in $(ls)
do
zip -r -q app-release-tmp.apk -xi $file;
done
mv app-release-tmp.apk ../
cd ..
#    
java -jar signapk.jar platform.x509.pem platform.pk8 app-release-tmp.apk app-sign.apk
#      
rm -f app-release-tmp.apk
rm -rf ./release
sign.sh 로 저장 하고 signapk.jar,platform.x509.pem,platform.pk8,libconscryptopenjdk_jni.dylib 는 같은 디 렉 터 리 에 놓 여 있 습 니 다.저 는 프로젝트 에 놓 여 있 습 니 다.
app/release/sign/디 렉 터 리 아래
패키지 및 호출 시스템 서명 스 크 립 트 작성

#         
#home  shell      
#debugDir assembleDebug     
#releaseDir assembleRelease     
#signDir         
home=/Volumes/Samsung_T5/android/Demo/
debugDir=$home/app/build/outputs/apk/debug/
releaseDir=$home/app/build/outputs/apk/release/
signDir=$home/app/release/sign/
#      
cd $home
#          $home/out
if [ ! -d out ];then
    echo "create directory out..."
    mkdir out
    echo "create directory out success"
fi
# release 
echo "assembleRelease..."
./gradlew assembleRelease
echo "assembleRelease success"
# release          
mv -f $releaseDir/app-release.apk $signDir/app-release.apk
echo "system sign apk..."
#        ,      
cd $signDir
./sign.sh
#         $home/out ,       
cd $home
mv $quanyuyueSignDir/app-sign.apk ./out/app-sign-`date +%Y%m%d%H%M`.apk
echo "sign success"
위의 코드 를 package.sh 로 저장 하고 프로젝트 디 렉 터 리 에 놓 습 니 다.저 는$home 디 렉 터 리 에 있 습 니 다.
ps:release 패 키 지 를 만 들 려 면 app/build.gradle 을 설정 해 야 합 니 다.

android {
    ...
    //      
    signingConfigs {
      release {
        storeFile file("      ")
        storePassword "    "
        keyAlias "  keyAlias"
        keyPassword "  keyPassword"
      }
    }
    buildTypes {
      release {
        signingConfigs.release
        ...
      }
    }
task 호출 package.sh 스 크 립 트 작성
app/build.gradle 에 입력

task getPackage(type: Exec) {
    executable "sh"
    args "-c", "../packge.sh"
}
이렇게 하면 우 리 는 이 task 를 실행 하면 시스템 서명 의 apk 를 얻 을 수 있 습 니 다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 gradle+shell 이 자동 시스템 서명 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기