问题
在framework/base/下添加代码,正常来说,直接添加文件夹和类文件就可以了,但是编译会报错,为什么呢?
因为在build/core/task/check_boot_jars/check_boot_jars.py 文件中的 CheckJar 方法,会去检测导入包名 是否合法。
def CheckJar(jar):
"""Check a jar file.
"""
# Get the list of files inside the jar file.
p = subprocess.Popen(args='jar tf %s' % jar,
stdout=subprocess.PIPE, shell=True)
stdout, _ = p.communicate()
if p.returncode != 0:
return False
items = stdout.split()
for f in items:
if f.endswith('.class'):
package_name = os.path.dirname(f)
package_name = package_name.replace('/', '.')
# Skip class without a package name
if package_name and not whitelist_re.match(package_name):
print >> sys.stderr, ('Error: %s: unknown package name of class file %s'
% (jar, f))
return False
return True
解决方案
通过同文件夹(build/core/task/check_boot_jars/)下的 package_whitelist.txt 文件 声明 包的合法性
如:添加 com.wudaokou..*