인앱 결제 예제에서 Android Studio에 보조 파일을 추가하는 방법


136

현재 Eclipse 앱을 Android Studio로 마이그레이션하고 있습니다. 이 앱은 인앱 결제를 사용하고있었습니다.

내 주요 문제는 프로젝트와 보조 파일을 컴파일하는 것입니다 (모두이 파일을 사용한다고 생각 합니다 )

이 오류 메시지가 나타납니다.

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist

따라서 일부 자습서를 따르면이 파일을 com.mypackage.billing에서 src / main / aidl로 이동합니다 ( 이 참조 참조 )

그러나 그렇게하면 곧이 메시지가 나타납니다.

Gradle : 작업 ': xxxxxxxxxxx : compileDebugAidl'에 대한 실행이 실패했습니다.

명령을 실행하지 못했습니다 : (...) C : \ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl : 45 IInAppBillingService 인터페이스는 com \ xxxxxxxx \ billing \ IInAppBillingService 파일에 선언되어야합니다. .aidl.

이 메시지는 위에 링크 된 Google 버그 페이지의 게시물과 모순됩니다.

이 보조 파일을 작동시키는 데 성공한 사람이 있습니까?

여기에 이미지 설명을 입력하십시오

정보를 제공하기 위해 내가 따라 간 일부 링크 :


질문은 ...이 보조 파일이되어서는 안 /src/main/aidl/com/android/vending/billing됩니까?
— Selvin

1
Gradle : 작업 ': MyProject : compileDebugAidl'에 대한 실행이 실패했습니다. > 명령 실행 실패 : 45 인터페이스 IInAppBillingService는 com \ android \ vending \ billing \ IInAppBillingService.aidl 파일에 선언되어야합니다.
— Waza_Be

1
Selvin과 내가 말하고있는 폴더에 여전히 넣지 않고 있다고 말하는 것이 있습니다 ...?
— Sam Dozor

방금 새 스크린 샷을 추가했는데, 내가 말한 폴더에 스크린 샷을 넣은 것
— 같습니다

selvin.pl/TrivialDriveProject.Gradle.zip (local.properties에서 SDK 디렉토리 변경) ... gradlew.bat assemble매력처럼 작동합니다 ... 폴더가 / src / main / aidl / com / android / vending / billing인지 확인하십시오 /src/main/aidl/com.android.vending.billing이 아닙니까? AS 0.2.1? 그래들 0.5+?
— Selvin

답변:


162

오류 메시지에서 알 수 있듯이 IInAppBillingService.aidl패키지 (com.android.vending.billing)에 의해 지시 된 올바른 디렉토리에 넣어야 합니다.

src/main/aidl/이미 있는 폴더 내에서 .aidl파일을에 넣으십시오 com/android/vending/billing/.


5
이 작업을 수행하면 다음과 같은 결과가 나타납니다. Gradle : error : 기호 클래스를 찾을 수 없습니다. IInAppBillingService
— Waza_Be

9
그래서 / src / main / aidl / com / android / vending / billing에 있습니까? gradle을 사용하여 빌드하고 있습니까? 그렇다면 Android Studio 오른쪽 상단의 작은 gradle 버튼을 눌러 gradle reload 구성을 갖거나 Android Studio를 닫거나 엽니 다.
— Sam Dozor

80
다시 한번 확인하기 위해. src / main / 아래에 디렉토리 보조 도구를 작성하십시오. 그런 다음 새 패키지 com.android.vending.billing을 추가하십시오. 그런 다음 보조 파일을 새 패키지에 복사하십시오. 참조 code.google.com/p/android/issues/detail?id=56755
— Kalel 웨이드에게

2
@ Kael Wade 이것은 나를위한 해결책 이었으므로 답으로 추가해야합니다.
— eski

3
당신이 주요 SRC를 /이없는 경우 AIDL 디렉토리 어디를 작성하고 build.gradle에서 지정 : 안드로이드 {sourceSets {주 {AIDL {srcDirs 'actual_path을 ..'
— aleb

221

꽤 많은 사람들을 돕는 것처럼 보였으므로 이것을 대답으로 추가하십시오.

  1. 'src / main /'아래에 'aidl'이라는 새 디렉토리를 작성하십시오 . ' src / main / aidl ' 과 같아야 합니다.
  2. 새 패키지 이름 ' com.android.vending.billing '을 ' src / main / aidl ' 디렉토리에 추가하십시오.
  3. SDK 위치를 찾아 "sdk \ extras \ google \ play_billing"으로 이동하십시오. SDK의 기본 위치는 "C : \ Program Files (x86) \ Android \ android-sdk"입니다. 사용자 지정 변경 한 경우 SDK 관리자를 통해 위치를 파악해야합니다.
  4. 'IInAppBillingService.aidl' 을 위에서 만든 패키지에 복사하십시오 . 결국 아래 이미지와 비슷하게 보입니다.

결과 스크린 샷

  1. 프로젝트를 다시 빌드 하면 좋을 것입니다.

참고 : 참조가 작동하지 않는 경우 필요한 가져 오기를 포함하십시오

import com.android.vending.billing.IInAppBillingService;

https://issuetracker.google.com/issues/36973270

주석에서 편집

이 작업을 수행 한 후에도 코드에서 IInAppBillingService에 대한 참조가 여전히 오류로 강조 표시되었지만 앱을 다시 빌드 한 후 클래스가 인식되었습니다.


1
분명히하기 위해 : 이것을 철저히 읽으십시오! 나는 다시 강조하지 않았다 : 그것은 좋은 추가이다 ... 새로운 'main / aidl'디렉토리에 com.android.vending.billing을 넣으십시오!
— Boy

5
이 작업을 수행 한 후에도 코드에서 IInAppBillingService에 대한 참조가 여전히 오류로 강조 표시되었지만 앱을 다시 빌드 한 후 클래스가 인식되었습니다.
— arlomedia

이것은 효과가 있었지만 모듈을 추가하기로 선택할 때 왜 이것이 자동적이지 않습니까?
— 안드로이드 개발자

프로젝트 재 작성 팁에 감사드립니다. 또한 폴더와 패키지는 플레이버에서 생성 될 수 있으며 메인에있을 필요는 없습니다. (예를 들어, 당신은 단지 당신의 응용 프로그램 중 하나 개 맛에 응용 프로그램을 청구 할 경우)
— 마이크 Fosker

4
내가 당신의 대답에 올 때 까지이 문제를 해결하기 위해 20 분을 보냈습니다. 그럼 난 "... 당신은 마지막이 대답 투표"나는 :) 어떤 사람들은 결코 배울 생각 오류를 얻기 위해 그것을 upvote에 노력
— beetree을

10

여기에 표시된 것과 같은 새 폴더를 만들 때까지 여기의 나머지 게시물이 작동하지 않았습니다 .

여기에 이미지 설명을 입력하십시오


9
  • 아래에 새로운 디렉토리를 생성 src/main이라는aidl
  • 디렉토리에 마우스 오른쪽 클릭 aidl, 선택new->add package
  • 패키지 이름을 입력하십시오 com.android.vending.billing

  • IInAppBillingService.aidl디렉토리에서 디렉토리 Android/Sdk/extras/google/play_billing로 복사App_name/app/src/main/aidl/com/android/vending/billing

  • 이제 InApp 청구 코딩으로 진행하고 InApp 관련 서비스를 정의하는 동안 오류가 발생합니다 can not resolve symbol IInAppBillingXXXXXX
  • 이제 Buildandroid studio 메뉴로 이동하여를 클릭하십시오 Rebuild Project. IInAppBillingService.java내부에 파일 이 생성 됩니다 App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing. 문제가 해결됩니다.

@MOHSENNAVABI 문제 없음 :-)
— Praveena

"IInAppBillingService.aidl"파일을 복사 한 후이 파일의 행을 변경해야합니까? "aidl.exe '가 0이 아닌 종료 값 1로 완료되었습니다." 이를 수행하기위한 특정 지침은 무엇입니까?
— Pablo Alfonso

7

이 코드를 build.gradle에 추가하십시오

android {
    sourceSets {
        main {
            aidl.srcDirs = ['src']
        }
    }
}

보조 클래스 재 구축 및 가져 오기


2

위의 답변은 파일 위치에 집중되어 있지만 이미 올바르게 설정되어있는 것 같습니다. Android Studio에서도 이와 동일한 문제가 발생했지만 나열된 답변 중 어느 것도 해결하지 못했으며 한 시간 동안 머리를 두 드렸습니다. 결국, 나는 명백한 수입이 없다는 것을 깨달았습니다.

 import com.android.vending.billing.IInAppBillingService;

추가하면이 오류 메시지가 해결되었습니다.

이 수입은 Google 결제 문서에 언급되지 않았거나 찾은 코드 예제에 포함되지 않았습니다. 숙련 된 Java 개발자에게는 분명 할 수 있지만 첫 프로젝트를 배우려는 초보자는 명시 적으로 지적해야 할 수도 있습니다.


1

우리는 추가해야합니다

  1. src / main / aidl / packagename 폴더를 생성하고이 아래에 aidl 파일을 배치하십시오.

  2. 보조 파일에서-패키지 이름을 언급하십시오. 패키지 패키지 이름

이제 프로젝트를 정리하고 프로젝트를 다시 빌드하십시오. app \ build \ generated \ source \ aidl \ debug \ packagename \ youraidl.java에서 생성 된 보조 도구에 해당하는 Java 파일을 사용할 수 있습니다.



0

모든 솔루션을 시도했지만 문제는 안드로이드 스튜디오가 AIDL 패키지가 포함 된 다른 빌드 유형의 모듈로 설정에 지정된 것과 다른 이유로 컴파일되었다는 것입니다. 디버그에서 릴리스 까지 다른 모듈은 AIDL pkg를 볼 수 없었습니다. 디버그에서 릴리스로 전환하고 다시 전환하면 내 문제가 해결되었습니다.


0

Android Studio를 다시 시작하면 나를 위해 일했습니다.

제게 시간이 걸렸다 Android Studio에서 코드를 삭제하여 파일을 만들 수 있었지만 그는 .aidl Jiji 대신 .java (예상대로)를 만들었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.