Azure DevOps (이전 VSTS)의 Android Signing에서 Zipalign을 켜십시오.
【문제】 Azure DevOps로 빌드 한 .apk가 작동하지 않습니다?
Xamarin 프로젝트의 빌드를 Azure DevOps (당시 VSTS)에 올리고 싶었지만 생성 된 .apk가 작동하지 않아 고민했습니다..
상당히 오랫동안 네그 있었습니다만, 겨우 해결했으므로 보고합니다.
【해결】 원인은 zipalign
Android Device Monitor에서 앱이 실행될 때의 모습을 관찰했는데 다음과 같은 오류 메시지가 나타났습니다. 태그는
monodroid-assembly
입니다.Assembly 'assemblies/hoge.dll' is located at a bad address 0x9e3eb44e
You MUST run 'zipalign' on base.apk
과연, 왜 더 빨리 Android Device Monitor를 보지 않았다. Android Signing/Zipalign Options/Zipalign을 ON으로 변경하면 해결되었습니다
어리석은
태스크 Android Signing의 초기 상태에서 Zipalign은 OFF로 되어 있고(Sign the APK도 OFF입니다만), 설명도 다음과 같은 느낌으로,
Select if you want to zipalign your package. This reduces the amount of RAM consumed by an app.
따로 OFF 그대로도 좋을 것 같지 않습니까
【하즐레】 서명을 의심
처음에는 서명을 의심했습니다. Android Signing/Signing Options/Jarsigner arguments 는 정말로 초기치
-verbose -sigalg MD5withRSA -digestalg SHA1
그대로 있을 수 있을까 하는 의심입니다.서명에 이상이 없는지 확인합니다.
jarsigner -verify -verbose -certs hoge.apk
실제 기기에 설치하여 동작을 확인합니다.
adb install hoge.apk
비교를 위해 로컬 PC에서도 Azure DevOps와 동일한 명령으로 서명해 보겠습니다.
jarsigner -keystore Hoge.keystore -storepass xxx -keypass xxx -verbose -sigalg MD5withRSA -digestalg SHA1 -signedjar hoge.apk hoge-unsigned.apk Hoge
다음과 같은 상황이었습니다.
.apk
서명 verify
앱 동작
Azure DevOps로 서명한 .apk
OK
시작 직후 종료됩니다.
로컬에서 jarsigner로 서명한 .apk
OK
시작 직후 종료됩니다.
로컬에서 Visual Studio GUI로 서명한 .apk
OK
정상적으로 작동
Visual Studio에서 실행중인 명령을 살펴보십시오. 과
-digestalg SHA1
와 -sigalg md5withRSA
를 디폴트로 지정하고 있는 것 같습니다.결국, 서명의 부분은 신용해 좋을 것 같다, 라고 하게 되었습니다. 라고 할까, 도중에 깨달았습니다만, 만약 서명에 문제가 있으면, 기동전에 인스톨의 시점에서 실패할 것입니다. .keystore 파일을 여러 번 다시 업로드했지만
참조
Android signing build and release task - Azure DevOps & TFS | Microsoft Docs
Android 애플리케이션 패키지에 서명 - Xamarin | Microsoft Docs
Reference
이 문제에 관하여(Azure DevOps (이전 VSTS)의 Android Signing에서 Zipalign을 켜십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NakamuraYoichi/items/3a7c8cd343ce12f39a95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)