一位同事指出,其中${project_classpath}
包含 SDK 目录中的路径annotations.jar
。这让我写了这个脚本:
#!/bin/bash
#####
##### 获取运行此脚本的目录。
##### 我们将输出写入 ${client}/assets
#####
客户=${0%/*}
#####
##### 获取输入参数;计算输出
#####
输入=$1
输出=${client}/assets/${input##*/}
#####
##### 使用classpath参数查找最新的dx脚本:
#####
# 把 : 变成 \n
类路径=${2//:/\\n}
# 找到引用 annotations.jar 的行
注释=`echo -e $classpath | grep 注释`
# 去除文件名
路径=${注解%/*}
# 可能有多个副本。我们得到访问时间和路径。
# 我们输出 : 而不是 \n 因为 bash "Word Splitting" 很复杂。
jars=`find $path -name dx.jar -printf "%A@ %p:"`
直到 [ "$jars" ]
做
路径=${路径}/..
jars=`find $path -name dx.jar -printf "%A@ %p:"`
完毕
# 把 : 变成 \n
罐子=${罐子//:/\\n}
# 我们想要最后访问的 jar
排序=`echo -e "$jars" | 排序-nrk 1,2`
# 获取jar文件名
last_used=`echo -e "$sorted" | grep -om 1 "/.*$"`
# 去除文件名
last_path=${last_used%/*}
# 找到 dx 脚本
dx=`find $last_path -name dx`
直到 [ "$dx" ]
做
last_path=${last_path}/..
dx=`find $last_path -name dx`
完毕
#####
##### 添加classes.dex到输入jar
#####
$dx --dex --keep-classes --output $output $input
这是它的.launch
文件,项目名称和路径已编辑:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
<booleanAttribute key="org.eclipse.debug.core.ATTR_REFRESH_RECURSIVE" value="false"/>
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/MAIN_PROJECT_NAME/assets" type="2"/> </resources>}"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${project_loc}/../MAIN_PROJECT_DIRECTORY/secondary-dexxer"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="incremental,auto,"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="${project_loc}/bin/${resource_name}.jar ${project_classpath}"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
</launchConfiguration>
不完全是最佳的,而且绝对不是我可以添加到源代码树中的东西(我们有一些人出于某种原因使用 Windows),而是一个开始:尽管一些 bash“分词”问题很痛苦,但它们可能在学习曲线将涉及将其转变为 Java 中的“正确”Eclipse 插件。