Yeah I see that the test apk has the permission, so it's very strange that accountManager.*addAccountExplicitly *would fail with* "*java.lang.SecurityException: caller uid 10056 lacks any of android.permission.AUTHENTICATE_ACCOUNTS", even with using getInstrumentation().getContext() (as opposed to getTargetContext()). I'm not sure at this point if this is a built tool issue or if it's a test framework issue, do you have any suggestions?
On Tuesday, January 6, 2015 12:42:15 PM UTC-5, Jerome Dochez wrote: > > building the attached test, I can see the permission is correctly added to > the resulting test apk. > > jedo-macbookpro2:androidManifestInTest.tst jedo$ > ~/oss/adt/sdk/build-tools/21.1.1/aapt l -a > ./build/outputs/apk/androidManifestInTest.tst-debug-androidTest-unaligned.apk > > AndroidManifest.xml > > resources.arsc > > classes.dex > > META-INF/MANIFEST.MF > > META-INF/CERT.SF > > META-INF/CERT.RSA > > > Resource table: > > Package Groups (1) > > Package Group 0 id=0x7f packageCount=1 name=com.android.tests.basic.test > > Package 0 id=0x7f name=com.android.tests.basic.test > > type 1 configCount=1 entryCount=1 > > spec resource 0x7f020000 > com.android.tests.basic.test:string/app_name: flags=0x00000000 > > config (default): > > resource 0x7f020000 com.android.tests.basic.test:string/app_name: > t=0x03 d=0x00000000 (s=0x0008 r=0x00) > > > Android manifest: > > N: android=http://schemas.android.com/apk/res/android > > E: manifest (line=2) > > A: package="com.android.tests.basic.test" (Raw: > "com.android.tests.basic.test") > > E: uses-sdk (line=5) > > A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10 > > A: android:targetSdkVersion(0x01010270)=(type 0x10)0x10 > > E: instrumentation (line=9) > > A: android:label(0x01010001)="Tests for com.android.tests.basic" > (Raw: "Tests for com.android.tests.basic") > > A: android:name(0x01010003)="android.test.InstrumentationTestRunner" > (Raw: "android.test.InstrumentationTestRunner") > > A: android:targetPackage(0x01010021)="com.android.tests.basic" (Raw: > "com.android.tests.basic") > > A: android:handleProfiling(0x01010022)=(type 0x12)0x0 > > A: android:functionalTest(0x01010023)=(type 0x12)0x0 > > E: meta-data (line=15) > > A: android:name(0x01010003)="listener" (Raw: "listener") > > A: > android:value(0x01010024)="android.support.test.internal.runner.listener.ManifestListener" > > (Raw: "android.support.test.internal.runner.listener.ManifestListener") > > E: uses-permission (line=20) > > A: > android:name(0x01010003)="android.permission.AUTHENTICATE_ACCOUNTS" (Raw: > "android.permission.AUTHENTICATE_ACCOUNTS") > > E: permission-group (line=22) > > A: android:label(0x01010001)=@0x7f020000 > > A: android:name(0x01010003)="foo.permission-group.COST_MONEY" (Raw: > "foo.permission-group.COST_MONEY") > > A: android:description(0x01010020)=@0x7f020000 > > E: permission (line=27) > > A: android:label(0x01010001)=@0x7f020000 > > A: android:name(0x01010003)="foo.permission.RECEIVED_SMS" (Raw: > "foo.permission.RECEIVED_SMS") > > A: > android:permissionGroup(0x0101000a)="foo.permission-group.COST_MONEY" (Raw: > "foo.permission-group.COST_MONEY") > > A: android:description(0x01010020)=@0x7f020000 > > E: application (line=33) > > A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff > > E: uses-library (line=34) > > A: android:name(0x01010003)="android.test.runner" (Raw: > "android.test.runner") > > On Tue Jan 06 2015 at 9:33:19 AM Jerome Dochez <je...@google.com > <javascript:>> wrote: > >> ok the first thing to do is to check the resulting test apk. >> >> can you do a aapt l -a <path_to_test_apk> and check if the permission is >> there or not. >> On Mon Jan 05 2015 at 7:32:17 PM Alex Humesky <ahum...@gmail.com >> <javascript:>> wrote: >> >>> Interestingly, the following also fails, where getTargetContext() is >>> changed to getContext(): >>> >>> Context testContext = getInstrumentation().*getContext*(); >>> PackageManager pm = testContext.getPackageManager(); >>> int r = pm.checkPermission( >>> Manifest.permission.AUTHENTICATE_ACCOUNTS, >>> testContext.getPackageName()); >>> assertEquals(PackageManager.PERMISSION_GRANTED, r); >>> >>> // Add a fake account >>> AccountManager accountManager = AccountManager.get(testContext); >>> Account account = new Account("te...@test.com <javascript:>", >>> "com.test"); >>> boolean addedAccount = accountManager.*addAccountExplicitly*(account, >>> "password", new Bundle()); >>> >>> What's weird is that the assert passes, yet addAccountExplicity still >>> fails with >>> >>> java.lang.SecurityException: caller uid 10056 lacks any of >>> android.permission.AUTHENTICATE_ACCOUNTS >>> >>> >>> On Monday, January 5, 2015 10:05:22 PM UTC-5, Alex Humesky wrote: >>>> >>>> Correct, when I run the test (either through Android Studio or >>>> connectedAndroidTest task), the app doesn't seem to have the permission, >>>> and so trying to use the account manager fails. I've attached a project >>>> based on the androidManifestInTest sample found at >>>> http://tools.android.com/tech-docs/new-build-system >>>> >>>> Thanks again! >>>> >>>> >>>> On Monday, January 5, 2015 2:29:24 PM UTC-5, Jerome Dochez wrote: >>>>> >>>>> yes it is supposed to work. can you describe what you observe not >>>>> working, the permission is not added to the test app ? >>>>> >>>>> On Mon Jan 05 2015 at 11:12:36 AM Alex Humesky <ahum...@gmail.com> >>>>> wrote: >>>>> >>>>>> Hello adt-dev, >>>>>> I'm trying to write an integration test for a user registration >>>>>> activity, and so as part of the test's set up, I want to create some >>>>>> test >>>>>> accounts on the emulator. To do this requires the permission >>>>>> android.permission.AUTHENTICATE_ACCOUNTS. >>>>>> >>>>>> According to the Android Gradle Plugin release notes for >>>>>> version 0.13.0, I should be able to supply a manifest for the test app >>>>>> at >>>>>> src/androidTest/AndroidManifest.xml, but adding the permission there >>>>>> doesn't seem to work. I know the file is being read since adding a >>>>>> syntax >>>>>> error causes the build to fail. >>>>>> >>>>>> I noticed that renaming src/androidTest to src/debug makes the test >>>>>> work if I launch the test from Android Studio, but then the tests don't >>>>>> get >>>>>> picked up with the connectedAndroidTest task. >>>>>> >>>>>> I'm using Android Studio version 1.0.2 and Android Gradle Plugin >>>>>> 1.0.0 and a regular project layout. >>>>>> >>>>>> Is merging uses-permission from androidTest/AndroidManifest.xml >>>>>> supposed to work? >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> ps seems to be the same problem as described here: >>>>>> http://stackoverflow.com/questions/26244998/androidmanifest-in- >>>>>> androidtest-directory-being-ignored >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "adt-dev" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to adt-dev+u...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "adt-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to adt-dev+u...@googlegroups.com <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.