在 OnePlus5上的Android 9 上,当我尝试使用const path = require('path');
const HtmlWebPackPlugin = require("html-webpack-plugin");
module.exports = {
entry: {
background: "./src/background/QueryHandler.ts",
popup: "./src/popup/popup.html",
content: './src/content/Mapper.ts'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
mode: 'development',
module: {
rules: [
{
test: /\.(js|jsx)/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
}
}
},
{
test: /\.(ts|tsx)?$/,
exclude: /node_modules/,
use: {
loader: 'ts-loader',
options: {}
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader",
options: {
exportAsEs6Default: true
}
}
]
},
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(png|jpe?g|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[ext]',
}
},
],
}
]
}
};
库进行远程连接时,出现以下错误:
ion
我真的不明白哪里出了问题。
答案 0 :(得分:2)
尝试将此行添加到您的build.gradle:
android {
useLibrary 'org.apache.http.legacy' //(this worked for us when we had a similar issue with apache)
或者,在清单中尝试以下方法:
<uses-library android:name="org.apache.http.legacy" android:required="false" />
其原因是由于以下事实:从android 9起,该库已从bootclasspath中删除,并且默认情况下不适用于应用程序,因此必须添加该库。
请参阅:https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p
答案 1 :(得分:2)
我看到您在代码中使用的是Apache HTTP客户端。
由java.lang.ClassNotFoundException引起:未找到类 “ org.apache.http.RequestLine”
实际上,legacy mode for the use of this library不推荐从引导类路径中启用,since Android 9, Apache HTTP client library was completely removed也不推荐使用。
真正的解决方案是实现HttpUrlConnection类。 如果您使用的是ion library,则可以使用已经使用**HttpUrlConnection 类的两个更好的选项。**
滑行
从资源(/drawable
目录)中加载图像:
Glide.with(context).load(R.drawable.android).into(imageView);
从url加载图像:
Glide.with(context).load(<image Url>).into(imageView);
将此依赖项定义到您的build.gradle
文件中:
dependencies {
...
implementation 'com.github.bumptech.glide:glide:4.9.0'
...
}
毕加索:
从资源(/drawable
目录)中加载图像:
Picasso.get().load(R.drawable.android).into(imageView);
从url加载图像:
Picasso.get().load(<image Url>).into(imageView);
您需要在build.gradle
文件中定义此依赖项:
dependencies {
...
implementation 'com.squareup.picasso:picasso:2.71828
...
}
使用这两个选项,您将获得相同的结果:
答案 2 :(得分:0)
如您所见,例外是ClassNotFoundException
。当您要创建类的对象或访问不存在的类的字段时,会发生此异常。但是,等等,如果该类不存在,那么我的代码将无法编译。是的,您是正确的,因此该类存在,但是某些内容删除了该类。类似于Progaurd
。
因此,您必须添加一些progaurd规则来保留该类。将这些代码添加到您的proguard-rules.pro
文件中:
-dontwarn org.apache.commons.**
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
也不要使用maven存储库,而是下载jar文件并将其放入`/ app / libs'文件夹中,然后在build.gradle文件中写以下行。
compile files('libs/httpmime-4.3.5.jar')
compile files('libs/httpclient-4.3.5.jar')
compile files('libs/httpclient-cache-4.3.5.jar')
compile files('libs/httpcore-4.3.2.jar')