Android APN에 대한 권한이 없습니다.

ICS40 이전 버전에서는 프로그램에서 APN을 설정해야 하는 경우 AndroidManifest 파일에 이 권한을 선언하기만 하면 됩니다.40의 기계에서 운행하면 다음과 같은 이상이 발생한다: 자바.lang.SecurityException: No permission to write APN settings: Neither user * nor current process has android.permission.WRITE_APN_SETTINGS.
Google은 보안을 바탕으로 제3자 응용 프로그램이 APN에 대한 접근 권한을 차단했기 때문에 인터넷에서 프로그램을 시스템 app로 설정하면 된다고 주장하는 사람이 있다.adb push 명령을 통해 apk를/system/app/디렉터리에 두는 것은 확실히 가능하지만 대부분의 app는 제3자 응용 프로그램으로서 이러한 타당성은 크지 않다.따라서 시스템 서명을 이용하여 app에 APN 접근 권한을 부여합니다.
첫 번째 방법은 간단하지만 안드로이드 시스템 원본 환경에서 make로 컴파일해야 합니다.
    1.       AndroidManifest.xml  manifest     android:sharedUserId="android.uid.system"    。

    2.   Android.mk  ,  LOCAL_CERTIFICATE := platform   

    3.   mm     ,   apk            。

두 번째 방법은 좀 번거롭지만 가상 컴퓨터를 켜지 않고 원본 코드 환경에서make로 컴파일할 필요가 없다.
4
  • 동상,android:sharedUserId="android.uid.시스템'이라는 속성은.

  • 4
  • eclipse를 사용하여 apk 파일을 컴파일하지만 이 apk 파일은 사용할 수 없습니다

  • 4
  • 압축 소프트웨어로 apk 파일을 열고 META-INF 디렉터리에 있는 CERT.SF와 CERT.RSA 두 파일을 삭제한다

  • 4
  • 대상 시스템의platform 키를 사용하여 apk 파일에 다시 서명합니다.이 단계는 비교적 번거롭습니다. 우선 키 파일을 찾습니다. 제 안드로이드 원본 디렉터리에 있는 위치는 "build\target\product\security"이고, 아래platform입니다.Pk8과platform.x509.pem 파일 두 개.그리고 Android에서 제공하는 Signapk 도구로 서명합니다.signapk의 원본 코드는 "build\tools\signapk"에서java-jar signapk으로 사용됩니다.jar platform.x509.pem platform.pk8 *.apk ***_signed.apk는 해당 권한이 있는 APK를 받습니다

  • 도구 및 키 다운로드 주소:http://download.csdn.net/detail/bulkin/4329253
    이렇게 마지막에 얻은 apk는 첫 번째 방법과 같다.마지막으로 원리를 설명하자면 먼저android:sharedUserId="android를 넣습니다.uid.시스템Shared User id를 사용하면 동일한 User id를 가진 여러 APK를 같은 프로세스에서 실행하도록 구성할 수 있습니다.그럼 프로그램의 UID를 android로 맞추세요.uid.시스템, 즉 프로그램을 시스템 프로세스에서 실행하도록 해야 한다. 그러면 시스템 시간을 수정할 수 있는 권한이 있다.
    다만 UID를 추가하는 것이 부족합니다. 이때 APK를 설치하면 설치할 수 없습니다. 알림 서명이 일치하지 않습니다. 프로그램이 시스템 프로세스에서 실행하려면 목표 시스템의platform이 있어야 하기 때문입니다.키, 바로 위 두 번째 방법에서 언급한platform입니다.Pk8과platform.x509.pem 파일 두 개.이 두 키로 서명해야 apk가 시스템 프로세스에 들어갈 수 있습니다.첫 번째 방법에서 LOCALCERTIFICATE: =platform은 사실 이 두 키로 서명하는 것입니다.
    이것도 문제가 하나 있다. 바로 이렇게 생성된 프로그램은 원시적인 안드로이드 시스템이나 자신이 컴파일한 시스템에서만 사용할 수 있다. 왜냐하면 이런 시스템이platform을 얻을 수 있기 때문이다.Pk8과platform.x509.pem 파일 두 개.다른 회사에서 만든 안드로이드에 설치도 못하고Android의 원래 키에 서명해 보십시오. 프로그램은 시뮬레이터에서 OK를 실행하지만 G3에 직접 프롬프트를 설치합니다."Package...has no signatures that match those in shared user android.uid.시스템", 이것도 시스템의 안전을 보호한다.
    마지막으로 말하자면 이android:sharedUserId 속성은 apk를 시스템 프로세스에 넣을 수 있을 뿐만 아니라 여러 개의 APK를 한 프로세스에서 실행할 수 있도록 설정할 수 있다. 이렇게 하면 데이터를 공유할 수 있어 매우 유용할 것이다.ref:http://blog.csdn.net/bulkin/article/details/7601609

    좋은 웹페이지 즐겨찾기