airsdk / Adobe-Runtime-Support

Report, track and discuss issues in Adobe AIR. Monitored by Adobe - and HARMAN - and maintained by the AIR community.
206 stars 11 forks source link

Build AAB with error. File ... uses reserved file or directory name 'res'. #3338

Open VitalyKrasulya opened 4 months ago

VitalyKrasulya commented 4 months ago

I have error, when build AAB. What went wrong: Execution failed for task ':app:packageReleaseBundle'. A failure occurred while executing com.android.build.gradle.internal.tasks.PackageBundleTask$BundleToolWorkAction File 'root/res/anim/abc_fade_in.xml' uses reserved file or directory name 'res'.

I use AIR_SDK_33.1.1.929. Java 18. Android SDK build-tools:32.0.0, platforms:32, sources:32. Also try AIR_SDK_51.0.1, but error occured again.

I have native extention (ANE). My file structure for build ane has two folders with resourses (exo-player-ui_2.9.6_res and res): │ extension.xml │ lib.swc │ platform.xml ├───android │ │ classes.jar │ │ exo-player-ui_2.9.6.jar │ │ exo-player_2.9.6.jar │ │ gson-2.8.6.jar │ │ guava-28.1-android.jar │ │ library.swf │ │ rxjava-2.2.0.jar │ │ │ ├───exo-player-ui_2.9.6_res


│ └───res


├───default


├───windows


platform.xml file is:

<platform xmlns="http://ns.adobe.com/air/extension/32.0">
    <packagedDependencies> 
        <packagedDependency>guava-28.1-android.jar</packagedDependency> 
        <packagedDependency>gson-2.8.6.jar</packagedDependency> 
        <packagedDependency>rxjava-2.2.0.jar</packagedDependency> 
        <packagedDependency>exo-player_2.9.6.jar</packagedDependency> 
        <packagedDependency>exo-player-ui_2.9.6.jar</packagedDependency> 
    </packagedDependencies> 

    <packagedResources> 
        <packagedResource> 
            <packageName>com.google.android.exoplayer2.ui</packageName> 
            <folderName>exo-player-ui_2.9.6_res</folderName> 
        </packagedResource>         
        <packagedResource> 
            <packageName>my.package</packageName> 
            <folderName>res</folderName> 
        </packagedResource> 
    </packagedResources>
</platform>

I bulded ANE in command line with 'adt'. adt -package -target ane my.ane extension.xml -swc lib.swc -platform Android-ARM -platformoptions platform.xml -C android . -platform Android-ARM64 -platformoptions platform.xml -C android . -platform Android-x86 -platformoptions platform.xml -C android . -platform Android-x64 -platformoptions platform.xml -C android . -platform Windows-x86 -C windows . -platform default -C default

After I try to buil AAB with included ANE throught command line. adt.bat -package -target aab -storetype pkcs12 -keystore cert.pfx -storepass **** file.aab manifest.xml file.swf -extdir .\..\lib\ -platformsdk e:\AndroidSDK\

extdir ...\lib\ - conatins my.ane file builded earlier

By the way, APK file went fine, when I build it with same way (of course with diffent command line) Also, I try other Java, other Android SDK versions, but nothing helped. Once thing, when build AAB is fine - it is remove section packagedResources in platform.xml for build ANE.

Thanks.

marchbold commented 4 months ago

Rename the res directory packaged in your extension, we normally use something like distriqt-extensionname-res.

VitalyKrasulya commented 4 months ago

@marchbold I just rename the res folder, the error keeps repeating. This project is quite old and before, about a year ago, everything was going fine with same SDK.

ajwfrost commented 4 months ago

So just to check:

That's a little odd but maybe AAB has some additional sensitivity about the resource folder naming...

My suggestion would be to build for an android-studio output, and then open the resulting folder with Android Studio, and then build a bundle and see what it says. It would also be interesting to see how the resulting folder structure ends up; I would have thought if you had changed <folderName>res</folderName> to use a different name, then it's the new name that should be used when generating the Android Studio project structure..

So:

adt.bat -package -target android-studio ASProject manifest.xml file.swf -extdir .\..\lib\ -platformsdk e:\AndroidSDK\ 

(you shouldn't need signature options, but it would mean you have to set up details in Android Studio should you use it for generating the release packages..)

Open the resulting ASProject folder in Android Studio and see what it says..