Changing application package name in custom Ant build step

前端 未结 2 1196
清歌不尽
清歌不尽 2020-12-01 08:55

I\'m trying to use a custom build to repackage my Android app. I want to create an internal beta version which I can install side-by-side with my production app.

Th

相关标签:
2条回答
  • 2020-12-01 09:01

    This is the way I do it (working)

     <target
            name="-package-resources"
            depends="-crunch" >
    
            <!-- only package resources if *not* a library project -->
    
            <echo message="Current Package name: ${app.custompackagename}" />
    
            <do-only-if-not-library elseText="Library project: do not package resources..." >
    
                <aapt
                    androidjar="${project.target.android.jar}"
                    apkfolder="${out.absolute.dir}"
                    assets="${asset.absolute.dir}"
                    buildType="${build.target}"
                    command="package"
                    debug="${build.is.packaging.debug}"
                    executable="${aapt}"
                    ignoreAssets="${aapt.ignore.assets}"
                    libraryPackagesRefid="project.library.packages"
                    libraryRFileRefid="project.library.bin.r.file.path"
                    libraryResFolderPathRefid="project.library.res.folder.path"
                    manifest="${out.manifest.abs.file}"
                    manifestpackage="${app.custompackagename}"
                    nocrunch="${build.packaging.nocrunch}"
                    previousBuildType="${build.last.target}"
                    resourcefilename="${resource.package.file.name}"
                    resourcefilter="${aapt.resource.filter}"
                    versioncode="${version.code}"
                    versionname="${version.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>
    

    The line manifestpackage="${app.custompackagename}" is the key.

    0 讨论(0)
  • 2020-12-01 09:24

    If you really want your changes to reflect in your AndroidManifest.xml, you could create a custom target that's something like this (I use a similar target to this myself):

    <target name="repackage">
        <!-- Replaces all of the references to the old package name in files in the "src" directory -->
        <replace dir="src" value="${new.package}" token="${old.package}" summary="true"/>
    
        <!-- renames the src folders -->
        <move toDir="${new.package.dir}">
            <fileset dir="${old.package.dir}"/>
        </move>
    
        <!-- replaces the package name in the manifest -->
        <replace file="AndroidManifest.xml" value="${new.package}" token="${old.package}" summary="true"/>
    </target>
    

    You could do an ant build that repackaged to a debug package, deployed, and then repackaged back to the production package (or vice versa).

    0 讨论(0)
提交回复
热议问题