Recursos no encontrados | ANT Renombrar paquete de aplicación

Después de muchas excavaciones, encontré la solución de cómo puedo cambiar el nombre de mi paquete de aplicaciones. Está funcionando muy bien.

Hay dos formas diferentes. El uno a través de los parámetros arg:

<!-- Replaces the target in tools\ant\build.xml -->
<target name="-package-resources" depends="-crunch">
            <!-- this exec replicates the output of the aapt task in build.xml
                 -package-resources with the addition of a rename-manifest-package option. -->
            <exec executable="${aapt}" failonerror="true">
                <arg value="package" />
                <arg value="-f" />
                <arg value="--auto-add-overlay" />
                <arg value="-M" />
                <arg path="${basedir}/AndroidManifest.xml" />
                <arg value="-S" />
                <arg path="${resource.absolute.dir}" />
                <arg value="-S" />
                <arg path="${basedir}/${android.library.reference.1}/${resource.dir}" />
                <arg value="-A" />
                <arg path="${asset.absolute.dir}" />
                <arg value="-I" />
                <arg path="${android.jar}" />
                <arg value="-F" />
                <arg path="${out.absolute.dir}/${resource.package.file.name}" />
                <arg value="--rename-manifest-package" />
                <arg value="${package.manifest.name}" />
            </exec>
</target>

o el directo (como lo hace el build.xml original):

<target name="-package-resources" depends="-crunch">
        <!-- only package resources if *not* a library project -->
        <do-only-if-not-library elseText="Library project: do not package resources..." >
            <aapt executable="${aapt}"
                    command="package"
                    versioncode="${package.manifest.version.code}"
                    versionname="${package.manifest.version.name}"
                    debug="${build.is.packaging.debug}"
                    manifest="${out.manifest.abs.file}"
                    assets="${asset.absolute.dir}"
                    androidjar="${project.target.android.jar}"
                    apkfolder="${out.absolute.dir}"
                    nocrunch="${build.packaging.nocrunch}"
                    resourcefilename="${resource.package.file.name}"
                    resourcefilter="${aapt.resource.filter}"
                    libraryResFolderPathRefid="project.library.res.folder.path"
                    libraryPackagesRefid="project.library.packages"
                    previousBuildType="${build.last.target}"
                    buildType="${build.target}"
                    ignoreAssets="${aapt.ignore.assets}"
                    manifestpackage="${package.manifest.name}">
                <res path="${out.res.absolute.dir}" />
                <res path="${resource.absolute.dir}" />
                <!-- <nocompress /> forces no compression on any files in assets or res/raw -->
                <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw -->
            </aapt>
        </do-only-if-not-library>
    </target>

El problema ahora es que una biblioteca que utilizo no puede encontrar sus recursos (es una librería y tuve que incluir los gráficos en mi aplicación). Así que los recursos están en mi aplicación.

Lo mismo sucede también si trato de cargar recursos específicos (dinámicamente) desde mi paquete. Usé ctx.getApplicationPackage () para obtener el nombre de paquete de paquetes. Mientras uso este método, no funcionó para la versión cuyo nombre se cambió, pero tan pronto como lo probé con el nombre del paquete de la aplicación principal, funciona.

Así que asumo que las referencias no se actualizan. Digamos que tengo la aplicación 1 con el paquete com.package.appfinal y la aplicación 2 con com.package.apptest. Los recursos aún se encuentran en com.package.appfinal.

Espero que alguien tenga una idea de cómo puedo extender el proceso de cambio de nombre para que los recursos también se actualicen. (o sus referencias)

Gracias por adelantado.

Saludos, - Mike

Respuestas a la pregunta(0)

Su respuesta a la pregunta