인앱 결제 예제에서 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.