Android は Gradle スクリプトを使用して、AndroidManifest.xml ファイル内の JAR パッケージ、リソース、構成を削除します

現在、チャネルには特別な要件があります。まず、親パッケージ SDK に接続します。親パッケージ SDK が調整されてログインした後、親パッケージのいくつかの jar パッケージ、アセットの下のリソースとファイル、および AndroidManifest.xml の設定すべてアクティビティ、サービス、メタデータなどが削除されます。

そこで、Gradle スクリプト コマンドを使用して、パッケージ化中に削除コマンドを実行しました。具体的なコードは次のとおりです。

次に、build.gradle の下部で削除タスクを実行するコマンドの記述を開始します。

1. まず毎日のテストを容易にするためにスイッチである変数を定義し、次にいくつかの削除コードを定義します。

//チャネルのリクエストに応じて、アセット ファイルの下にあるチャネルのリソース、冗長な jar パッケージ、および AndroidManifest のアプリケーション ノードにあるすべての設定ファイルを削除します project.afterEvaluate { //削除コマンドの実行に切り替えます def 
    isParentApk 
= 
    false 
    if (isParentApk) { 
        //assets/sdk フォルダーとサブファイルをトラバースして削除します
        deleteFile(project.file("src/main/assets/sdk")) 
        //以下のチャネルで削除する必要がある親パッケージ リソースを削除しますアセットフォルダー
        deleteExists(project.file("src/main/assets /poolsdk.xml")) 
        deleteExists(project.file("src/main/assets/sdk.zip")) 
        deleteExists(project.file("src/main") /assets/sdkconf.ini")) 
        //libs の下の削除 チャネルには親パッケージ リソースの削除が必要です
        deleteExists(project.file("libs/alipaySdk-20161222.jar")) 
        deleteExists(project.file("libs/ GDTActionSDK.min.1.3.0.jar"))
 
        deleteExists(project.file("libs/ applog-release.jar"))name() == '受信者' || 
        it.name() == 'uses-library') } 
            //削除するノードを選択
            (it.name() == 'メタデータ' || it.name() == 'アクティビティ' || it.name() == 'サービス' || it.name() == '受信者' | | it.name() == 'uses-library') 
        for (int i = 0; i < nodes.size(); i++) { 
            NodeparentNode = nodes[i] 
            manifest.children().each { 
                it.remove (parentNode) 
            } 
        } 
        defwriter = new PrintWriter(xmlFile, "UTF8") 
        writer.write('<?xml version="1.0"coding="UTF-8"?>\n') 
        new XmlNodePrinter(writer).print (マニフェスト) 
    } 
} 

def deleteExists(File file) { 
    if (file != null && file.存在する()) 
        file.delete() 
} 

def deleteFile(ファイル file) {
    if (file.isDirectory()) { 
        File[] files = file.listFiles()
            i++) { deleteFile(files[i])
        } 
        file.delete() 
    } else if (file.exists()) { 
        file.delete() 
    } 
}

上記のコードを実行すると、削除する必要があるリソースを削除できます。

おすすめ

転載: blog.csdn.net/zhao8856234/article/details/100083531#comments_28217232